81 lines
2.6 KiB
SQL
81 lines
2.6 KiB
SQL
-- +migrate Up
|
|
|
|
-- 2022-05-02: initial schema
|
|
|
|
create table users (
|
|
id text primary key,
|
|
username text not null unique,
|
|
display_name text,
|
|
bio text,
|
|
|
|
avatar_source text,
|
|
avatar_urls text[],
|
|
links text[],
|
|
|
|
discord text unique, -- for Discord oauth
|
|
discord_username text
|
|
);
|
|
|
|
create table user_names (
|
|
user_id text not null references users (id) on delete cascade,
|
|
id bigserial primary key, -- ID is used for sorting; when order changes, existing rows are deleted and new ones are created
|
|
name text not null,
|
|
status int not null
|
|
);
|
|
|
|
create table user_pronouns (
|
|
user_id text not null references users (id) on delete cascade,
|
|
id bigserial primary key,
|
|
display_text text, -- if unset, falls back to first 2 parts of pronouns
|
|
pronouns text not null,
|
|
status int not null
|
|
);
|
|
|
|
create table user_fields (
|
|
user_id text not null references users (id) on delete cascade,
|
|
id bigserial primary key,
|
|
name text not null,
|
|
|
|
favourite text[] not null default array[]::text[],
|
|
okay text[] not null default array[]::text[],
|
|
jokingly text[] not null default array[]::text[],
|
|
friends_only text[] not null default array[]::text[],
|
|
avoid text[] not null default array[]::text[]
|
|
);
|
|
|
|
create table members (
|
|
id text primary key,
|
|
user_id text not null references users (id) on delete cascade,
|
|
name text not null,
|
|
bio text,
|
|
|
|
avatar_url text,
|
|
links text[]
|
|
);
|
|
|
|
create table member_names (
|
|
member_id text not null references members (id) on delete cascade,
|
|
id bigserial primary key, -- ID is used for sorting; when order changes, existing rows are deleted and new ones are created
|
|
name text not null,
|
|
status int not null
|
|
);
|
|
|
|
create table member_pronouns (
|
|
member_id text not null references members (id) on delete cascade,
|
|
id bigserial primary key,
|
|
display_text text, -- if unset, falls back to first 2 parts of pronouns
|
|
pronouns text not null,
|
|
status int not null
|
|
);
|
|
|
|
create table member_fields (
|
|
member_id text not null references members (id) on delete cascade,
|
|
id bigserial primary key,
|
|
name text not null,
|
|
|
|
favourite text[] not null default array[]::text[],
|
|
okay text[] not null default array[]::text[],
|
|
jokingly text[] not null default array[]::text[],
|
|
friends_only text[] not null default array[]::text[],
|
|
avoid text[] not null default array[]::text[]
|
|
);
|