-- ====================================================
--  قاعدة بيانات Habit Recovery Controller
--  أبسط تصميم ممكن - MySQL فقط
-- ====================================================

CREATE DATABASE IF NOT EXISTS habit_recovery
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE habit_recovery;

-- ----------------------------------------------------
-- إنشاء مستخدم مخصص لقاعدة البيانات (أفضل من استخدام root مباشرة)
-- نمنحه صلاحيات على habit_recovery فقط من localhost ومن 127.0.0.1
-- (بعض إعدادات MySQL/MariaDB تفرّق بين الاتصال عبر socket و TCP،
--  لذلك نضمن عمل الاتصال بكل الطريقتين)
-- ⚠️ غيّر كلمة المرور هنا قبل الاستخدام في بيئة حقيقية (إنتاج)
-- ----------------------------------------------------
CREATE USER IF NOT EXISTS 'habit_app'@'localhost' IDENTIFIED BY 'HabitApp@2026';
CREATE USER IF NOT EXISTS 'habit_app'@'127.0.0.1' IDENTIFIED BY 'HabitApp@2026';
GRANT ALL PRIVILEGES ON habit_recovery.* TO 'habit_app'@'localhost';
GRANT ALL PRIVILEGES ON habit_recovery.* TO 'habit_app'@'127.0.0.1';
FLUSH PRIVILEGES;

-- ----------------------------------------------------
-- حالة الحملة الحالية (صف واحد فقط دائماً، id = 1)
-- ----------------------------------------------------
CREATE TABLE IF NOT EXISTS campaign_status (
    id          INT PRIMARY KEY DEFAULT 1,
    status      ENUM('off','on','emergency') NOT NULL DEFAULT 'off',
    updated_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
                ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

INSERT INTO campaign_status (id, status)
VALUES (1, 'off')
ON DUPLICATE KEY UPDATE id = id;

-- ----------------------------------------------------
-- الرسائل النصية التحفيزية
-- ----------------------------------------------------
CREATE TABLE IF NOT EXISTS messages (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    content     TEXT NOT NULL,
    is_active   TINYINT(1) NOT NULL DEFAULT 1,
    created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- بعض الرسائل الافتراضية للتجربة (تُدرج فقط إذا كان الجدول فارغاً،
-- لتجنّب التكرار في حال إعادة تنفيذ هذا الملف)
INSERT INTO messages (content)
SELECT content FROM (
    SELECT 'كل لحظة تصمد فيها هي انتصار يُبنى عليه. استمر.' AS content UNION ALL
    SELECT 'تذكّر سبب بدايتك. أنت أقوى من أي رغبة عابرة.' UNION ALL
    SELECT 'العادة لا تُكسر بقرار واحد، بل بألف لحظة صمود صغيرة. هذه واحدة منها.'
) AS seed_messages
WHERE NOT EXISTS (SELECT 1 FROM messages);

-- ----------------------------------------------------
-- الرسائل الصوتية (تحويل نص TTS أو رفع ملف mp3)
-- ----------------------------------------------------
CREATE TABLE IF NOT EXISTS audio_files (
    id           INT AUTO_INCREMENT PRIMARY KEY,
    title        VARCHAR(255) NOT NULL,
    source_type  ENUM('tts','upload') NOT NULL DEFAULT 'upload',
    source_text  TEXT NULL,            -- النص الأصلي في حالة TTS فقط
    file_path    VARCHAR(500) NOT NULL,
    is_active    TINYINT(1) NOT NULL DEFAULT 1,
    created_at   DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ----------------------------------------------------
-- إعدادات قابلة للتعديل (مفتاح / قيمة)
-- ----------------------------------------------------
CREATE TABLE IF NOT EXISTS settings (
    `key`    VARCHAR(100) PRIMARY KEY,
    `value`  VARCHAR(500) NOT NULL
) ENGINE=InnoDB;

INSERT INTO settings (`key`, `value`) VALUES
('normal_interval_minutes', '60'),
('emergency_interval_seconds', '30')
ON DUPLICATE KEY UPDATE `value` = VALUES(`value`);

-- ----------------------------------------------------
-- سجل الإشعارات المُرسلة (لعرضها في اللوحة وتفعيل التنبيه بالمتصفح)
-- ----------------------------------------------------
CREATE TABLE IF NOT EXISTS notification_log (
    id            INT AUTO_INCREMENT PRIMARY KEY,
    type          ENUM('normal','emergency') NOT NULL,
    message_text  TEXT NULL,
    audio_path    VARCHAR(500) NULL,
    sent_at       DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
