Context
Persist sessions and song metadata (no audio bytes).
Acceptance Criteria
- Tables:
Songs(hash PK, title, artist, durationMs, bpm), Sessions(code PK, createdAt), SessionSongs(session, index, hash), Answers(session, audienceId, songIndex, choiceId, correct).
- Migrations applied automatically on startup.
- Indexes on
Answers(session,songIndex).
Tests
- Migration test on empty/new DB; CRUD smoke with in-memory SQLite.
Context
Persist sessions and song metadata (no audio bytes).
Acceptance Criteria
Songs(hash PK, title, artist, durationMs, bpm),Sessions(code PK, createdAt),SessionSongs(session, index, hash),Answers(session, audienceId, songIndex, choiceId, correct).Answers(session,songIndex).Tests