17a3e7dd4f
Mirrors flutter_client/lib/cache/db.dart's CachedArtists / CachedAlbums / CachedTracks Drift tables. Library cache foundation — LibraryRepository (Phase 5.2) reads cache-first through these DAOs and refreshes from server via the sync controller (Phase 12.4). Column names follow Kotlin idiom (camelCase) instead of Drift's snake_case; the schema is internal to the native client and the wire JSON conversion happens in feature-level mappers. Each DAO carries: - observe* (Flow) for cache-first reads in ViewModels - getById/getByIds (suspend) for one-shot lookups - upsertAll (suspend, REPLACE) for sync writes - deleteByIds (suspend) for sync-driven deletes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>