-- ============================================================
--  Migration: پشتیبانی از چند پروسیجر در هر فرایند
--  Shadi Clinic Nursing — افزودن جدول record_procedures
-- ------------------------------------------------------------
--  این فایل «افزایشی» است: هیچ جدولی را بازنویسی/حذف نمی‌کند.
--  جدول جدید را می‌سازد و داده‌ی تک‌پروسیجرِ فعلی را به آن منتقل می‌کند.
--  اجرای مجدد امن است (IF NOT EXISTS + NOT EXISTS).
--
--  منطق جدید:
--   • بی‌حسی یک‌بار و مشترک برای کل فرایند → روی nursing_records می‌ماند
--     (numbing_started_at / numbing_ended_at / numbing_duration_minutes).
--   • هر پروسیجر شروع/پایان جداگانه دارد → در record_procedures.
--   • ستون‌های قدیمیِ procedure_* روی nursing_records برای سازگاری گزارش‌های
--     قبلی حفظ می‌شوند (با بازه‌ی کلی پروسیجرها همگام می‌مانند).
-- ============================================================
SET NAMES utf8mb4;

/* جدول پروسیجرهای هر فرایند (چند ردیف برای هر رکورد) */
CREATE TABLE IF NOT EXISTS `record_procedures` (
  `id`               INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `record_id`        INT UNSIGNED NOT NULL,
  `procedure_id`     INT UNSIGNED DEFAULT NULL,
  `sort_order`       INT          NOT NULL DEFAULT 0,
  `started_at`       DATETIME     DEFAULT NULL,
  `ended_at`         DATETIME     DEFAULT NULL,
  `duration_minutes` INT          DEFAULT NULL,
  `created_at`       DATETIME     DEFAULT NULL,
  `updated_at`       DATETIME     DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_record` (`record_id`),
  KEY `idx_procedure` (`procedure_id`),
  KEY `idx_record_sort` (`record_id`,`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

/* انتقال داده‌ی موجود: هر رکوردِ تک‌پروسیجر → یک ردیف در record_procedures
   (فقط رکوردهایی که هنوز منتقل نشده‌اند) */
INSERT INTO `record_procedures`
  (`record_id`,`procedure_id`,`sort_order`,`started_at`,`ended_at`,`duration_minutes`,`created_at`,`updated_at`)
SELECT
  r.`id`, r.`procedure_id`, 0,
  r.`procedure_started_at`, r.`procedure_ended_at`, r.`procedure_duration_minutes`,
  COALESCE(r.`created_at`, NOW()), COALESCE(r.`updated_at`, NOW())
FROM `nursing_records` r
WHERE r.`procedure_id` IS NOT NULL
  AND NOT EXISTS (
    SELECT 1 FROM `record_procedures` rp WHERE rp.`record_id` = r.`id`
  );

-- ============================================================
--  Rollback (در صورت نیاز):
--    DROP TABLE IF EXISTS `record_procedures`;
--  (ستون‌های nursing_records دست‌نخورده باقی مانده‌اند.)
-- ============================================================
