-- 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: