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.
42 lines
1.2 KiB
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)
|
|
);
|