You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
forum/migrations/20240223040851_init.sql

42 lines
1.2 KiB
SQL

create extension if not exists "uuid-ossp";
create extension if not exists "citext";
create schema forum;
create table forum.user (
user_uuid uuid primary key default uuid_generate_v4(),
user_email text not null unique,
user_username text not null unique,
user_password_hash text not null,
user_is_admin boolean default false
);
create table forum.site (
site_uuid uuid primary key default uuid_generate_v4(),
site_title text not null,
site_base_url text not null,
site_theme text not null default 'internal',
site_singleton boolean default true,
constraint only_one_site check (site_singleton)
);
create table forum.board (
board_uuid uuid primary key default uuid_generate_v4(),
board_site uuid not null references forum.site (site_uuid),
board_title text not null,
board_description text not null
);
create table forum.thread (
thread_uuid uuid primary key default uuid_generate_v4(),
thread_board uuid not null references forum.board (board_uuid),
thread_title text not null
);
create table forum.post (
post_uuid uuid primary key default uuid_generate_v4(),
post_thread uuid not null references forum.thread (thread_uuid),
post_contents text not null,
post_author uuid not null references forum.user (user_uuid)
);