feat: Database migration system #22

Merged
ti-paul merged 1 commit from feature/9-db-migrations into main 2026-05-15 01:05:38 +00:00
Member

Closes #9

Summary

Added a versioned database migration system. Schema changes are now tracked and applied incrementally via numbered SQL files.

Changes

  • server/migrate.js -- Migration runner:
    • runMigrations(db, saveFn) -- applies all pending migrations in order
    • Transactional: each migration runs in a transaction, rolls back on failure
    • getCurrentVersion(db) / getMigrationHistory(db) -- introspection helpers
    • Graceful handling when schema_version table doesn't exist yet
  • server/migrations/001-initial-schema.sql -- Baseline migration capturing existing schema
  • server/db.js -- Replaced inline CREATE TABLE with runMigrations() call
  • server/migrate.test.js -- 11 unit tests:
    • schema_version table creation
    • Migration application and idempotency
    • Version tracking
    • Migration history retrieval
    • Rollback on SQL failure

Migration file format

server/migrations/NNN-description.sql where NNN is a zero-padded version number.
Files are sorted and applied in order. Only new versions are applied on startup.

Testing

29 tests pass (18 board + 11 migration), 0 failures.

Closes #9 ## Summary Added a versioned database migration system. Schema changes are now tracked and applied incrementally via numbered SQL files. ## Changes - **server/migrate.js** -- Migration runner: - `runMigrations(db, saveFn)` -- applies all pending migrations in order - Transactional: each migration runs in a transaction, rolls back on failure - `getCurrentVersion(db)` / `getMigrationHistory(db)` -- introspection helpers - Graceful handling when schema_version table doesn't exist yet - **server/migrations/001-initial-schema.sql** -- Baseline migration capturing existing schema - **server/db.js** -- Replaced inline CREATE TABLE with `runMigrations()` call - **server/migrate.test.js** -- 11 unit tests: - schema_version table creation - Migration application and idempotency - Version tracking - Migration history retrieval - Rollback on SQL failure ## Migration file format `server/migrations/NNN-description.sql` where NNN is a zero-padded version number. Files are sorted and applied in order. Only new versions are applied on startup. ## Testing 29 tests pass (18 board + 11 migration), 0 failures.
feat: database migration system with versioned SQL scripts
Some checks failed
CI / test (pull_request) Failing after 3h4m2s
3738ae4733
- Migration runner with transactional apply and rollback on failure
- schema_version table tracks applied migrations
- SQL migration files in server/migrations/ (NNN-name.sql pattern)
- Initial migration captures existing schema as baseline
- Graceful handling of missing schema_version table
- 11 unit tests covering apply, idempotency, version tracking, rollback

Closes #9
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
les_clankeurs/pixel-clash!22
No description provided.