Refactored to use database

#5 Switched to use maria database to store song information
#7 Added spring and hibernate support
#8 Added song upload functionality
This commit is contained in:
Isaac Parenteau
2019-10-06 22:02:16 -05:00
parent af8e8fa52a
commit 50b6cea57b
28 changed files with 1113 additions and 37 deletions

View File

@@ -6,3 +6,58 @@ CREATE TABLE eighttrack.discord_guild (
PRIMARY KEY (id),
UNIQUE KEY guild_UN (guild_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Information about discord guild';
CREATE TABLE eighttrack.song (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
uuid varchar(100) NOT NULL COMMENT 'Unique Identifier',
title varchar(500) NOT NULL COMMENT 'title of song',
artist varchar(500) DEFAULT NULL COMMENT 'songs artist',
album varchar(500) DEFAULT NULL COMMENT 'songs album',
genre varchar(500) DEFAULT NULL COMMENT 'songs genre',
track_number varchar(100) DEFAULT NULL COMMENT 'track number',
disc_number varchar(100) DEFAULT NULL COMMENT 'disc number',
release_year varchar(100) DEFAULT NULL COMMENT 'release year',
duration bigint(20) DEFAULT NULL COMMENT 'songs duration',
file_path varchar(5000) NOT NULL COMMENT 'file location on local file system',
file_hash varchar(40) NOT NULL COMMENT 'sha1 hash of file',
date_added timestamp NULL DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY song_uuid_UN (uuid),
UNIQUE KEY song_file_hash_UN (file_hash)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE eighttrack.guild_song (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
guild bigint(20) NOT NULL COMMENT 'guild the song belongs to',
song bigint(20) NOT NULL COMMENT 'the song',
date_added timestamp NULL DEFAULT NULL COMMENT 'date added',
PRIMARY KEY (id),
UNIQUE KEY guild_song_UN (guild,song),
KEY guild_song_FK_1 (song),
CONSTRAINT guild_song_FK FOREIGN KEY (guild) REFERENCES eighttrack.discord_guild (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT guild_song_FK_1 FOREIGN KEY (song) REFERENCES eighttrack.song (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE eighttrack.guild_playlist (
id bigint(20) NOT NULL AUTO_INCREMENT,
guild bigint(20) NOT NULL,
userId bigint(20) NOT NULL,
playlist varchar(500) NOT NULL,
date_added timestamp NULL DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY guild_playlist_UN (guild,userId,playlist),
CONSTRAINT guild_playlist_FK FOREIGN KEY (guild) REFERENCES eighttrack.discord_guild (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE eighttrack.guild_playlist_song (
id bigint(20) NOT NULL AUTO_INCREMENT,
guild_playlist bigint(20) NOT NULL,
guild_song bigint(20) NOT NULL,
date_added timestamp NULL DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY guild_playlist_song_UN (guild_playlist,guild_song),
KEY guild_playlist_song_FK_1 (guild_song),
CONSTRAINT guild_playlist_song_FK FOREIGN KEY (guild_playlist) REFERENCES eighttrack.guild_playlist (id) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT guild_playlist_song_FK_1 FOREIGN KEY (guild_song) REFERENCES eighttrack.guild_song (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;