generated from HoloTech/twitch-bot-template
64 lines
1.8 KiB
PL/PgSQL
64 lines
1.8 KiB
PL/PgSQL
-- Metadata {{{
|
|
CREATE TABLE version_history(
|
|
component TEXT NOT NULL,
|
|
from_version INTEGER NOT NULL,
|
|
to_version INTEGER NOT NULL,
|
|
author TEXT NOT NULL,
|
|
_timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
);
|
|
INSERT INTO version_history (component, from_version, to_version, author) VALUES ('ROOT', 0, 1, 'Initial Creation');
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION update_timestamp_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW._timestamp = now();
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
CREATE TABLE app_config(
|
|
appname TEXT PRIMARY KEY,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- }}}
|
|
|
|
-- Twitch Auth {{{
|
|
INSERT INTO version_history (component, from_version, to_version, author) VALUES ('TWITCH_AUTH', 0, 1, 'Initial Creation');
|
|
|
|
-- Authorisation tokens allowing us to take actions on behalf of certain users or channels.
|
|
-- For example, channels we have joined will need to be authorised with a 'channel:bot' scope.
|
|
CREATE TABLE user_auth(
|
|
userid TEXT PRIMARY KEY,
|
|
token TEXT NOT NULL,
|
|
refresh_token TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
_timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE TRIGGER user_auth_timestamp BEFORE UPDATE ON user_auth
|
|
FOR EACH ROW EXECUTE FUNCTION update_timestamp_column();
|
|
|
|
CREATE TABLE user_auth_scopes(
|
|
userid TEXT NOT NULL REFERENCES user_auth(userid) ON DELETE CASCADE,
|
|
scope TEXT NOT NULL
|
|
);
|
|
|
|
-- Which joins will be joined at startup,
|
|
-- and any configurable choices needed when joining the channel
|
|
CREATE TABLE bot_channels(
|
|
userid TEXT PRIMARY KEY REFERENCES user_auth(userid) ON DELETE CASCADE,
|
|
autojoin BOOLEAN DEFAULT true,
|
|
joined_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
_timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE TRIGGER bot_channels_timestamp BEFORE UPDATE ON bot_channels
|
|
FOR EACH ROW EXECUTE FUNCTION update_timestamp_column();
|
|
|
|
|
|
-- }}}
|
|
|
|
|
|
|
|
-- vim: set fdm=marker:
|