donat-widget/sql/init.sql

112 lines
5.2 KiB
PL/PgSQL

CREATE TABLE IF NOT EXISTS widgets (
id SERIAL PRIMARY KEY,
streamer_id INTEGER NOT NULL,
template_id INTEGER NOT NULL,
background_url TEXT DEFAULT '',
image_url TEXT DEFAULT '',
audio_url TEXT DEFAULT '',
duration INTEGER NOT NULL,
min_amount INTEGER NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
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 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,
paid BOOLEAN DEFAULT FALSE,
view BOOLEAN DEFAULT FALSE,
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,
text TEXT NOT NULL,
amount INTEGER NOT NULL,
collected INTEGER DEFAULT 0,
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_id INTEGER NOT NULL,
description TEXT DEFAULT '',
text_after_donat TEXT DEFAULT '',
page_background TEXT DEFAULT '',
avatar TEXT DEFAULT '',
background_img TEXT DEFAULT ''
);
CREATE TABLE IF NOT EXISTS moderation (
id SERIAL PRIMARY KEY,
streamer_id INTEGER NOT NULL,
enable BOOLEAN DEFAULT FALSE,
duration INTEGER
);
CREATE TABLE IF NOT EXISTS filters (
id SERIAL PRIMARY KEY,
streamer_id INTEGER NOT NULL,
enable_links BOOLEAN DEFAULT FALSE
);
CREATE TABLE IF NOT EXISTS filters_words (
id SERIAL PRIMARY KEY,
donat_filter_id INTEGER NOT NULL REFERENCES filters(id),
word TEXT NOT NULL
);
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
);
CREATE TABLE IF NOT EXISTS languages (
id SERIAL PRIMARY KEY,
iso_code TEXT DEFAULT '',
ru_name TEXT DEFAULT '',
en_name TEXT DEFAULT ''
);
CREATE TABLE IF NOT EXISTS voices_languages (
id SERIAL PRIMARY KEY,
voice_setting_id INTEGER NOT NULL REFERENCES voice_settings(id),
language_id INTEGER NOT NULL REFERENCES languages(id)
);
CREATE OR REPLACE FUNCTION update_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';
CREATE TRIGGER update_widgets_updated_at
BEFORE UPDATE ON widgets
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();
CREATE TRIGGER update_donats_updated_at
BEFORE UPDATE ON donats
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();
CREATE TRIGGER update_targets_updated_at
BEFORE UPDATE ON targets
FOR EACH ROW
EXECUTE FUNCTION update_updated_at();