-- سکونت/سازمان
CREATE TABLE tenants (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(150) NOT NULL,
  slug VARCHAR(150) UNIQUE NOT NULL, -- برای URL و ایزولاسیون
  plan ENUM('free','pro','enterprise') DEFAULT 'free',
  is_active BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- کاربران
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tenant_id INT NOT NULL,
  email VARCHAR(190) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  role ENUM('owner','admin','editor','viewer') DEFAULT 'editor',
  is_active BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);

-- آیتم‌های FAQ (دسته و سوال در یک جدول)
CREATE TABLE faq_items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tenant_id INT NOT NULL,
  parent_id INT NULL,
  type ENUM('category','question') NOT NULL,
  title VARCHAR(255) NOT NULL,
  slug VARCHAR(255) NULL,
  content TEXT NULL,
  is_active BOOLEAN DEFAULT TRUE,
  sort_order INT DEFAULT 0,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
  FOREIGN KEY (parent_id) REFERENCES faq_items(id) ON DELETE CASCADE,
  INDEX (tenant_id, parent_id, type, is_active)
);

-- کلیدهای API/Embed (چرخش‌پذیر)
CREATE TABLE api_keys (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tenant_id INT NOT NULL,
  public_key CHAR(24) UNIQUE NOT NULL,
  secret_hash VARCHAR(255) NOT NULL, -- HMAC secrets ذخیره‌شده به صورت هش‌شده
  is_active BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE
);

-- نسخه و انتشار محتوا (اختیاری اما مفید برای کش)
CREATE TABLE faq_releases (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tenant_id INT NOT NULL,
  version INT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (tenant_id) REFERENCES tenants(id) ON DELETE CASCADE,
  UNIQUE (tenant_id, version)
);

-- لاگ دسترسی و نرخ‌سنجی سبک
CREATE TABLE access_logs (
  id BIGINT AUTO_INCREMENT PRIMARY KEY,
  tenant_id INT NOT NULL,
  ip VARBINARY(16) NULL,
  path VARCHAR(255),
  status SMALLINT,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX (tenant_id, ts)
);
