GoScrobble/migrations/3_tracks.up.sql
2021-03-28 21:52:34 +13:00

68 lines
2.3 KiB
SQL

START TRANSACTION;
CREATE TABLE IF NOT EXISTS `links` (
`scrobble` BINARY(16) NOT NULL,
`track` BINARY(16) NOT NULL,
PRIMARY KEY (`scrobble`, `track`),
KEY `trackLookup` (`track`)
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `artists` (
`uuid` BINARY(16) PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`desc` TEXT,
`img` VARCHAR(255) DEFAULT NULL
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `albums` (
`uuid` BINARY(16) PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`desc` TEXT,
`img` VARCHAR(255) DEFAULT NULL
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `tracks` (
`uuid` BINARY(16) PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`desc` TEXT,
`img` VARCHAR(255) DEFAULT NULL
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `scrobbles` (
`uuid` BINARY(16) PRIMARY KEY,
`created_at` DATETIME NOT NULL,
`created_ip` VARBINARY(16) NULL DEFAULT NULL,
`user` BINARY(16) NOT NULL,
`track` BINARY(16) NOT NULL,
KEY `userLookup` (`user`),
KEY `dateLookup` (`created_at`),
FOREIGN KEY (track) REFERENCES tracks(uuid),
FOREIGN KEY (user) REFERENCES users(uuid)
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `album_artist` (
`album` BINARY(16) NOT NULL,
`artist` BINARY(16) NOT NULL,
PRIMARY KEY (`album`, `artist`),
FOREIGN KEY (album) REFERENCES albums(uuid),
FOREIGN KEY (artist) REFERENCES artists(uuid)
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `track_album` (
`track` BINARY(16) NOT NULL,
`album` BINARY(16) NOT NULL,
PRIMARY KEY (`track`, `album`),
FOREIGN KEY (track) REFERENCES tracks(uuid),
FOREIGN KEY (album) REFERENCES albums(uuid)
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
CREATE TABLE IF NOT EXISTS `track_artist` (
`track` BINARY(16) NOT NULL,
`artist` BINARY(16) NOT NULL,
PRIMARY KEY (`track`, `artist`),
FOREIGN KEY (track) REFERENCES tracks(uuid),
FOREIGN KEY (artist) REFERENCES artists(uuid)
) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
COMMIT;