diff --git a/migrations/3_tracks.down.sql b/migrations/3_tracks.down.sql new file mode 100644 index 00000000..43e9c76b --- /dev/null +++ b/migrations/3_tracks.down.sql @@ -0,0 +1,8 @@ +START TRANSACTION; +DROP TABLE IF EXISTS `artists`; +DROP TABLE IF EXISTS `albums`; +DROP TABLE IF EXISTS `tracks`; +DROP TABLE IF EXISTS `track_artist`; +DROP TABLE IF EXISTS `scrobble_track`; + +COMMIT; \ No newline at end of file diff --git a/migrations/3_tracks.up.sql b/migrations/3_tracks.up.sql new file mode 100644 index 00000000..98a954cf --- /dev/null +++ b/migrations/3_tracks.up.sql @@ -0,0 +1,59 @@ +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` BINARY(16) NOT NULL, + `desc` TEXT, + `img` VARCHAR(255) DEFAULT '' +) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; + +CREATE TABLE IF NOT EXISTS `albums` ( + `uuid` BINARY(16) PRIMARY KEY, + `name` BINARY(16) NOT NULL, + `desc` TEXT, + `img` VARCHAR(255) DEFAULT '' +) DEFAULT CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; + +CREATE TABLE IF NOT EXISTS `tracks` ( + `uuid` BINARY(16) PRIMARY KEY, + `name` BINARY(16) NOT NULL, + `desc` TEXT, + `img` VARCHAR(255) DEFAULT '' +) 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 `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; + +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; + +COMMIT;