-- Migration 005 : tables équipements (features)
-- Dépend de 004 (rooms). Exécuter après 004.
-- Exécuter : mysql -u <user> -p <database> < migrations/005_create_features_tables.sql

CREATE TABLE IF NOT EXISTS `features` (
    `id`           INT UNSIGNED  NOT NULL AUTO_INCREMENT,
    `slug`         VARCHAR(100)  NOT NULL,
    `is_common`    TINYINT(1)   NOT NULL DEFAULT 0,
    -- is_common=1 + exclusive_to=NULL : commune à toutes les chambres
    -- is_common=0 + exclusive_to=room_id : exclusive à une chambre (auto-assignée + highlighted)
    -- is_common=0 + exclusive_to=NULL : disponible dans le catalogue, assignation manuelle
    `exclusive_to` INT UNSIGNED  NULL,
    `sort_order`   INT           NOT NULL DEFAULT 0,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uq_features_slug` (`slug`),
    FOREIGN KEY (`exclusive_to`) REFERENCES `rooms`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `feature_translations` (
    `feature_id` INT UNSIGNED  NOT NULL,
    `locale`     VARCHAR(5)    NOT NULL,
    `label`      VARCHAR(255)  NOT NULL,
    PRIMARY KEY (`feature_id`, `locale`),
    FOREIGN KEY (`feature_id`) REFERENCES `features`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Pivot : assignation des équipements aux chambres
-- Tout ce qui est affiché = une ligne ici (rien d'implicite).
-- Décocher une feature dans l'admin = supprimer la ligne correspondante.
CREATE TABLE IF NOT EXISTS `room_features` (
    `room_id`        INT UNSIGNED  NOT NULL,
    `feature_id`     INT UNSIGNED  NOT NULL,
    `sort_order`     INT           NOT NULL DEFAULT 0,
    `is_highlighted` TINYINT(1)   NOT NULL DEFAULT 0,
    PRIMARY KEY (`room_id`, `feature_id`),
    FOREIGN KEY (`room_id`)    REFERENCES `rooms`(`id`)    ON DELETE CASCADE,
    FOREIGN KEY (`feature_id`) REFERENCES `features`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
