Whitelist-API/API/migrations/20231116212316_tables.sql
2023-11-27 12:29:47 -06:00

87 lines
3.4 KiB
SQL

-- For UUIDS
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY,
discord_id BIGINT,
superuser BOOL NOT NULL DEFAULT false
);
CREATE TABLE IF NOT EXISTS orgs (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
name VARCHAR(32) UNIQUE NOT NULL,
owner_id BIGINT REFERENCES users(id),
discord_server_id BIGINT,
active BOOLEAN NOT NULL DEFAULT true
);
CREATE TABLE IF NOT EXISTS org_managers (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
user_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
org_id UUID REFERENCES orgs(id) ON DELETE CASCADE,
active BOOLEAN NOT NULL DEFAULT true
);
CREATE TABLE IF NOT EXISTS org_tags (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
tag VARCHAR(32) NOT NULL,
org_id UUID REFERENCES orgs(id) ON DELETE CASCADE,
UNIQUE (tag, org_id) -- A tag can only appear in a organization once
);
CREATE TABLE IF NOT EXISTS org_groups (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
name VARCHAR(32) NOT NULL,
org_id UUID REFERENCES orgs(id) ON DELETE CASCADE,
active BOOLEAN NOT NULL DEFAULT true,
UNIQUE (name, org_id) -- A group may only have one name
);
CREATE TABLE IF NOT EXISTS org_group_tags (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
group_id UUID REFERENCES org_groups(id) ON DELETE CASCADE,
tag_id UUID REFERENCES org_tags(id) ON DELETE CASCADE,
UNIQUE (tag_id, group_id) -- A tag can only appear in a group once
);
CREATE TABLE IF NOT EXISTS org_group_notes (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
group_id UUID REFERENCES org_groups(id) ON DELETE CASCADE,
note VARCHAR(512) NOT NULL
);
CREATE TABLE IF NOT EXISTS org_group_members (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
user_id BIGINT REFERENCES users(id) ON DELETE CASCADE,
group_id UUID REFERENCES org_groups(id) ON DELETE CASCADE,
owner BOOLEAN NOT NULL DEFAULT false,
UNIQUE (user_id, group_id) -- A user can only appear in a group once
);
CREATE TABLE IF NOT EXISTS org_group_squad_details (
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
group_id UUID REFERENCES org_groups(id) ON DELETE CASCADE,
remote_admin_list VARCHAR(256),
remote_admin_list_group VARCHAR(32),
perm_changemap BOOLEAN NOT NULL DEFAULT false,
perm_pause BOOLEAN NOT NULL DEFAULT false,
perm_cheat BOOLEAN NOT NULL DEFAULT false,
perm_private BOOLEAN NOT NULL DEFAULT false,
perm_balance BOOLEAN NOT NULL DEFAULT false,
perm_chat BOOLEAN NOT NULL DEFAULT false,
perm_kick BOOLEAN NOT NULL DEFAULT false,
perm_ban BOOLEAN NOT NULL DEFAULT false,
perm_config BOOLEAN NOT NULL DEFAULT false,
perm_cameraman BOOLEAN NOT NULL DEFAULT false,
perm_immune BOOLEAN NOT NULL DEFAULT false,
perm_manageserver BOOLEAN NOT NULL DEFAULT false,
perm_featuretest BOOLEAN NOT NULL DEFAULT false,
perm_reserve BOOLEAN NOT NULL DEFAULT false,
perm_demos BOOLEAN NOT NULL DEFAULT false,
perm_clientdemos BOOLEAN NOT NULL DEFAULT false,
perm_debug BOOLEAN NOT NULL DEFAULT false,
perm_teamchange BOOLEAN NOT NULL DEFAULT false,
perm_forceteamchange BOOLEAN NOT NULL DEFAULT false,
perm_canseeadminchat BOOLEAN NOT NULL DEFAULT false
);