You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
synctv/migrations/20260426032_create_settings...

34 lines
1.0 KiB
PL/PgSQL

CREATE TABLE IF NOT EXISTS settings (
key VARCHAR(200) PRIMARY KEY,
group_name VARCHAR(100) NOT NULL,
value TEXT NOT NULL DEFAULT '',
version INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_settings_group ON settings(group_name);
CREATE TRIGGER trigger_update_settings_updated_at
BEFORE UPDATE ON settings
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
CREATE OR REPLACE FUNCTION notify_settings_change()
RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' OR TG_OP = 'UPDATE' THEN
PERFORM pg_notify('settings_changed', NEW.key);
RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
PERFORM pg_notify('settings_changed', OLD.key);
RETURN OLD;
END IF;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER settings_change_trigger
AFTER INSERT OR UPDATE OR DELETE ON settings
FOR EACH ROW
EXECUTE FUNCTION notify_settings_change();