pronounscc/scripts/migrate/001_init.sql

82 lines
2.6 KiB
MySQL
Raw Normal View History

2022-05-02 17:19:37 +02:00
-- +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[],
2022-05-02 17:19:37 +02:00
links text[],
discord text unique, -- for Discord oauth
discord_username text
2022-05-02 17:19:37 +02: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 17:19:37 +02: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[] 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[]
2022-05-02 17:19:37 +02:00
);
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 17:19:37 +02: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[] 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[]
);