kopia lustrzana https://github.com/cloudflare/wildebeest
186 wiersze
5.8 KiB
SQL
186 wiersze
5.8 KiB
SQL
-- Migration number: 0000 2022-12-05T20:27:34.391Z
|
|
|
|
PRAGMA foreign_keys = ON;
|
|
|
|
CREATE TABLE IF NOT EXISTS actors (
|
|
id TEXT PRIMARY KEY,
|
|
type TEXT NOT NULL,
|
|
email TEXT,
|
|
privkey BLOB,
|
|
privkey_salt BLOB,
|
|
pubkey TEXT,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
properties TEXT NOT NULL DEFAULT (json_object())
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS actors_email ON actors(email);
|
|
|
|
CREATE TABLE IF NOT EXISTS actor_following (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
target_actor_id TEXT NOT NULL,
|
|
target_actor_acct TEXT NOT NULL,
|
|
state TEXT NOT NULL DEFAULT 'pending',
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(target_actor_id) REFERENCES actors(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS actor_following_actor_id ON actor_following(actor_id);
|
|
CREATE INDEX IF NOT EXISTS actor_following_target_actor_id ON actor_following(target_actor_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS objects (
|
|
id TEXT PRIMARY KEY,
|
|
mastodon_id TEXT UNIQUE NOT NULL,
|
|
type TEXT NOT NULL,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
original_actor_id TEXT,
|
|
original_object_id TEXT UNIQUE,
|
|
reply_to_object_id TEXT,
|
|
properties TEXT NOT NULL DEFAULT (json_object()),
|
|
local INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS inbox_objects (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
object_id TEXT NOT NULL,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(object_id) REFERENCES objects(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS outbox_objects (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
object_id TEXT NOT NULL,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
published_date DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(object_id) REFERENCES objects(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS actor_notifications (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
type TEXT NOT NULL,
|
|
actor_id TEXT NOT NULL,
|
|
from_actor_id TEXT NOT NULL,
|
|
object_id TEXT,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(from_actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(object_id) REFERENCES objects(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS actor_notifications_actor_id ON actor_notifications(actor_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS actor_favourites (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
object_id TEXT NOT NULL,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(object_id) REFERENCES objects(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS actor_favourites_actor_id ON actor_favourites(actor_id);
|
|
CREATE INDEX IF NOT EXISTS actor_favourites_object_id ON actor_favourites(object_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS actor_reblogs (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
object_id TEXT NOT NULL,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(object_id) REFERENCES objects(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS actor_reblogs_actor_id ON actor_reblogs(actor_id);
|
|
CREATE INDEX IF NOT EXISTS actor_reblogs_object_id ON actor_reblogs(object_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS clients (
|
|
id TEXT PRIMARY KEY,
|
|
secret TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
redirect_uris TEXT NOT NULL,
|
|
website TEXT,
|
|
scopes TEXT,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS subscriptions (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
client_id TEXT NOT NULL,
|
|
endpoint TEXT NULL,
|
|
key_p256dh TEXT NOT NULL,
|
|
key_auth TEXT NOT NULL,
|
|
alert_mention INTEGER NOT NULL,
|
|
alert_status INTEGER NOT NULL,
|
|
alert_reblog INTEGER NOT NULL,
|
|
alert_follow INTEGER NOT NULL,
|
|
alert_follow_request INTEGER NOT NULL,
|
|
alert_favourite INTEGER NOT NULL,
|
|
alert_poll INTEGER NOT NULL,
|
|
alert_update INTEGER NOT NULL,
|
|
alert_admin_sign_up INTEGER NOT NULL,
|
|
alert_admin_report INTEGER NOT NULL,
|
|
policy TEXT,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
UNIQUE(actor_id, client_id)
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(client_id) REFERENCES clients(id)
|
|
);
|
|
|
|
CREATE VIRTUAL TABLE IF NOT EXISTS search_fts USING fts5 (
|
|
type,
|
|
name,
|
|
preferredUsername,
|
|
status
|
|
);
|
|
|
|
CREATE TRIGGER IF NOT EXISTS actors_search_fts_insert AFTER INSERT ON actors
|
|
BEGIN
|
|
INSERT INTO search_fts (rowid, type, name, preferredUsername)
|
|
VALUES (new.rowid,
|
|
new.type,
|
|
json_extract(new.properties, '$.name'),
|
|
json_extract(new.properties, '$.preferredUsername'));
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS actors_search_fts_delete AFTER DELETE ON actors
|
|
BEGIN
|
|
DELETE FROM search_fts WHERE rowid=old.rowid;
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS actors_search_fts_update AFTER UPDATE ON actors
|
|
BEGIN
|
|
DELETE FROM search_fts WHERE rowid=old.rowid;
|
|
INSERT INTO search_fts (rowid, type, name, preferredUsername)
|
|
VALUES (new.rowid,
|
|
new.type,
|
|
json_extract(new.properties, '$.name'),
|
|
json_extract(new.properties, '$.preferredUsername'));
|
|
END;
|
|
|
|
CREATE TABLE IF NOT EXISTS actor_replies (
|
|
id TEXT PRIMARY KEY,
|
|
actor_id TEXT NOT NULL,
|
|
object_id TEXT NOT NULL,
|
|
in_reply_to_object_id TEXT NOT NULL,
|
|
cdate DATETIME NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),
|
|
|
|
FOREIGN KEY(actor_id) REFERENCES actors(id),
|
|
FOREIGN KEY(object_id) REFERENCES objects(id)
|
|
FOREIGN KEY(in_reply_to_object_id) REFERENCES objects(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS actor_replies_in_reply_to_object_id ON actor_replies(in_reply_to_object_id);
|