-- ساختار دیتابیس برای مینی اپ تلگرام
-- نام دیتابیس: telegram_mini_app

-- جدول کاربران (Users)
CREATE TABLE `users` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `telegram_id` BIGINT UNIQUE NOT NULL COMMENT 'شناسه عددی تلگرام کاربر',
  `username` VARCHAR(255) NOT NULL COMMENT 'نام کاربری انتخابی کاربر در مینی اپ',
  `telegram_username` VARCHAR(255) NULL COMMENT 'نام کاربری تلگرام (اختیاری)',
  `first_name` VARCHAR(255) NULL COMMENT 'نام تلگرام کاربر',
  `is_admin` BOOLEAN DEFAULT FALSE COMMENT 'وضعیت ادمین بودن',
  `is_banned` BOOLEAN DEFAULT FALSE COMMENT 'وضعیت بن بودن در چت و ...',
  `last_name_change_request_date` DATE NULL COMMENT 'تاریخ آخرین درخواست تغییر نام',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- جدول دسته‌بندی‌ها (Categories)
CREATE TABLE `categories` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `title` VARCHAR(255) NOT NULL,
  `sort_order` INT DEFAULT 0
);

-- جدول آیتم‌ها (Items)
CREATE TABLE `items` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `category_id` INT,
  `title` VARCHAR(255) NOT NULL,
  `description` TEXT,
  `image_url` VARCHAR(512) NULL COMMENT 'لینک تصویر آیتم',
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON DELETE CASCADE
);

-- جدول درخواست‌های تغییر نام (Name Change Requests)
CREATE TABLE `name_change_requests` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `user_id` BIGINT NOT NULL COMMENT 'شناسه تلگرام کاربر',
  `old_username` VARCHAR(255) NOT NULL,
  `new_username` VARCHAR(255) NOT NULL,
  `status` ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
  `requested_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- جدول اعلان‌ها (Notifications)
CREATE TABLE `notifications` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `user_id` BIGINT NULL COMMENT 'اگر NULL باشد، اعلان عمومی است',
  `message` TEXT NOT NULL,
  `is_read` BOOLEAN DEFAULT FALSE,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- جدول پیام‌های چت عمومی (Chat Messages)
CREATE TABLE `chat_messages` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `user_id` BIGINT NOT NULL COMMENT 'شناسه تلگرام کاربر ارسال کننده',
  `username` VARCHAR(255) NOT NULL COMMENT 'نام کاربری مینی اپ ارسال کننده',
  `message` TEXT NOT NULL,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- داده‌های اولیه: یک ادمین و یک دسته‌بندی نمونه
INSERT INTO `users` (`telegram_id`, `username`, `is_admin`, `first_name`) VALUES (5641303137, 'AdminUser', TRUE, 'مدیر نمونه');
INSERT INTO `categories` (`title`) VALUES ('دسته‌بندی نمونه ۱');
INSERT INTO `items` (`category_id`, `title`, `description`, `image_url`) VALUES (1, 'آیتم ویژه', 'این یک آیتم نمونه با توضیحات کامل است.', 'https://placehold.co/400x200/4F46E5/ffffff?text=آیتم');