-- ساختار دیتابیس SQLite برای ربات کانال‌داری با پنل مدیریت داخل ربات
-- این فایل توسط install.php به صورت خودکار اجرا می‌شود؛ نیازی به اجرای دستی نیست.

CREATE TABLE IF NOT EXISTS templates (
    id         INTEGER PRIMARY KEY AUTOINCREMENT,
    name       TEXT NOT NULL,
    created_at TEXT DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS buttons (
    id          INTEGER PRIMARY KEY AUTOINCREMENT,
    template_id INTEGER NOT NULL,
    row_no      INTEGER NOT NULL DEFAULT 1,
    sort_no     INTEGER NOT NULL DEFAULT 1,
    label       TEXT NOT NULL,
    type        TEXT NOT NULL DEFAULT 'alert' CHECK (type IN ('url','alert','send')),
    value       TEXT,       -- لینک مقصد برای type=url
    content     TEXT,       -- متن پاپ‌آپ (alert) یا پیام خصوصی (send)
    max_views   INTEGER,    -- NULL = نامحدود
    is_active   INTEGER NOT NULL DEFAULT 1,
    FOREIGN KEY (template_id) REFERENCES templates(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS button_views (
    id             INTEGER PRIMARY KEY AUTOINCREMENT,
    button_id      INTEGER NOT NULL,
    user_id        INTEGER NOT NULL,
    view_count     INTEGER NOT NULL DEFAULT 0,
    last_viewed_at TEXT,
    UNIQUE (button_id, user_id),
    FOREIGN KEY (button_id) REFERENCES buttons(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS bot_users (
    user_id      INTEGER PRIMARY KEY,
    username     TEXT,
    first_name   TEXT,
    started_at   TEXT DEFAULT (datetime('now')),
    last_seen_at TEXT
);

CREATE TABLE IF NOT EXISTS posts_log (
    id                 INTEGER PRIMARY KEY AUTOINCREMENT,
    template_id        INTEGER,
    channel_message_id INTEGER,
    message_text       TEXT,
    created_at         TEXT DEFAULT (datetime('now'))
);

-- حالت گفتگوی پنل مدیریت برای هر ادمین (چندمرحله‌ای بودن ساخت/ویرایش دکمه از همینجا مدیریت می‌شود)
CREATE TABLE IF NOT EXISTS admin_sessions (
    admin_id   INTEGER PRIMARY KEY,
    state      TEXT,
    data       TEXT,   -- JSON
    updated_at TEXT DEFAULT (datetime('now'))
);
