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();