-- sql/install.sql
-- Base de données: jalfoodibeagro

-- Table des utilisateurs (avec préfixe dream_)
CREATE TABLE IF NOT EXISTS `dream_utilisateurs` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `civilite` ENUM('M', 'F') NOT NULL,
    `sexe` ENUM('H', 'F') NOT NULL,
    `nom` VARCHAR(100) NOT NULL,
    `prenom` VARCHAR(100) NOT NULL,
    `date_naissance` DATE NOT NULL,
    `tranche_age` VARCHAR(20) DEFAULT NULL,
    `statut_marital` ENUM('celibataire', 'marie', 'divorce', 'veuf', 'separe', 'pacse') NOT NULL,
    `telephone` VARCHAR(50) NOT NULL,
    `indicatif_telephone` VARCHAR(10) NOT NULL DEFAULT '+33',
    `email` VARCHAR(255) NOT NULL UNIQUE,
    `ville` VARCHAR(100) NOT NULL,
    `pays` VARCHAR(100) NOT NULL,
    `mot_de_passe` VARCHAR(255) NOT NULL,
    `origine` VARCHAR(100) DEFAULT NULL,
    `role` ENUM('user', 'admin') NOT NULL DEFAULT 'user',
    `status` ENUM('actif', 'inactif', 'en_attente') NOT NULL DEFAULT 'en_attente',
    `date_inscription` DATETIME NOT NULL,
    `derniere_connexion` DATETIME DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `email_unique` (`email`),
    INDEX `idx_status` (`status`),
    INDEX `idx_role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des rêves
CREATE TABLE IF NOT EXISTS `dream_reves` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `utilisateur_id` INT(11) NOT NULL,
    `date_time` DATETIME NOT NULL,
    `titre` VARCHAR(255) DEFAULT NULL,
    `histoire` TEXT NOT NULL,
    `emotions` VARCHAR(255) DEFAULT NULL,
    `symboles` VARCHAR(255) DEFAULT NULL,
    `interpretation` TEXT DEFAULT NULL,
    `action_priere` TEXT DEFAULT NULL,
    `suivi` TEXT DEFAULT NULL,
    `date_creation` DATETIME NOT NULL,
    `date_modification` DATETIME DEFAULT NULL,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`utilisateur_id`) REFERENCES `dream_utilisateurs`(`id`) ON DELETE CASCADE,
    INDEX `idx_utilisateur` (`utilisateur_id`),
    INDEX `idx_date` (`date_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des sessions
CREATE TABLE IF NOT EXISTS `dream_sessions` (
    `id` VARCHAR(128) NOT NULL,
    `utilisateur_id` INT(11) NOT NULL,
    `ip_address` VARCHAR(45) NOT NULL,
    `user_agent` TEXT,
    `payload` TEXT NOT NULL,
    `last_activity` INT(11) NOT NULL,
    PRIMARY KEY (`id`),
    INDEX `idx_last_activity` (`last_activity`),
    INDEX `idx_utilisateur` (`utilisateur_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des logs admin
CREATE TABLE IF NOT EXISTS `dream_logs_admin` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `admin_id` INT(11) NOT NULL,
    `action` VARCHAR(255) NOT NULL,
    `details` TEXT,
    `ip_address` VARCHAR(45) NOT NULL,
    `date_action` DATETIME NOT NULL,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`admin_id`) REFERENCES `dream_utilisateurs`(`id`) ON DELETE CASCADE,
    INDEX `idx_admin` (`admin_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Insertion du compte admin par défaut (mot de passe: Admin@2025)
INSERT INTO `dream_utilisateurs` (
    `civilite`, `sexe`, `nom`, `prenom`, `date_naissance`, 
    `statut_marital`, `telephone`, `indicatif_telephone`, 
    `email`, `ville`, `pays`, `mot_de_passe`, 
    `role`, `status`, `date_inscription`
) VALUES (
    'M', 'H', 'ADMIN', 'System', '1990-01-01',
    'celibataire', '0102030405', '+33',
    'admin@dreamjournal.com', 'Paris', 'France', 
    '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
    'admin', 'actif', NOW()
);

-- Insertion d'un compte utilisateur test (mot de passe: User@2025)
INSERT INTO `dream_utilisateurs` (
    `civilite`, `sexe`, `nom`, `prenom`, `date_naissance`, 
    `statut_marital`, `telephone`, `indicatif_telephone`, 
    `email`, `ville`, `pays`, `mot_de_passe`, 
    `role`, `status`, `date_inscription`
) VALUES (
    'F', 'F', 'DUPONT', 'Marie', '1995-05-15',
    'celibataire', '0612345678', '+33',
    'test@dreamjournal.com', 'Lyon', 'France', 
    '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
    'user', 'actif', NOW()
);