memos/store/migration/postgres/prod/LATEST__SCHEMA.sql

133 lines
3.4 KiB
MySQL
Raw Normal View History

-- migration_history
CREATE TABLE migration_history (
2023-12-09 12:05:45 +08:00
version TEXT NOT NULL PRIMARY KEY,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW())
);
-- system_setting
CREATE TABLE system_setting (
2023-12-09 12:05:45 +08:00
name TEXT NOT NULL PRIMARY KEY,
value TEXT NOT NULL,
description TEXT NOT NULL
);
-- user
CREATE TABLE "user" (
id SERIAL PRIMARY KEY,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
updated_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
2023-12-09 12:05:45 +08:00
row_status TEXT NOT NULL DEFAULT 'NORMAL',
username TEXT NOT NULL UNIQUE,
role TEXT NOT NULL DEFAULT 'USER',
email TEXT NOT NULL DEFAULT '',
nickname TEXT NOT NULL DEFAULT '',
password_hash TEXT NOT NULL,
2024-03-13 21:24:16 +08:00
avatar_url TEXT NOT NULL,
description TEXT NOT NULL DEFAULT ''
);
-- user_setting
CREATE TABLE user_setting (
2023-12-09 12:05:45 +08:00
user_id INTEGER NOT NULL,
key TEXT NOT NULL,
value TEXT NOT NULL,
2023-12-09 12:05:45 +08:00
UNIQUE(user_id, key)
);
-- memo
CREATE TABLE memo (
id SERIAL PRIMARY KEY,
2024-03-20 20:39:16 +08:00
uid TEXT NOT NULL UNIQUE,
2023-12-09 12:05:45 +08:00
creator_id INTEGER NOT NULL,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
updated_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
2023-12-09 12:05:45 +08:00
row_status TEXT NOT NULL DEFAULT 'NORMAL',
content TEXT NOT NULL,
2024-05-08 20:03:01 +08:00
visibility TEXT NOT NULL DEFAULT 'PRIVATE',
2024-05-10 23:02:57 +08:00
tags JSONB NOT NULL DEFAULT '[]',
payload JSONB NOT NULL DEFAULT '{}'
);
-- memo_organizer
CREATE TABLE memo_organizer (
2023-12-09 12:05:45 +08:00
memo_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
pinned INTEGER NOT NULL DEFAULT 0,
UNIQUE(memo_id, user_id)
);
-- memo_relation
CREATE TABLE memo_relation (
2023-12-09 12:05:45 +08:00
memo_id INTEGER NOT NULL,
related_memo_id INTEGER NOT NULL,
type TEXT NOT NULL,
UNIQUE(memo_id, related_memo_id, type)
);
-- resource
CREATE TABLE resource (
id SERIAL PRIMARY KEY,
2024-03-20 20:39:16 +08:00
uid TEXT NOT NULL UNIQUE,
2023-12-09 12:05:45 +08:00
creator_id INTEGER NOT NULL,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
updated_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
filename TEXT NOT NULL,
blob BYTEA,
2023-12-09 12:05:45 +08:00
type TEXT NOT NULL DEFAULT '',
size INTEGER NOT NULL DEFAULT 0,
2024-05-02 21:28:06 +08:00
memo_id INTEGER DEFAULT NULL,
storage_type TEXT NOT NULL DEFAULT '',
reference TEXT NOT NULL DEFAULT '',
payload TEXT NOT NULL DEFAULT '{}'
);
-- activity
CREATE TABLE activity (
id SERIAL PRIMARY KEY,
2023-12-09 12:05:45 +08:00
creator_id INTEGER NOT NULL,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
2023-12-09 12:05:45 +08:00
type TEXT NOT NULL DEFAULT '',
level TEXT NOT NULL DEFAULT 'INFO',
payload JSONB NOT NULL DEFAULT '{}'
);
-- idp
CREATE TABLE idp (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
type TEXT NOT NULL,
2023-12-09 12:05:45 +08:00
identifier_filter TEXT NOT NULL DEFAULT '',
config JSONB NOT NULL DEFAULT '{}'
);
-- inbox
CREATE TABLE inbox (
id SERIAL PRIMARY KEY,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
2023-12-09 12:05:45 +08:00
sender_id INTEGER NOT NULL,
receiver_id INTEGER NOT NULL,
status TEXT NOT NULL,
message TEXT NOT NULL
);
-- webhook
CREATE TABLE webhook (
id SERIAL PRIMARY KEY,
2023-12-09 23:19:57 +08:00
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
updated_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
row_status TEXT NOT NULL DEFAULT 'NORMAL',
2023-12-09 12:05:45 +08:00
creator_id INTEGER NOT NULL,
name TEXT NOT NULL,
url TEXT NOT NULL
2023-12-09 12:05:45 +08:00
);
2024-02-09 21:59:45 +08:00
-- reaction
CREATE TABLE reaction (
id SERIAL PRIMARY KEY,
created_ts BIGINT NOT NULL DEFAULT EXTRACT(EPOCH FROM NOW()),
creator_id INTEGER NOT NULL,
content_id TEXT NOT NULL,
reaction_type TEXT NOT NULL,
UNIQUE(creator_id, content_id, reaction_type)
);