CREATE TABLE `complex_house_media` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Уникальный идентификатор медиаматериала',
    `complex_house_id` BIGINT UNSIGNED NOT NULL COMMENT 'FK → complex_houses.id. Ссылка на дом, к которому загружен файл. Медиаматериал всегда принадлежит одному дому.',
    `file_path` VARCHAR(512) NOT NULL COMMENT 'Относительный путь к оригинальному файлу в S3 хранилище. Генерируется при загрузке (UUID + расширение).',
    `original_name` VARCHAR(255) NOT NULL COMMENT 'Имя файла, которое пользователь видел при загрузке (напр. render_3k_east.jpg). Используется для отображения в таблице.',
    `file_size` INT UNSIGNED NOT NULL COMMENT 'Размер файла в байтах. Для валидации (макс. 10 МБ) и отображения в UI.',
    `thumbnail_path` VARCHAR(512) DEFAULT NULL COMMENT 'Относительный путь к миниатюре (300×300 px). Генерируется асинхронно после загрузки.',
    `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    INDEX `idx_complex_house_id` (`complex_house_id`),
    CONSTRAINT `fk_complex_house_media_house` FOREIGN KEY (`complex_house_id`) REFERENCES `complex_houses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

CREATE TABLE `complex_house_media_set` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Уникальный идентификатор набора',
    `complex_house_id` BIGINT UNSIGNED NOT NULL COMMENT 'FK → complex_houses.id. Набор принадлежит дому',
    `name` VARCHAR(255) NOT NULL COMMENT 'Название набора (например «Для студий восток», «Для 2К»)',
    `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Дата создания набора',
    `color` VARCHAR(7) NOT NULL DEFAULT '#2196F3' COMMENT 'Цвет набора в формате HEX (например, #2196F3). Используется для отображения на плане.',
    PRIMARY KEY (`id`),
    INDEX `idx_complex_house_id` (`complex_house_id`),
    CONSTRAINT `fk_complex_house_media_set_house` FOREIGN KEY (`complex_house_id`) REFERENCES `complex_houses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Наборы (медиа-сеты) — именованные упорядоченные подборки файлов, привязываемые к помещениям';


CREATE TABLE `complex_house_media_set_item` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Первичный ключ',

  `set_id` INT NOT NULL COMMENT 'ID набора (FK → complex_house_media_sets.id)',
  `media_id` INT NOT NULL COMMENT 'ID медиафайла (FK → complex_house_media.id)',

  `sort_order` SMALLINT NOT NULL DEFAULT 0 COMMENT 'Позиция файла в наборе (0, 1, 2...)',

  PRIMARY KEY (`id`),

-- Индекс для быстрого получения всех элементов набора
INDEX `idx_set_id` (`set_id`),

-- Индекс для поиска, в каких наборах используется файл
INDEX `idx_media_id` (`media_id`),

-- Один и тот же файл не может повторяться в одном наборе
UNIQUE KEY `uniq_set_media` (`set_id`, `media_id`),

-- Связь с таблицей наборов (при удалении набора — удаляются элементы)
CONSTRAINT `fk_set_item_set` FOREIGN KEY (`set_id`) REFERENCES `complex_house_media_set` (`id`) ON DELETE CASCADE,

-- Связь с таблицей медиа (при удалении файла — удаляется из всех наборов)


CONSTRAINT `fk_set_item_media`
    FOREIGN KEY (`media_id`)
    REFERENCES `complex_house_media`(`id`)
    ON DELETE CASCADE

) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COMMENT='Состав набора: какие файлы входят и в каком порядке';

CREATE TABLE `complex_house_media_set_room` (
    `id` INT NOT NULL AUTO_INCREMENT COMMENT 'Первичный ключ',
    `set_id` INT NOT NULL COMMENT 'ID набора (FK → complex_house_media_set.id)',
    `complex_room_id` BIGINT UNSIGNED NOT NULL COMMENT 'ID помещения (FK → complex_rooms.id). Уникально — одно помещение = один набор',
    PRIMARY KEY (`id`),
    INDEX `idx_set_id` (`set_id`),
    UNIQUE KEY `uniq_room` (`complex_room_id`),
    CONSTRAINT `fk_set_room_set` FOREIGN KEY (`set_id`) REFERENCES `complex_house_media_set` (`id`) ON DELETE CASCADE,
    CONSTRAINT `fk_set_room_room` FOREIGN KEY (`complex_room_id`) REFERENCES `complex_rooms` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = 'Привязка набора медиа к помещениям (одно помещение = один набор)';