115 lines
2.5 KiB
SQL
115 lines
2.5 KiB
SQL
-- Add gem support
|
|
ALTER TABLE user_config ADD COLUMN name TEXT;
|
|
INSERT INTO VersionHistory (version, author) VALUES (13, 'v12-v13 migration');
|
|
|
|
-- Add first_joined_at to guild table
|
|
-- Add left_at to guild table
|
|
ALTER TABLE guild_config ADD COLUMN first_joined_at TIMESTAMPTZ;
|
|
ALTER TABLE guild_config ADD COLUMN left_at TIMESTAMPTZ;
|
|
|
|
|
|
-- Bot config data
|
|
CREATE TABLE app_config(
|
|
appname TEXT PRIMARY KEY,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE bot_config(
|
|
appname TEXT PRIMARY KEY REFERENCES app_config(appname) ON DELETE CASCADE,
|
|
default_skin TEXT
|
|
);
|
|
|
|
CREATE TABLE shard_data(
|
|
shardname TEXT PRIMARY KEY,
|
|
appname TEXT REFERENCES bot_config(appname) ON DELETE CASCADE,
|
|
shard_id INTEGER NOT NULL,
|
|
shard_count INTEGER NOT NULL,
|
|
last_login TIMESTAMPTZ,
|
|
guild_count INTEGER
|
|
);
|
|
|
|
CREATE TYPE OnlineStatus AS ENUM(
|
|
'ONLINE',
|
|
'IDLE',
|
|
'DND',
|
|
'OFFLINE'
|
|
);
|
|
|
|
CREATE TYPE ActivityType AS ENUM(
|
|
'PLAYING',
|
|
'WATCHING',
|
|
'LISTENING',
|
|
'STREAMING'
|
|
);
|
|
|
|
CREATE TABLE bot_config_presence(
|
|
appname TEXT PRIMARY KEY REFERENCES bot_config(appname) ON DELETE CASCADE,
|
|
online_status OnlineStatus,
|
|
activity_type ActivityType,
|
|
activity_name Text
|
|
);
|
|
|
|
|
|
-- Analytics data
|
|
-- DROP SCHEMA IF EXISTS "analytics" CASCADE;
|
|
CREATE SCHEMA "analytics";
|
|
|
|
CREATE TABLE analytics.snapshots(
|
|
snapshotid SERIAL PRIMARY KEY,
|
|
appname TEXT NOT NULL REFERENCES bot_config (appname),
|
|
guild_count INTEGER NOT NULL,
|
|
study_time BIGINT NOT NULL,
|
|
in_voice INTEGER NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT (now() at time zone 'utc')
|
|
);
|
|
|
|
|
|
CREATE TABLE analytics.events(
|
|
eventid SERIAL PRIMARY KEY,
|
|
appname TEXT NOT NULL REFERENCES bot_config (appname),
|
|
ctxid BIGINT,
|
|
guildid BIGINT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT (now() at time zone 'utc')
|
|
);
|
|
|
|
CREATE TYPE analytics.CommandStatus AS ENUM(
|
|
'COMPLETED',
|
|
'CANCELLED'
|
|
'FAILED'
|
|
);
|
|
|
|
CREATE TABLE analytics.commands(
|
|
cmdname TEXT NOT NULL,
|
|
cogname TEXT,
|
|
userid BIGINT NOT NULL,
|
|
status analytics.CommandStatus NOT NULL,
|
|
execution_time INTEGER NOT NULL
|
|
) INHERITS (analytics.events);
|
|
|
|
|
|
CREATE TYPE analytics.GuildAction AS ENUM(
|
|
'JOINED',
|
|
'LEFT'
|
|
);
|
|
|
|
CREATE TABLE analytics.guilds(
|
|
guildid BIGINT NOT NULL,
|
|
action analytics.GuildAction NOT NULL
|
|
) INHERITS (analytics.events);
|
|
|
|
|
|
CREATE TYPE analytics.VoiceAction AS ENUM(
|
|
'JOINED',
|
|
'LEFT'
|
|
);
|
|
|
|
CREATE TABLE analytics.voice_sessions(
|
|
userid BIGINT NOT NULL,
|
|
action analytics.VoiceAction NOT NULL
|
|
);
|
|
|
|
CREATE TABLE analytics.gui_renders(
|
|
cardname TEXT NOT NULL,
|
|
duration INTEGER NOT NULL
|
|
);
|