-- ایجاد پایگاه داده در صورتی که وجود نداشته باشد
CREATE DATABASE IF NOT EXISTS golestan_shohada_db CHARACTER SET utf8mb4 COLLATE utf8mb4_persian_ci;

-- انتخاب پایگاه داده برای انجام عملیات
USE golestan_shohada_db;

-- --------------------------------------------------------

--
-- ساختار جدول `martyrs`
-- این جدول اطلاعات اصلی و بیوگرافیک شهدا را نگهداری می‌کند.
-- *** تغییر نسخه 2.0: افزودن ایندکس FULLTEXT برای جستجوی پیشرفته ***
--
CREATE TABLE IF NOT EXISTS `martyrs` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL,
  `lastname` VARCHAR(150) NOT NULL,
  `father_name` VARCHAR(100) DEFAULT NULL,
  `profile_image_url` VARCHAR(255) DEFAULT NULL COMMENT 'URL تصویر اصلی پروفایل',
  `birth_date` DATE DEFAULT NULL,
  `age` INT(3) DEFAULT NULL COMMENT 'سن در زمان شهادت',
  `martyrdom_date` DATE DEFAULT NULL COMMENT 'تاریخ شهادت',
  `operation_name` VARCHAR(255) DEFAULT NULL COMMENT 'نام عملیاتی که منجر به شهادت شده',
  `martyrdom_location` TEXT DEFAULT NULL COMMENT 'محل شهادت',
  `tomb_location` TEXT DEFAULT NULL COMMENT 'آدرس مزار',
  `location_details` TEXT DEFAULT NULL COMMENT 'اطلاعات تکمیلی موقعیت مکانی',
  `biography` TEXT DEFAULT NULL COMMENT 'متن کامل زندگی‌نامه شهید',
  `will_text` TEXT DEFAULT NULL COMMENT 'متن کامل وصیت‌نامه شهید',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `ft_martyr_search` (`name`, `lastname`, `father_name`, `biography`, `will_text`, `operation_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `memories`
-- این جدول خاطرات مرتبط با هر شهید را نگهداری می‌کند.
-- *** تغییر نسخه 2.0: افزودن ایندکس FULLTEXT برای جستجوی پیشرفته ***
--
CREATE TABLE IF NOT EXISTS `memories` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `martyr_id` INT(11) NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `narrator` VARCHAR(255) DEFAULT NULL COMMENT 'راوی خاطره',
  `memory_text` TEXT NOT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `martyr_id_fk` (`martyr_id`),
  CONSTRAINT `memories_martyr_id_fk` FOREIGN KEY (`martyr_id`) REFERENCES `martyrs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  FULLTEXT KEY `ft_memory_search` (`title`, `narrator`, `memory_text`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `martyr_images`
-- این جدول تصاویر گالری هر شهید را نگهداری می‌کند.
--
CREATE TABLE IF NOT EXISTS `martyr_images` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `martyr_id` INT(11) NOT NULL,
  `title` VARCHAR(255) DEFAULT NULL,
  `image_url` VARCHAR(255) NOT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `martyr_id_fk_images` (`martyr_id`),
  CONSTRAINT `images_martyr_id_fk` FOREIGN KEY (`martyr_id`) REFERENCES `martyrs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `martyr_videos`
--
CREATE TABLE IF NOT EXISTS `martyr_videos` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `martyr_id` INT(11) NOT NULL,
  `title` VARCHAR(255) NOT NULL COMMENT 'عنوان فایل ویدئویی',
  `video_url` VARCHAR(255) NOT NULL COMMENT 'آدرس URL فایل ویدئویی آپلود شده',
  `thumbnail_url` VARCHAR(255) DEFAULT NULL COMMENT 'آدرس URL تصویر پیش‌نمایش ویدئو (اختیاری)',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `video_martyr_id_fk` (`martyr_id`),
  CONSTRAINT `videos_martyr_id_fk` FOREIGN KEY (`martyr_id`) REFERENCES `martyrs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `martyr_audios`
--
CREATE TABLE IF NOT EXISTS `martyr_audios` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `martyr_id` INT(11) NOT NULL,
  `title` VARCHAR(255) NOT NULL COMMENT 'عنوان فایل صوتی',
  `audio_url` VARCHAR(255) NOT NULL COMMENT 'آدرس URL فایل صوتی آپلود شده',
  `narrator` VARCHAR(255) DEFAULT NULL COMMENT 'راوی صوت',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `audio_martyr_id_fk` (`martyr_id`),
  CONSTRAINT `audios_martyr_id_fk` FOREIGN KEY (`martyr_id`) REFERENCES `martyrs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `operations`
--
CREATE TABLE IF NOT EXISTS `operations` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL COMMENT 'نام کامل عملیات (مثلا: بیت المقدس)',
  `code_name` VARCHAR(255) DEFAULT NULL COMMENT 'اسم رمز عملیات (مثلا: یا علی ابن ابی طالب)',
  `start_date` DATE DEFAULT NULL,
  `end_date` DATE DEFAULT NULL,
  `description` TEXT DEFAULT NULL COMMENT 'شرح و جزئیات عملیات',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `martyr_operations` (جدول واسط)
--
CREATE TABLE IF NOT EXISTS `martyr_operations` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `martyr_id` INT(11) NOT NULL,
  `operation_id` INT(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `martyr_id_fk_pivot` (`martyr_id`),
  KEY `operation_id_fk_pivot` (`operation_id`),
  UNIQUE KEY `unique_martyr_operation` (`martyr_id`, `operation_id`),
  CONSTRAINT `martyr_operations_martyr_id_fk` FOREIGN KEY (`martyr_id`) REFERENCES `martyrs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `martyr_operations_operation_id_fk` FOREIGN KEY (`operation_id`) REFERENCES `operations` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;


-- --------------------------------------------------------

--
-- ساختار جدول `admins`
--
CREATE TABLE IF NOT EXISTS `admins` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(50) NOT NULL UNIQUE COMMENT 'نام کاربری برای ورود، باید یکتا باشد',
  `password_hash` VARCHAR(255) NOT NULL COMMENT 'رمز عبور هش شده با الگوریتم Bcrypt',
  `full_name` VARCHAR(100) DEFAULT NULL COMMENT 'نام کامل مدیر',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جدول `user_submitted_memories`
--
CREATE TABLE IF NOT EXISTS `user_submitted_memories` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `martyr_id` INT(11) NOT NULL COMMENT 'شناسه شهیدی که خاطره مربوط به اوست',
  `submitted_by_name` VARCHAR(255) NOT NULL COMMENT 'نام ارسال‌کننده خاطره',
  `submitted_by_contact` VARCHAR(255) DEFAULT NULL COMMENT 'اطلاعات تماس ارسال‌کننده (اختیاری)',
  `title` VARCHAR(255) DEFAULT NULL COMMENT 'عنوان خاطره',
  `narrator` VARCHAR(255) DEFAULT NULL COMMENT 'راوی اصلی خاطره (که توسط کاربر وارد می‌شود)',
  `memory_text` TEXT NOT NULL COMMENT 'متن کامل خاطره ارسالی',
  `status` ENUM('pending', 'approved', 'rejected') NOT NULL DEFAULT 'pending' COMMENT 'وضعیت خاطره: در انتظار تایید، تایید شده، رد شده',
  `submitted_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'زمان ارسال خاطره',
  PRIMARY KEY (`id`),
  KEY `martyr_id_fk_submitted` (`martyr_id`),
  CONSTRAINT `submitted_memories_martyr_id_fk` FOREIGN KEY (`martyr_id`) REFERENCES `martyrs` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------

--
-- ساختار جداول بخش کمک‌های مومنانه
--
CREATE TABLE IF NOT EXISTS `charity_activities` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL COMMENT 'عنوان اصلی فعالیت',
  `content` TEXT NOT NULL COMMENT 'متن کامل و شرح فعالیت',
  `cover_image_url` VARCHAR(255) DEFAULT NULL COMMENT 'URL تصویر شاخص برای نمایش در لیست',
  `category` ENUM('notice', 'report', 'archive') NOT NULL DEFAULT 'report' COMMENT 'دسته‌بندی فعالیت: اطلاعیه، گزارش، آرشیو',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

CREATE TABLE IF NOT EXISTS `activity_images` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `activity_id` INT(11) NOT NULL,
  `image_url` VARCHAR(255) NOT NULL,
  `title` VARCHAR(255) DEFAULT NULL COMMENT 'عنوان یا توضیح کوتاه برای تصویر (اختیاری)',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `activity_id_fk_images` (`activity_id`),
  CONSTRAINT `images_activity_id_fk` FOREIGN KEY (`activity_id`) REFERENCES `charity_activities` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

CREATE TABLE IF NOT EXISTS `activity_videos` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `activity_id` INT(11) NOT NULL,
  `video_url` VARCHAR(255) NOT NULL,
  `thumbnail_url` VARCHAR(255) DEFAULT NULL COMMENT 'URL تصویر پیش‌نمایش ویدئو (اختیاری)',
  `title` VARCHAR(255) DEFAULT NULL COMMENT 'عنوان یا توضیح کوتاه برای ویدئو (اختیاری)',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `activity_id_fk_videos` (`activity_id`),
  CONSTRAINT `videos_activity_id_fk` FOREIGN KEY (`activity_id`) REFERENCES `charity_activities` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

-- --------------------------------------------------------
--
-- ساختار جداول بخش هیئات مذهبی
--
CREATE TABLE IF NOT EXISTS `religious_meetings` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `content` TEXT NOT NULL,
  `cover_image_url` VARCHAR(255) DEFAULT NULL,
  `category` ENUM('report', 'archive') NOT NULL DEFAULT 'report',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

CREATE TABLE IF NOT EXISTS `religious_meeting_images` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `meeting_id` INT(11) NOT NULL,
  `image_url` VARCHAR(255) NOT NULL,
  `title` VARCHAR(255) DEFAULT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `meeting_id_fk_images` (`meeting_id`),
  CONSTRAINT `religious_images_meeting_id_fk` FOREIGN KEY (`meeting_id`) REFERENCES `religious_meetings` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

CREATE TABLE IF NOT EXISTS `religious_meeting_videos` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `meeting_id` INT(11) NOT NULL,
  `video_url` VARCHAR(255) NOT NULL,
  `thumbnail_url` VARCHAR(255) DEFAULT NULL,
  `title` VARCHAR(255) DEFAULT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `meeting_id_fk_videos` (`meeting_id`),
  CONSTRAINT `religious_videos_meeting_id_fk` FOREIGN KEY (`meeting_id`) REFERENCES `religious_meetings` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;


-- --------------------------------------------------------
--
-- ساختار جداول بخش هیئت عاشقان راه شهدا
--
CREATE TABLE IF NOT EXISTS `ars_meetings` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NOT NULL,
  `content` TEXT NOT NULL,
  `cover_image_url` VARCHAR(255) DEFAULT NULL,
  `category` ENUM('report', 'archive') NOT NULL DEFAULT 'report',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

CREATE TABLE IF NOT EXISTS `ars_meeting_images` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `meeting_id` INT(11) NOT NULL,
  `image_url` VARCHAR(255) NOT NULL,
  `title` VARCHAR(255) DEFAULT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `ars_meeting_id_fk_images` (`meeting_id`),
  CONSTRAINT `ars_images_meeting_id_fk` FOREIGN KEY (`meeting_id`) REFERENCES `ars_meetings` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;

CREATE TABLE IF NOT EXISTS `ars_meeting_videos` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `meeting_id` INT(11) NOT NULL,
  `video_url` VARCHAR(255) NOT NULL,
  `thumbnail_url` VARCHAR(255) DEFAULT NULL,
  `title` VARCHAR(255) DEFAULT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `ars_meeting_id_fk_videos` (`meeting_id`),
  CONSTRAINT `ars_videos_meeting_id_fk` FOREIGN KEY (`meeting_id`) REFERENCES `ars_meetings` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_persian_ci;
