34e292bea9
* Added initial code for endpoint to link user id with song queue #156 * Updated songQueue to have a user_id field #156 * Added function to link user_id with songQueue record #156 * Added useful constant #156 * Finished adding code #156 Need to make the endpoint available and then write a test. Might have to modify existing tests * Made link user id endpoint available #156 * Added TODOs for later * Changing location of test code * Code formatting * Added test #156 * Formatted code * Added user_id to SongQueue and added more related code * Code formatting * Fixing possible nil user_id field in SongQueue when calling a function * Fixed another issue * Made changes to function to also return user_id * Making use of user_id in test requests * Code formatting * Updated workflow * Forgot to include port * Docker changes for port change * Reverting port changes * Cleaning up Dockerfile * Version bump
63 lines
1.9 KiB
SQL
63 lines
1.9 KiB
SQL
-- Add migration script here
|
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
|
|
-- Table to store queued songs to process
|
|
CREATE TABLE IF NOT EXISTS "songQueue" (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
filename TEXT NOT NULL,
|
|
status TEXT CHECK (status IN ('pending', 'ready', 'processing', 'done')),
|
|
data BYTEA NULL,
|
|
user_id UUID NULL
|
|
);
|
|
|
|
-- Table to store queued metadata
|
|
CREATE TABLE IF NOT EXISTS "metadataQueue" (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
metadata jsonb NOT NULL,
|
|
created_at timestamptz DEFAULT now(),
|
|
song_queue_id UUID NOT NULL
|
|
);
|
|
|
|
-- Table to store queued coverart
|
|
CREATE TABLE IF NOT EXISTS "coverartQueue" (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
data BYTEA NULL,
|
|
song_queue_id UUID NULL
|
|
);
|
|
|
|
-- Create an index for better query performance
|
|
CREATE INDEX metadata_queue_data_metadata ON "metadataQueue" USING gin (metadata);
|
|
|
|
-- Table to store a song's info
|
|
CREATE TABLE IF NOT EXISTS "song" (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
title TEXT NOT NULL,
|
|
artist TEXT NOT NULL,
|
|
album_artist TEXT NOT NULL,
|
|
album TEXT NOT NULL,
|
|
genre TEXT NOT NULL,
|
|
-- TODO: Address discrepancy of date and year at some point
|
|
-- date TEXT NOT NULL,
|
|
year INT NOT NULL,
|
|
track INT NOT NULL,
|
|
disc INT NOT NULL,
|
|
track_count INT NOT NULL,
|
|
disc_count INT NOT NULL,
|
|
duration INT NOT NULL,
|
|
audio_type TEXT NOT NULL,
|
|
date_created timestamptz DEFAULT now(),
|
|
filename TEXT NOT NULL,
|
|
directory TEXT NOT NULL,
|
|
user_id UUID NULL
|
|
-- TODO: Add coverart id later. This will allow multiple songs to be linked to a single cover art
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "coverart" (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
title TEXT NOT NULL,
|
|
-- TODO: Separate path later
|
|
path TEXT NOT NULL,
|
|
song_id UUID NOT NULL
|
|
-- TODO: Add type later
|
|
);
|