pronounsfu/scripts/migrate/001_init.sql

105 lines
2.9 KiB
MySQL
Raw Normal View History

2022-05-02 08:19:37 -07:00
-- 2022-05-02: initial schema
2023-08-15 18:30:34 -07:00
-- +migrate Up
2022-05-02 08:19:37 -07:00
create table users (
id text primary key,
username text not null unique,
display_name text,
bio text,
avatar_urls text[],
links text[],
2022-05-02 08:19:37 -07:00
discord text unique, -- for Discord oauth
2022-11-18 06:27:52 -08:00
discord_username text,
2023-01-04 13:41:29 -08:00
max_invites int not null default 10
2022-05-02 08:19:37 -07:00
);
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
);
2022-05-02 08:19:37 -07:00
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[],
okay text[],
jokingly text[],
friends_only text[],
avoid text[]
2022-05-02 08:19:37 -07:00
);
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_urls text[],
links text[]
2022-05-02 08:19:37 -07:00
);
2022-10-03 01:59:30 -07:00
create unique index members_user_name_idx on members (user_id, lower(name));
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
);
2022-05-02 08:19:37 -07:00
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[],
okay text[],
jokingly text[],
friends_only text[],
avoid text[]
2022-05-02 08:19:37 -07:00
);
2022-11-18 06:27:52 -08:00
create table invites (
user_id text not null references users (id) on delete cascade,
code text primary key,
created timestamp not null default (current_timestamp at time zone 'utc'),
used boolean not null default false
);
2023-08-15 18:30:34 -07:00
-- +migrate Down
drop table invites;
drop table member_fields;
drop table member_pronouns;
drop table member_names;
drop index members_user_name_idx;
drop table members;
drop table user_fields;
drop table user_pronouns;
drop table user_names;
drop table users;