66 lines
2.7 KiB
SQL
66 lines
2.7 KiB
SQL
PRAGMA journal_mode=WAL;
|
|
PRAGMA foreign_keys=ON;
|
|
|
|
CREATE TABLE IF NOT EXISTS organizations (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
-- Белый список телефонов по организациям.
|
|
-- phone хранится только цифрами, напр. "79001234567"
|
|
CREATE TABLE IF NOT EXISTS org_users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
org_id INTEGER NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
phone TEXT NOT NULL,
|
|
display_name TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
UNIQUE(phone)
|
|
);
|
|
|
|
-- Реальные пользователи MAX, которые написали боту
|
|
CREATE TABLE IF NOT EXISTS bot_users (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
max_user_id INTEGER NOT NULL UNIQUE,
|
|
max_chat_id INTEGER,
|
|
username TEXT,
|
|
first_name TEXT,
|
|
phone TEXT, -- заполняется после шаринга контакта
|
|
org_id INTEGER REFERENCES organizations(id),
|
|
is_authorized INTEGER NOT NULL DEFAULT 0, -- 1 = авторизован
|
|
is_blocked INTEGER NOT NULL DEFAULT 0, -- 1 = заблокирован
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tickets (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
org_id INTEGER NOT NULL REFERENCES organizations(id),
|
|
created_by INTEGER NOT NULL REFERENCES bot_users(id),
|
|
description TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'open', -- open / in_progress / closed
|
|
last_comment TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS ticket_attachments (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ticket_id INTEGER NOT NULL REFERENCES tickets(id) ON DELETE CASCADE,
|
|
attachment_type TEXT NOT NULL, -- image / audio / file / video
|
|
attachment_url TEXT,
|
|
filename TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|
|
|
|
-- Лог всех входящих и исходящих сообщений
|
|
CREATE TABLE IF NOT EXISTS message_log (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
direction TEXT NOT NULL, -- 'in' / 'out'
|
|
max_user_id INTEGER,
|
|
max_chat_id INTEGER,
|
|
message_id TEXT,
|
|
text TEXT,
|
|
attachment_json TEXT, -- JSON-строка списка вложений
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
);
|