This repository has been archived on 2025-05-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Eurovision-25-backend-old/assets/database.sql
T

64 lines
2.0 KiB
SQL

-- 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 User Table
CREATE TABLE User (
id UUID PRIMARY KEY DEFAULT uuid(),
name VARCHAR,
username VARCHAR UNIQUE NOT NULL,
email VARCHAR UNIQUE,
group_id UUID,
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 UserGroup(id)
);
-- Create Contest Table
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 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,
FOREIGN KEY (contest_id) REFERENCES Contest(id)
);
-- 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,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (song_id) REFERENCES Song(id),
FOREIGN KEY (reviewer_id) REFERENCES User(id)
);