diff --git a/sql/init.sql b/sql/init.sql index f314533..e48c355 100644 --- a/sql/init.sql +++ b/sql/init.sql @@ -1,52 +1,32 @@ --- Enable required extensions CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; --- Create tables CREATE TABLE IF NOT EXISTS files ( - id UUID NOT NULL PRIMARY KEY DEFAULT uuid_generate_v4(), - file_type VARCHAR(15) NOT NULL, + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + file_type VARCHAR(30) NOT NULL, file_name VARCHAR(50) NOT NULL, extension VARCHAR(10) NOT NULL, streamer_id INTEGER NOT NULL, entity VARCHAR(50) NOT NULL DEFAULT 'widget', - size FLOAT NOT NULL DEFAULT 10, - created_at TIMESTAMP DEFAULT now() + created_at TIMESTAMP DEFAULT NOW(), + size FLOAT NOT NULL DEFAULT 0 ); + CREATE TABLE IF NOT EXISTS widgets ( id SERIAL PRIMARY KEY, streamer_id INTEGER NOT NULL, template_id INTEGER, group_id INTEGER NOT NULL DEFAULT 1, - is_active BOOLEAN NOT NULL DEFAULT true, - + is_active BOOLEAN NOT NULL DEFAULT TRUE, name VARCHAR(50) NOT NULL, - image UUID NOT NULL REFERENCES files(id) ON DELETE CASCADE, - audio UUID NOT NULL REFERENCES files(id) ON DELETE CASCADE, - + image UUID REFERENCES files(id) ON DELETE CASCADE, + audio UUID REFERENCES files(id) ON DELETE CASCADE, duration INTEGER NOT NULL, min_amount INTEGER NOT NULL, max_amount INTEGER NOT NULL, - - created_at TIMESTAMP NOT NULL DEFAULT now(), - updated_at TIMESTAMP NOT NULL DEFAULT now() + created_at TIMESTAMP NOT NULL DEFAULT NOW(), + updated_at TIMESTAMP NOT NULL DEFAULT NOW() ); - - -CREATE TABLE IF NOT EXISTS donats ( - id SERIAL PRIMARY KEY, - streamer_id INTEGER NOT NULL, - widget_id INTEGER NOT NULL, - order_id TEXT NOT NULL, - target_id INTEGER NOT NULL, - text TEXT NOT NULL, - amount INTEGER NOT NULL, - donat_user TEXT NOT NULL, - status VARCHAR(50) NOT NULL DEFAULT 'pending', - created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP -); - CREATE TABLE IF NOT EXISTS targets ( id SERIAL PRIMARY KEY, streamer_id INTEGER NOT NULL, @@ -57,13 +37,34 @@ CREATE TABLE IF NOT EXISTS targets ( updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP ); +CREATE TABLE IF NOT EXISTS donats ( + id SERIAL PRIMARY KEY, + streamer_id INTEGER NOT NULL, + widget_id INTEGER REFERENCES widgets(id) NOT NULL, + order_id UUID NOT NULL, + target_id INTEGER REFERENCES targets(id), + paid_time TIMESTAMP, + status VARCHAR(50) NOT NULL DEFAULT 'pending', + text TEXT NOT NULL, + amount INTEGER NOT NULL, + donat_user TEXT NOT NULL, + accepted_time TIMESTAMP, + rejected_time TIMESTAMP, + show_name BOOLEAN NOT NULL DEFAULT TRUE, + show_text BOOLEAN NOT NULL DEFAULT TRUE, + play_content BOOLEAN NOT NULL DEFAULT TRUE, + showed_time TIMESTAMP, + created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP + ); + CREATE TABLE IF NOT EXISTS donate_pages ( id SERIAL PRIMARY KEY, - streamer_login TEXT NOT NULL, - streamer_id INTEGER NOT NULL, - description TEXT DEFAULT '', - text_after_donat TEXT DEFAULT '', - avatar UUID REFERENCES files(id) ON DELETE CASCADE, + streamer_login VARCHAR(255) NOT NULL, + streamer_id INTEGER NOT NULL, + description TEXT DEFAULT '', + text_after_donat TEXT DEFAULT '', + avatar UUID REFERENCES files(id) ON DELETE CASCADE, background_img UUID REFERENCES files(id) ON DELETE CASCADE, head_img UUID REFERENCES files(id) ON DELETE CASCADE ); @@ -72,7 +73,7 @@ CREATE TABLE IF NOT EXISTS moderation ( id SERIAL PRIMARY KEY, streamer_id INTEGER NOT NULL, enable BOOLEAN DEFAULT FALSE, - duration INTEGER + duration INTEGER NOT NULL DEFAULT 40 ); CREATE TABLE IF NOT EXISTS filters ( @@ -91,11 +92,11 @@ CREATE TABLE IF NOT EXISTS voice_settings ( id SERIAL PRIMARY KEY, streamer_id INTEGER NOT NULL, enable BOOLEAN DEFAULT FALSE, - voice_speed INTEGER NOT NULL, - scenery TEXT DEFAULT 'after_donat', - voice_sound_percent INTEGER NOT NULL, - min_price INTEGER NOT NULL -); + voice_speed VARCHAR(20) NOT NULL DEFAULT 'medium', + scenery TEXT DEFAULT 'after_donat', + voice_sound_percent INTEGER NOT NULL, + min_price INTEGER NOT NULL + ); CREATE TABLE IF NOT EXISTS languages ( id SERIAL PRIMARY KEY, @@ -110,7 +111,11 @@ CREATE TABLE IF NOT EXISTS voices_languages ( language_id INTEGER NOT NULL REFERENCES languages(id) ); --- Create function for updating timestamps +CREATE TABLE IF NOT EXISTS streamers_widgets_pages ( + id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), + streamer_id INTEGER NOT NULL + ); + CREATE OR REPLACE FUNCTION update_updated_at() RETURNS TRIGGER AS $$ BEGIN @@ -119,21 +124,20 @@ RETURN NEW; END; $$ LANGUAGE plpgsql; --- Create triggers -CREATE TRIGGER update_updated_at_widgets +CREATE TRIGGER widgets_updated_at_trigger BEFORE UPDATE ON widgets FOR EACH ROW - EXECUTE FUNCTION update_updated_at(); + EXECUTE PROCEDURE update_updated_at(); -CREATE TRIGGER update_updated_at_donats +CREATE TRIGGER donats_updated_at_trigger BEFORE UPDATE ON donats FOR EACH ROW - EXECUTE FUNCTION update_updated_at(); + EXECUTE PROCEDURE update_updated_at(); -CREATE TRIGGER update_updated_at_targets +CREATE TRIGGER targets_updated_at_trigger BEFORE UPDATE ON targets FOR EACH ROW - EXECUTE FUNCTION update_updated_at(); + EXECUTE PROCEDURE update_updated_at(); -- Вставка default_avatar.png