Archived
Update sql scripts for creating and seeding db
This commit is contained in:
+42
-42
@@ -1,64 +1,64 @@
|
||||
-- Create Groups Table. Users are split into groups. Users review songs in their respective group.
|
||||
CREATE TABLE groups (
|
||||
id UUID PRIMARY KEY,
|
||||
group_name STRING NOT NULL,
|
||||
-- Create Group table
|
||||
CREATE TABLE UserGroup (
|
||||
id UUID PRIMARY KEY DEFAULT uuid(),
|
||||
group_name VARCHAR UNIQUE NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Create Users Table (Updated with Foreign Key for Group)
|
||||
CREATE TABLE users (
|
||||
id UUID PRIMARY KEY,
|
||||
name STRING DEFAULT NULL,
|
||||
username STRING UNIQUE NOT NULL,
|
||||
email STRING UNIQUE DEFAULT NULL,
|
||||
-- Create User Table
|
||||
CREATE TABLE User (
|
||||
id UUID PRIMARY KEY DEFAULT uuid(),
|
||||
name VARCHAR,
|
||||
username VARCHAR UNIQUE NOT NULL,
|
||||
email VARCHAR UNIQUE,
|
||||
group_id UUID,
|
||||
password STRING NOT NULL, -- Hashed password
|
||||
last_login_time TIMESTAMP DEFAULT NULL,
|
||||
is_admin BOOLEAN DEFAULT FALSE,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
hashed_password VARCHAR NOT NULL,
|
||||
is_active BOOLEAN DEFAULT true,
|
||||
is_admin BOOLEAN DEFAULT false,
|
||||
last_login TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (group_id) REFERENCES groups(id)
|
||||
modified_at timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (group_id) REFERENCES UserGroup(id)
|
||||
);
|
||||
|
||||
-- Create Contest Table
|
||||
CREATE TABLE contests (
|
||||
id UUID PRIMARY KEY,
|
||||
city_name STRING NOT NULL, -- Name of the city where the contest is held.
|
||||
date DATE NOT NULL, -- Date when the contest is to be held.
|
||||
round STRING NOT NULL, -- Can be one of "1st semifinal", "2nd semifinal", "final"
|
||||
is_active BOOLEAN DEFAULT FALSE,
|
||||
CREATE TABLE Contest (
|
||||
id UUID PRIMARY KEY DEFAULT uuid(),
|
||||
city_name VARCHAR NOT NULL,
|
||||
date DATE NOT NULL,
|
||||
round VARCHAR NOT NULL,
|
||||
is_active BOOLEAN DEFAULT false,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Create Song Table
|
||||
CREATE TABLE songs (
|
||||
id UUID PRIMARY KEY,
|
||||
artist_name STRING NOT NULL,
|
||||
song_title STRING NOT NULL,
|
||||
country STRING NOT NULL,
|
||||
lyrics TEXT DEFAULT NULL,
|
||||
song_meaning TEXT DEFAULT NULL,
|
||||
-- Create Song Table with ARRAY type for tags
|
||||
CREATE TABLE Song (
|
||||
id UUID PRIMARY KEY DEFAULT uuid(),
|
||||
contest_id UUID NOT NULL,
|
||||
artist_name VARCHAR NOT NULL,
|
||||
song_title VARCHAR NOT NULL,
|
||||
country VARCHAR NOT NULL,
|
||||
lyrics TEXT,
|
||||
song_meaning TEXT,
|
||||
tags VARCHAR[],
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (contest_id) REFERENCES Contest(id)
|
||||
);
|
||||
|
||||
-- Create Reviews Table
|
||||
CREATE TABLE reviews (
|
||||
id UUID PRIMARY KEY,
|
||||
contest_id UUID,
|
||||
song_id UUID,
|
||||
reviewer_id UUID,
|
||||
-- Create Reviews Table with Score Constraints
|
||||
CREATE TABLE Reviews (
|
||||
id UUID PRIMARY KEY DEFAULT uuid(),
|
||||
song_id UUID NOT NULL,
|
||||
reviewer_id UUID NOT NULL,
|
||||
song_score INTEGER CHECK (song_score BETWEEN 1 AND 100),
|
||||
wardrobe_score INTEGER CHECK (wardrobe_score BETWEEN 1 AND 100),
|
||||
stage_show_score INTEGER CHECK (stage_show_score BETWEEN 1 AND 100),
|
||||
review_text TEXT DEFAULT NULL,
|
||||
review_text TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (contest_id) REFERENCES contests(id),
|
||||
FOREIGN KEY (song_id) REFERENCES songs(id),
|
||||
FOREIGN KEY (reviewer_id) REFERENCES users(id)
|
||||
FOREIGN KEY (song_id) REFERENCES Song(id),
|
||||
FOREIGN KEY (reviewer_id) REFERENCES User(id)
|
||||
);
|
||||
|
||||
|
||||
+38
-41
@@ -1,47 +1,44 @@
|
||||
-- Insert test data into Groups Table
|
||||
INSERT INTO groups (id, group_name, created_at, modified_at)
|
||||
VALUES
|
||||
('00000000-0000-0000-0000-000000000001', 'Admins', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('00000000-0000-0000-0000-000000000002', 'Judges Group A', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('00000000-0000-0000-0000-000000000003', 'Judges Group B', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
-- Seed UserGroup
|
||||
INSERT INTO UserGroup (id, group_name) VALUES
|
||||
('00000000-0000-0000-0000-000000000001', 'Admins'),
|
||||
('00000000-0000-0000-0000-000000000002', 'Judges Group A'),
|
||||
('00000000-0000-0000-0000-000000000003', 'Judges Group B');
|
||||
|
||||
-- Insert test data into Users Table
|
||||
INSERT INTO users (id, name, username, email, group_id, password, last_login_time, is_admin, is_active, created_at, modified_at)
|
||||
VALUES
|
||||
('11111111-1111-1111-1111-111111111111', 'Alice Admin', 'alice_admin', 'alice.admin@example.com', '00000000-0000-0000-0000-000000000001', 'hashed_password_1', CURRENT_TIMESTAMP, TRUE, TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('22222222-2222-2222-2222-222222222222', 'Bob Judge', 'bob_judge', '[email protected]', '00000000-0000-0000-0000-000000000002', 'hashed_password_2', CURRENT_TIMESTAMP, FALSE, TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('33333333-3333-3333-3333-333333333333', 'Charlie Reviewer', 'charlie_reviewer', '[email protected]', '00000000-0000-0000-0000-000000000003', 'hashed_password_3', CURRENT_TIMESTAMP, FALSE, TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('44444444-4444-4444-4444-444444444444', 'Dana Inactive', 'dana_inactive', NULL, '00000000-0000-0000-0000-000000000003', 'hashed_password_4', NULL, FALSE, FALSE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
-- Seed Users
|
||||
INSERT INTO User (id, username, email, group_id, hashed_password, is_active) VALUES
|
||||
('11111111-1111-1111-1111-111111111111', 'harsh_critic', NULL, '00000000-0000-0000-0000-000000000001', '$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW', true),
|
||||
('22222222-2222-2222-2222-222222222222', 'positive_pat', 'pat@example.com', '00000000-0000-0000-0000-000000000002', '$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW', true),
|
||||
('33333333-3333-3333-3333-333333333333', 'neutral_nancy', NULL, '00000000-0000-0000-0000-000000000003', '$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW', false);
|
||||
|
||||
-- Insert test data into Contests Table
|
||||
INSERT INTO contests (id, city_name, date, round, is_active, created_at, modified_at)
|
||||
VALUES
|
||||
('55555555-5555-5555-5555-555555555555', 'Stockholm', '2023-05-14', 'Final', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('66666666-6666-6666-6666-666666666666', 'Copenhagen', '2023-05-10', '1st semifinal', FALSE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('77777777-7777-7777-7777-777777777777', 'Oslo', '2023-05-12', '2nd semifinal', FALSE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
-- Seed Contests
|
||||
INSERT INTO Contest (id, city_name, date, round, is_active) VALUES
|
||||
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Rotterdam', '2024-05-10', 'Final', true),
|
||||
('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'Stockholm', '2025-03-15', '1st Semifinal', false);
|
||||
|
||||
-- Insert test data into Songs Table
|
||||
INSERT INTO songs (id, artist_name, song_title, country, lyrics, song_meaning, created_at, modified_at)
|
||||
VALUES
|
||||
('88888888-8888-8888-8888-888888888888', 'Artist A', 'Song of Hope', 'Sweden', NULL, 'This song represents resilience and hope.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('99999999-9999-9999-9999-999999999999', 'Artist B', 'Ballad of Love', 'Denmark', 'Lyrics about love...', 'A romantic ballad.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Artist C', 'Dance with Me', 'Norway', NULL, 'A fun and energetic dance track.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
-- Seed Songs (6 entries across 2 contests)
|
||||
INSERT INTO Song (id, contest_id, artist_name, song_title, country, tags) VALUES
|
||||
-- Rotterdam Final
|
||||
('cccccccc-cccc-cccc-cccc-cccccccccccc', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Loreen', 'Tattoo', 'Sweden', ['obsession', 'eternity']),
|
||||
('dddddddd-dddd-dddd-dddd-dddddddddddd', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Måneskin', 'Zitti e buoni', 'Italy', ['rebellion', 'youth']),
|
||||
('eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Kalush Orchestra', 'Stefania', 'Ukraine', ['family', 'war']),
|
||||
|
||||
-- Insert test data into Reviews Table
|
||||
-- Each user reviews each song with dramatic variations in scores
|
||||
INSERT INTO reviews (id, contest_id, song_id, reviewer_id, song_score, wardrobe_score, stage_show_score, review_text, created_at, modified_at)
|
||||
VALUES
|
||||
-- Reviews by Alice Admin (Group: Admins)
|
||||
('11111111-0000-0000-0000-000000000001', '55555555-5555-5555-5555-555555555555', '88888888-8888-8888-8888-888888888888', '11111111-1111-1111-1111-111111111111', 95, 10, 80, 'Amazing song, but the wardrobe choice was absolutely terrible.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('11111111-0000-0000-0000-000000000002', '55555555-5555-5555-5555-555555555555', '99999999-9999-9999-9999-999999999999', '11111111-1111-1111-1111-111111111111', 88, 95, 25, 'The song and wardrobe were great, but the stage show was far too chaotic.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('11111111-0000-0000-0000-000000000003', '55555555-5555-5555-5555-555555555555', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '11111111-1111-1111-1111-111111111111', 40, 70, 15, 'I didn’t connect with the song, and the show was awkward.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
-- Stockholm Semifinal
|
||||
('ffffffff-ffff-ffff-ffff-ffffffffffff', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'Käärijä', 'Cha Cha Cha', 'Finland', ['alcohol', 'social pressure']),
|
||||
('gggggggg-gggg-gggg-gggg-gggggggggggg', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'KEiiNO', 'Spirit in the Sky', 'Norway', ['nature', 'tradition']),
|
||||
('hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'Blanca Paloma', 'Eaea', 'Spain', ['mysticism', 'ritual']);
|
||||
|
||||
-- Reviews by Bob Judge (Group: Judges Group A)
|
||||
('22222222-0000-0000-0000-000000000001', '55555555-5555-5555-5555-555555555555', '88888888-8888-8888-8888-888888888888', '22222222-2222-2222-2222-222222222222', 70, 65, 90, 'The stage show carried the performance, but the song was mediocre.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('22222222-0000-0000-0000-000000000002', '55555555-5555-5555-5555-555555555555', '99999999-9999-9999-9999-999999999999', '22222222-2222-2222-2222-222222222222', 20, 80, 85, 'I really disliked the song, but the wardrobe and show were solid.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('22222222-0000-0000-0000-000000000003', '55555555-5555-5555-5555-555555555555', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '22222222-2222-2222-2222-222222222222', 85, 30, 75, 'The wardrobe was distracting, but the song and show were decent.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
-- Seed Reviews (10 entries with wide score ranges)
|
||||
INSERT INTO Reviews (song_id, reviewer_id, song_score, wardrobe_score, stage_show_score, review_text) VALUES
|
||||
-- Rotterdam Reviews
|
||||
('cccccccc-cccc-cccc-cccc-cccccccccccc', '11111111-1111-1111-1111-111111111111', 15, 20, 10, 'Overrated ballad, staging looked like a screensaver'),
|
||||
('cccccccc-cccc-cccc-cccc-cccccccccccc', '22222222-2222-2222-2222-222222222222', 98, 95, 99, 'A masterpiece! Vocals gave me chills'),
|
||||
('dddddddd-dddd-dddd-dddd-dddddddddddd', '33333333-3333-3333-3333-333333333333', 65, 70, 75, NULL),
|
||||
('eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee', '22222222-2222-2222-2222-222222222222', 88, 82, 90, 'Powerful message, but staging needed more polish'),
|
||||
|
||||
-- Reviews by Charlie Reviewer (Group: Judges Group B)
|
||||
('33333333-0000-0000-0000-000000000001', '55555555-5555-5555-5555-555555555555', '88888888-8888-8888-8888-888888888888', '33333333-3333-3333-3333-333333333333', 15, 90, 20, 'The wardrobe was stunning, but I absolutely hated the song.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('33333333-0000-0000-0000-000000000002', '55555555-5555-5555-5555-555555555555', '99999999-9999-9999-9999-999999999999', '33333333-3333-3333-3333-333333333333', 65, 85, 10, 'Wardrobe and song were fine, but the show was offensive.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
|
||||
('33333333-0000-0000-0000-000000000003', '55555555-5555-5555-5555-555555555555', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '33333333-3333-3333-3333-333333333333', 92, 25, 88, 'The song was fantastic, but the wardrobe looked cheap.', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
|
||||
-- Stockholm Reviews
|
||||
('ffffffff-ffff-ffff-ffff-ffffffffffff', '11111111-1111-1111-1111-111111111111', 10, 95, 15, 'Vocally disastrous but fashion-forward'),
|
||||
('ffffffff-ffff-ffff-ffff-ffffffffffff', '22222222-2222-2222-2222-222222222222', 85, 90, 88, 'Pure energy! Crowd loved it'),
|
||||
('gggggggg-gggg-gggg-gggg-gggggggggggg', '33333333-3333-3333-3333-333333333333', 72, 68, 65, 'Cultural elements were interesting'),
|
||||
('gggggggg-gggg-gggg-gggg-gggggggggggg', '11111111-1111-1111-1111-111111111111', 40, 35, 50, 'Joik section felt out of place'),
|
||||
('hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh', '22222222-2222-2222-2222-222222222222', 92, 85, 88, 'Haunting and unique - my dark horse favorite'),
|
||||
('hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh', '33333333-3333-3333-3333-333333333333', 78, 65, 70, NULL);
|
||||
Reference in New Issue
Block a user