The runner skips versions already recorded by filename, so replacing the
contents of the applied 0001_init.sql placeholder with the real schema
would leave upgraded databases without the new tables. Rename it to
0000_bootstrap.sql, document it as a permanent no-op, and leave
0001_init.sql free for the v1 schema as a brand-new version.
Add a test that migrates with the embedded set, then adds a fixture
0001_init.sql and proves it applies on the existing database.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
internal/store opens $MEALQUEST_DATA_DIR/mealquest.db with modernc.org/sqlite
(CGO-free) as one writer connection and a read-only pool of four, with
busy_timeout=5000, journal_mode=WAL and foreign_keys=ON on every connection.
migrations/*.sql are embedded and applied at boot in filename order, each
in its own transaction together with its schema_migrations row, so a failing
migration rolls back and fails boot. A database holding a version this build
does not know is refused. 0001_init.sql is a placeholder until the v1 schema
lands.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>