move queries to db folder, change database to better accommodate musicbrainz api data
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
{
|
{
|
||||||
"engine": "postgresql",
|
"engine": "postgresql",
|
||||||
"schema": "../db/db.sql",
|
"schema": "../db/db.sql",
|
||||||
"queries": "./queries/",
|
"queries": "../db/queries/",
|
||||||
"gen": {
|
"gen": {
|
||||||
"go": {
|
"go": {
|
||||||
"package": "sqlc",
|
"package": "sqlc",
|
||||||
|
|||||||
@@ -8,29 +8,43 @@ CREATE TABLE IF NOT EXISTS users (
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS albums (
|
CREATE TABLE IF NOT EXISTS albums (
|
||||||
id UUID PRIMARY KEY,
|
id UUID PRIMARY KEY,
|
||||||
|
musicbrainz_id UUID UNIQUE,
|
||||||
name VARCHAR(255) NOT NULL,
|
name VARCHAR(255) NOT NULL,
|
||||||
artist VARCHAR(255) NOT NULL,
|
extra_info VARCHAR(255),
|
||||||
|
artist_id VARCHAR(255) NOT NULL,
|
||||||
release_date DATE,
|
release_date DATE,
|
||||||
album_art_url VARCHAR(255)
|
album_art_url VARCHAR(255)
|
||||||
|
FOREIGN KEY (artist_id) REFERENCES artists(id) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS artists (
|
CREATE TABLE IF NOT EXISTS artists (
|
||||||
id UUID PRIMARY KEY,
|
id UUID PRIMARY KEY,
|
||||||
|
musicbrainz_id UUID UNIQUE,
|
||||||
name VARCHAR(255) NOT NULL,
|
name VARCHAR(255) NOT NULL,
|
||||||
genre VARCHAR(255),
|
|
||||||
bio TEXT,
|
|
||||||
artist_image_url VARCHAR(255)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS user_albums (
|
CREATE TABLE IF NOT EXISTS user_albums (
|
||||||
user_id UUID,
|
user_id UUID PRIMARY KEY,
|
||||||
album_id UUID,
|
album_id UUID,
|
||||||
date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
album_owned BOOLEAN NOT NULL DEFAULT FALSE,
|
album_owned BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
album_want BOOLEAN NOT NULL DEFAULT FALSE,
|
album_want BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
album_condition VARCHAR(50) CHECK (album_condition IN ('Mint', 'Near Mint', 'Very Good Plus', 'Very Good', 'Good Plus', 'Good', 'Fair', 'Poor')),
|
||||||
is_vinyl BOOLEAN NOT NULL DEFAULT FALSE,
|
is_vinyl BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
is_cd BOOLEAN NOT NULL DEFAULT FALSE,
|
is_cd BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
PRIMARY KEY (user_id, album_id),
|
|
||||||
FOREIGN KEY (user_id) REFERENCES Users(id) ON DELETE CASCADE,
|
FOREIGN KEY (user_id) REFERENCES Users(id) ON DELETE CASCADE,
|
||||||
FOREIGN KEY (album_id) REFERENCES Albums(id) ON DELETE CASCADE
|
FOREIGN KEY (album_id) REFERENCES Albums(id) ON DELETE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS tags (
|
||||||
|
id UUID PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL UNIQUE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS artist_tags (
|
||||||
|
artist_id UUID PRIMARY KEY,
|
||||||
|
tag_id UUID,
|
||||||
|
FOREIGN KEY (artist_id) REFERENCES Artists(id) ON DELETE CASCADE,
|
||||||
|
FOREIGN KEY (tag_id) REFERENCES Tags(id) ON DELETE CASCADE
|
||||||
);
|
);
|
||||||
Reference in New Issue
Block a user