-- Schema for KeySelector and AcousticBrainz data CREATE TABLE IF NOT EXISTS tracks ( id SERIAL PRIMARY KEY, mbid VARCHAR(36) UNIQUE NOT NULL, -- MusicBrainz ID title VARCHAR(255), artist VARCHAR(255), camelot_key VARCHAR(3), bpm INTEGER, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS track_tags ( track_id INTEGER REFERENCES tracks(id), tag VARCHAR(100), PRIMARY KEY (track_id, tag) ); CREATE INDEX IF NOT EXISTS idx_camelot_key ON tracks(camelot_key); CREATE INDEX IF NOT EXISTS idx_bpm ON tracks(bpm);