CREATE DATABASE IF NOT EXISTS my_database DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE my_database;

-- اول این کوئری را در دیتابیس اجرا کنید:
ALTER TABLE file ADD FULLTEXT(caption, title, description, tags);
-- جدول کاربران
CREATE TABLE user (
    id INT(11) NOT NULL AUTO_INCREMENT,
    from_id VARCHAR(20) NOT NULL,
    step VARCHAR(50) DEFAULT 'none',
    downloads INT(20) DEFAULT 0,
    getFile VARCHAR(255) DEFAULT 'none',
    status VARCHAR(40) DEFAULT 'active',
    update_at INT(20) DEFAULT NULL,
    create_at INT(20) DEFAULT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY from_id (from_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- جدول فایل‌ها
CREATE TABLE file (
    num INT(11) NOT NULL AUTO_INCREMENT,
    id VARCHAR(20) NOT NULL,
    type VARCHAR(50) DEFAULT 'none',
    file_id VARCHAR(255) DEFAULT NULL,
    caption TEXT DEFAULT NULL,
    password VARCHAR(255) DEFAULT NULL,
    user_id VARCHAR(20) DEFAULT NULL,
    file_size BIGINT(20) DEFAULT 0,
    downloads INT(11) DEFAULT 0,
    likes INT DEFAULT 0,
    dislikes INT DEFAULT 0,
    date DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (num),
    INDEX (user_id),
    FOREIGN KEY (user_id) REFERENCES user(from_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE file ADD COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP;

-- جدول لایک‌ها و دیس‌لایک‌ها
CREATE TABLE likes (
    id INT(11) NOT NULL AUTO_INCREMENT,
    file_id VARCHAR(20) NOT NULL,
    user_id VARCHAR(20) NOT NULL,
    status ENUM('like', 'dislike') NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY unique_like (file_id, user_id),
    FOREIGN KEY (file_id) REFERENCES file(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES user(from_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- جدول حذف پیام‌ها
CREATE TABLE del (
    num INT(11) NOT NULL AUTO_INCREMENT,
    id VARCHAR(20) DEFAULT NULL,
    user_id VARCHAR(20) DEFAULT NULL,
    message_id VARCHAR(20) DEFAULT NULL,
    timeDel INT(20) DEFAULT 0,
    PRIMARY KEY (num),
    INDEX (user_id),
    FOREIGN KEY (user_id) REFERENCES user(from_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- جدول تنظیمات
CREATE TABLE settings (
    id INT(11) NOT NULL AUTO_INCREMENT,
    type VARCHAR(50) NOT NULL,
    type_id VARCHAR(50) NOT NULL,
    columnOne TEXT DEFAULT NULL,
    columnTwo TEXT DEFAULT NULL,
    PRIMARY KEY (id),
    INDEX (type, type_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- جدول ارسال پیام
CREATE TABLE send (
    step VARCHAR(50) NOT NULL,
    text TEXT NOT NULL,
    from VARCHAR(20) NOT NULL DEFAULT '0',
    user INT(11) NOT NULL DEFAULT 0,
    FOREIGN KEY (from) REFERENCES user(from_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- جدول گروه‌های آپلود (فیلم/سریال)
CREATE TABLE group_uploads (
    id INT(11) NOT NULL AUTO_INCREMENT,
    user_id VARCHAR(20) NOT NULL,
    upload_type ENUM('movie', 'series') NOT NULL,
    title VARCHAR(255) NOT NULL,
    description TEXT DEFAULT NULL,
    cover_file_id VARCHAR(255) DEFAULT NULL,
    status ENUM('pending', 'completed') DEFAULT 'pending',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    FOREIGN KEY (user_id) REFERENCES user(from_id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- جدول فایل‌های گروه آپلود (اپیزودها و قسمت‌ها)
CREATE TABLE group_files (
    id INT(11) NOT NULL AUTO_INCREMENT,
    group_id INT(11) NOT NULL,
    file_id VARCHAR(255) NOT NULL,
    caption TEXT DEFAULT NULL,
    season INT(4) DEFAULT NULL,
    episode INT(4) DEFAULT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    FOREIGN KEY (group_id) REFERENCES group_uploads(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- اضافه کردن فیلدهای جدید به جدول file
ALTER TABLE file
ADD COLUMN imdb_rating FLOAT DEFAULT 0,
ADD COLUMN year INT DEFAULT 0,
ADD COLUMN genre VARCHAR(100) DEFAULT '',
ADD COLUMN director VARCHAR(100) DEFAULT '',
ADD COLUMN cast TEXT DEFAULT '';

MATCH(caption, title, description, tags) AGAINST('$searchQuery' IN NATURAL LANGUAGE MODE)

-- ایجاد جدول برای ذخیره اطلاعات IMDb
CREATE TABLE imdb_info (
    id INT AUTO_INCREMENT PRIMARY KEY,
    file_id VARCHAR(20) NOT NULL,
    title VARCHAR(255) NOT NULL,
    year INT NOT NULL,
    rating FLOAT NOT NULL,
    genre VARCHAR(255) NOT NULL,
    director VARCHAR(255) NOT NULL,
    plot TEXT NOT NULL,
    poster_url VARCHAR(255) NOT NULL,
    FOREIGN KEY (file_id) REFERENCES file(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;