52 lines
No EOL
1.5 KiB
SQL
52 lines
No EOL
1.5 KiB
SQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
CREATE TABLE users (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4 (),
|
|
name VARCHAR UNIQUE NOT NULL,
|
|
email VARCHAR,
|
|
password BYTEA,
|
|
display_name VARCHAR,
|
|
bio TEXT,
|
|
roles UUID[] NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT now (),
|
|
modified_at TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE roles (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4 (),
|
|
scopes VARCHAR[] NOT NULL
|
|
);
|
|
|
|
CREATE TABLE sites (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4 (),
|
|
owner UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
name VARCHAR UNIQUE NOT NULL,
|
|
title VARCHAR NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP NOT NULL DEFAULT now (),
|
|
modified_at TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE pages (
|
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4 (),
|
|
site UUID NOT NULL REFERENCES sites(id) ON DELETE CASCADE,
|
|
author UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
slug VARCHAR NOT NULL,
|
|
title VARCHAR NOT NULL,
|
|
description TEXT,
|
|
tags VARCHAR[] NOT NULL,
|
|
blocks JSONB NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT now (),
|
|
modified_at TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE audit (
|
|
actor UUID REFERENCES users(id) ON DELETE SET NULL,
|
|
object UUID,
|
|
action VARCHAR NOT NULL,
|
|
data JSONB,
|
|
created_at TIMESTAMP
|
|
); |