87 lines
3.4 KiB
SQL
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
|
|
);
|