weiro/sql/schema/01_init.up.sql

47 lines
1.5 KiB
MySQL
Raw Normal View History

2026-02-19 10:21:27 +00:00
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL,
created_at INTEGER NOT NULL
2026-02-19 10:21:27 +00:00
);
CREATE UNIQUE INDEX idx_users_username ON users (username);
CREATE TABLE sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
owner_id INTEGER NOT NULL,
2026-02-27 22:49:43 +00:00
guid TEXT NOT NULL,
title TEXT NOT NULL,
tagline TEXT NOT NULL,
created_at INTEGER NOT NULL,
2026-02-19 10:21:27 +00:00
FOREIGN KEY (owner_id) REFERENCES users (id) ON DELETE CASCADE
);
2026-02-19 11:29:44 +00:00
CREATE INDEX idx_site_owner ON sites (owner_id);
2026-02-27 22:49:43 +00:00
CREATE UNIQUE INDEX idx_site_guid ON sites (guid);
2026-02-19 10:21:27 +00:00
CREATE TABLE publish_targets (
2026-02-19 11:29:44 +00:00
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id INTEGER NOT NULL,
2026-02-23 10:18:34 +00:00
target_type TEXT NOT NULL,
enabled INT NOT NULL,
2026-02-19 11:29:44 +00:00
base_url TEXT NOT NULL,
target_ref TEXT NOT NULL,
target_key TEXT NOT NULL
2026-02-19 10:21:27 +00:00
);
CREATE INDEX idx_publish_targets_site ON publish_targets (site_id);
CREATE TABLE posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
site_id INTEGER NOT NULL,
2026-02-23 10:18:34 +00:00
state INTEGER NOT NULL,
2026-02-19 10:21:27 +00:00
guid TEXT NOT NULL,
title TEXT NOT NULL,
body TEXT NOT NULL,
slug TEXT NOT NULL,
created_at INTEGER NOT NULL,
2026-02-23 10:18:34 +00:00
updated_at INTEGER NOT NULL,
published_at INTEGER NOT NULL,
deleted_at INTEGER NOT NULL
2026-02-19 10:21:27 +00:00
);
CREATE INDEX idx_post_site ON posts (site_id);
CREATE UNIQUE INDEX idx_post_guid ON posts (guid);