52 lines
1.5 KiB
MySQL
52 lines
1.5 KiB
MySQL
|
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
|
||
|
);
|