7f5c2824

Author: Michael Lynch <git@mtlynch.io>

Committer: Michael Lynch <mtlynch@noreply.codeberg.org>

Replace memory store with SQLite, write imports directly to DB (#70)

- New SQLite schema (users, entries, comments, reactions tables)
  replacing the dummy visits table; rename date column to entry_date
  to avoid the reserved keyword
- sqlite.Store now implements handlers.Store via new read methods
  (ReadMediaEntries, ReadComments, ReadReactions)
- New write methods: InsertUser, InsertEntry, InsertComment, InsertReaction
- tinybeans.Convert now writes directly to SQLite, resolving the user ID
  mapping TODOs by inserting followers and using returned row IDs
- Import command writes metadata.db instead of metadata.json
- App server reads from SQLite directly, removing the JSON intermediary
  and the in-memory store; --metadata flag replaced with --db
- Deleted store/memory, tinybeans/jsonfile, and store/sqlite/visits.go

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Reviewed-on: https://codeberg.org/mtlynch/little-moments/pulls/70
Co-authored-by: Michael Lynch <git@mtlynch.io>
Co-committed-by: Michael Lynch <git@mtlynch.io>

Suite timing

Time to Start Worker time Duration Time to finish
Config 3s 1s 1s 4s
Eval 4s 35s 35s 39s
Build 6s 1m08s 30s 36s
Test - - - -
Deploy - - - -
Suite 3s 1m45s 36s 39s

Timeline

0s10s20s30s