···11+CREATE TABLE migrations (
22+ id INTEGER PRIMARY KEY,
33+ name TEXT NOT NULL,
44+ applied_at DATE
55+);
66+77+CREATE TABLE album (
88+ id TEXT PRIMARY KEY,
99+ title TEXT NOT NULL,
1010+ mb_id TEXT,
1111+ mb_rg_id TEXT
1212+);
1313+1414+CREATE TABLE artist (
1515+ id TEXT PRIMARY KEY,
1616+ name TEXT NOT NULL UNIQUE
1717+);
1818+1919+CREATE TABLE track (
2020+ id TEXT PRIMARY KEY,
2121+ title TEXT NOT NULL,
2222+ track_number INTEGER NOT NULL DEFAULT 0,
2323+ mb_id TEXT,
2424+ album_id TEXT NOT NULL,
2525+2626+ FOREIGN KEY(album_id) REFERENCES album(id) ON DELETE CASCADE
2727+);
2828+2929+CREATE INDEX track_album_idx ON track(album_id);
3030+3131+CREATE TABLE artist_track (
3232+ artist_id TEXT NOT NULL,
3333+ track_id TEXT NOT NULL,
3434+3535+ PRIMARY KEY(artist_id, track_id),
3636+ FOREIGN KEY(artist_id) REFERENCES artist(id),
3737+ FOREIGN KEY(track_id) REFERENCES track(id)
3838+);
3939+4040+CREATE TABLE artist_album (
4141+ artist_id TEXT NOT NULL,
4242+ album_id TEXT NOT NULL,
4343+4444+ PRIMARY KEY(artist_id, album_id),
4545+ FOREIGN KEY(artist_id) REFERENCES artist(id),
4646+ FOREIGN KEY(album_id) REFERENCES album(id)
4747+);
4848+4949+INSERT INTO migrations (name, applied_at) VALUES ("01-init", CURRENT_TIMESTAMP);