70 lines
2.0 KiB
SQL
70 lines
2.0 KiB
SQL
-- sql goes here
|
|
CREATE TABLE IF NOT EXISTS 'users' (
|
|
id INTEGER PRIMARY KEY,
|
|
tgb_id INTEGER NOT NULL UNIQUE,
|
|
username TEXT,
|
|
first_name TEXT,
|
|
last_name TEXT,
|
|
created INTEGER NOT NULL,
|
|
edited INTEGER NOT NULL,
|
|
deleted INTEGER
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS tgb_id_user_index ON 'users' (tgb_id);
|
|
|
|
CREATE TABLE IF NOT EXISTS 'visits' (
|
|
id INTEGER PRIMARY KEY,
|
|
tgb_id INTEGER NOT NULL,
|
|
quantity INTEGER,
|
|
edited INTEGER,
|
|
FOREIGN KEY(tgb_id) REFERENCES users(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS tgb_id_visit_index ON 'users' (tgb_id);
|
|
|
|
CREATE TRIGGER IF NOT EXISTS check_daily_visits
|
|
BEFORE INSERT ON 'users'
|
|
BEGIN
|
|
INSERT OR IGNORE INTO 'visits' (tgb_id, quantity, edited)
|
|
VALUES (new.tgb_id, 1, strftime('%s', 'now'));
|
|
END;
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS 'bots' (
|
|
id INTEGER PRIMARY KEY,
|
|
bot_name TEXT UNIQUE,
|
|
created INTEGER NOT NULL
|
|
);
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS 'bot_users' (
|
|
id INTEGER PRIMARY KEY,
|
|
tgb_id INTEGER NOT NULL,
|
|
bot_id INTEGER NOT NULL,
|
|
created INTEGER NOT NULL,
|
|
UNIQUE(tgb_id, bot_id),
|
|
FOREIGN KEY(tgb_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(bot_id) REFERENCES bots(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS 'bot_access_requests' (
|
|
id INTEGER PRIMARY KEY,
|
|
tgb_id INTEGER NOT NULL,
|
|
bot_id INTEGER NOT NULL,
|
|
created INTEGER NOT NULL,
|
|
UNIQUE(tgb_id, bot_id),
|
|
FOREIGN KEY(tgb_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(bot_id) REFERENCES bots(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS 'banned_bot_access' (
|
|
id INTEGER PRIMARY KEY,
|
|
tgb_id INTEGER NOT NULL,
|
|
bot_id INTEGER NOT NULL,
|
|
created INTEGER NOT NULL,
|
|
until INTEGER NOT NULL,
|
|
UNIQUE(tgb_id, bot_id),
|
|
FOREIGN KEY(tgb_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
FOREIGN KEY(bot_id) REFERENCES bots(id) ON DELETE CASCADE
|
|
);
|