Initial commit

This commit is contained in:
unknown
2026-05-22 02:52:15 +02:00
commit 125321c418
55 changed files with 9231 additions and 0 deletions

58
migrations/001_init.sql Normal file
View File

@@ -0,0 +1,58 @@
CREATE TABLE users (
id INTEGER PRIMARY KEY,
telegram_username TEXT,
first_name TEXT NOT NULL,
role TEXT NOT NULL DEFAULT 'user'
CHECK (role IN ('user', 'admin', 'banned')),
accepted_terms_at DATETIME,
created_at DATETIME NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE contents (
id TEXT PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
status TEXT NOT NULL DEFAULT 'active'
CHECK (status IN ('staged', 'active', 'deleted', 'blacklisted')),
view_count INTEGER NOT NULL DEFAULT 0,
max_views INTEGER,
allow_download INTEGER NOT NULL DEFAULT 1,
password_hash TEXT,
created_at DATETIME NOT NULL DEFAULT (datetime('now')),
deleted_at DATETIME
);
CREATE TABLE content_files (
content_id TEXT NOT NULL REFERENCES contents(id),
file_index INTEGER NOT NULL DEFAULT 0,
original_name TEXT NOT NULL,
stored_path TEXT NOT NULL UNIQUE,
mime_type TEXT NOT NULL,
size_bytes INTEGER NOT NULL,
ciphertext_size_bytes INTEGER NOT NULL,
encrypted_key_wrapped BLOB NOT NULL,
encrypted_hash BLOB NOT NULL,
render_flags INTEGER NOT NULL DEFAULT 0,
created_at DATETIME NOT NULL DEFAULT (datetime('now')),
PRIMARY KEY (content_id, file_index)
);
CREATE TABLE reports (
id INTEGER PRIMARY KEY AUTOINCREMENT,
content_id TEXT NOT NULL REFERENCES contents(id),
reporter_user_id INTEGER NOT NULL REFERENCES users(id),
reason TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'open'
CHECK (status IN ('open', 'dismissed', 'actioned')),
created_at DATETIME NOT NULL DEFAULT (datetime('now')),
resolved_at DATETIME,
resolver_id INTEGER REFERENCES users(id)
);
CREATE TABLE admin_actions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
admin_user_id INTEGER NOT NULL REFERENCES users(id),
target_type TEXT NOT NULL CHECK (target_type IN ('content', 'user')),
target_id TEXT NOT NULL,
action TEXT NOT NULL CHECK (action IN ('delete', 'blacklist', 'ignore')),
created_at DATETIME NOT NULL DEFAULT (datetime('now'))
);