JIGAIDO is now a platform with apps/ as the container. All telegram-bot files moved to apps/telegram-bot/: - bot.py, commands.py, cron.py, db.py, schema.sql - requirements.txt, .env.example, README.md - Root now holds SPEC.md, README.md, CONTRIBUTING.md only. Structure: jigaido/ ├── apps/ │ └── telegram-bot/ └── SPEC.md, README.md, CONTRIBUTING.md
50 lines
1.8 KiB
SQL
50 lines
1.8 KiB
SQL
-- JIGAIDO Database Schema
|
|
|
|
CREATE TABLE IF NOT EXISTS groups (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
telegram_chat_id INTEGER UNIQUE NOT NULL,
|
|
creator_user_id INTEGER NOT NULL,
|
|
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS group_admins (
|
|
group_id INTEGER REFERENCES groups(id) ON DELETE CASCADE,
|
|
user_id INTEGER NOT NULL,
|
|
PRIMARY KEY (group_id, user_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
telegram_user_id INTEGER UNIQUE NOT NULL,
|
|
username TEXT,
|
|
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS bounties (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
group_id INTEGER REFERENCES groups(id) ON DELETE CASCADE,
|
|
created_by_user_id INTEGER REFERENCES users(id),
|
|
informed_by_username TEXT NOT NULL,
|
|
text TEXT,
|
|
link TEXT,
|
|
due_date_ts INTEGER,
|
|
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
UNIQUE(group_id, link)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_bounty_tracking (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
bounty_id INTEGER NOT NULL REFERENCES bounties(id) ON DELETE CASCADE,
|
|
added_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
UNIQUE(user_id, bounty_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS reminder_log (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
bounty_id INTEGER NOT NULL REFERENCES bounties(id) ON DELETE CASCADE,
|
|
reminded_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
UNIQUE(user_id, bounty_id)
|
|
);
|