mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-21 16:11:56 +00:00
72 lines
1.8 KiB
SQL
72 lines
1.8 KiB
SQL
START TRANSACTION;
|
|
|
|
CREATE TABLE IF NOT EXISTS links (
|
|
scrobble uuid NOT NULL,
|
|
track uuid NOT NULL,
|
|
PRIMARY KEY (scrobble, track)
|
|
);
|
|
|
|
CREATE INDEX trackLookup ON links (track);
|
|
|
|
CREATE TABLE IF NOT EXISTS artists (
|
|
uuid uuid PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
"desc" TEXT,
|
|
img VARCHAR(255)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS albums (
|
|
uuid uuid PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
"desc" TEXT,
|
|
img VARCHAR(255)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tracks (
|
|
uuid uuid PRIMARY KEY,
|
|
name VARCHAR(255) NOT NULL,
|
|
"desc" TEXT,
|
|
img VARCHAR(255)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS scrobbles (
|
|
uuid uuid PRIMARY KEY,
|
|
created_at timestamptz NOT NULL,
|
|
created_ip INET NULL,
|
|
"user" uuid NOT NULL,
|
|
track uuid NOT NULL,
|
|
source VARCHAR(100) NOT NULL DEFAULT '',
|
|
FOREIGN KEY (track) REFERENCES tracks(uuid),
|
|
FOREIGN KEY ("user") REFERENCES users(uuid)
|
|
);
|
|
|
|
CREATE INDEX scrobblesUserLookup ON scrobbles ("user");
|
|
CREATE INDEX scrobblesDateLookup ON scrobbles (created_at);
|
|
CREATE INDEX scrobblesSourceLookup ON scrobbles (source);
|
|
|
|
CREATE TABLE IF NOT EXISTS album_artist (
|
|
album uuid NOT NULL,
|
|
artist uuid NOT NULL,
|
|
PRIMARY KEY (album, artist),
|
|
FOREIGN KEY (album) REFERENCES albums(uuid),
|
|
FOREIGN KEY (artist) REFERENCES artists(uuid)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS track_album (
|
|
track uuid NOT NULL,
|
|
album uuid NOT NULL,
|
|
PRIMARY KEY (track, album),
|
|
FOREIGN KEY (track) REFERENCES tracks(uuid),
|
|
FOREIGN KEY (album) REFERENCES albums(uuid)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS track_artist (
|
|
track uuid NOT NULL,
|
|
artist uuid NOT NULL,
|
|
PRIMARY KEY (track, artist),
|
|
FOREIGN KEY (track) REFERENCES tracks(uuid),
|
|
FOREIGN KEY (artist) REFERENCES artists(uuid)
|
|
);
|
|
|
|
COMMIT;
|