-- =====================================================================
-- Háttérkép és oldalkép a designokhoz
--
-- A képek külön táblában, binárisan állnak, és a /api/images/<id> címen
-- érhetők el. Nem adat-URI a témasorban, mint a logó: egy fotó több száz
-- KB, a TV pedig a teljes állapotát a localStorage-be menti, aminek pár MB
-- a korlátja. Így a TV-hez csak a kép címe megy, a képet a böngésző
-- gyorsítótárazza.
--
-- Egy kép sosem változik: csere után új sor, új azonosító, új cím. Ettől
-- tartható korlátlan ideig gyorsítótárban, és ettől változik a TV
-- tartalmának ujjlenyomata is. A lecserélt képek sorát a mentés törli.
-- =====================================================================

CREATE TABLE IF NOT EXISTS theme_images (
  id         CHAR(36)     NOT NULL PRIMARY KEY,
  theme_id   CHAR(36)     NOT NULL,
  mime_type  VARCHAR(20)  NOT NULL,
  data       MEDIUMBLOB   NOT NULL,
  byte_size  INT UNSIGNED NOT NULL,
  created_at DATETIME(3)  NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  KEY theme_images_theme_idx (theme_id),
  CONSTRAINT theme_images_theme_fk FOREIGN KEY (theme_id) REFERENCES themes (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- A takarás a háttérszínből tett réteg a kép fölött, százalékban (0–90).
-- Az oldalkép sávja a képernyő negyede (narrow) vagy harmada (wide).
ALTER TABLE themes
  ADD COLUMN background_image_id CHAR(36)                  NULL AFTER logo_url,
  ADD COLUMN background_overlay  TINYINT UNSIGNED          NOT NULL DEFAULT 0 AFTER background_image_id,
  ADD COLUMN side_image_id       CHAR(36)                  NULL AFTER background_overlay,
  ADD COLUMN side_image_position ENUM('left','right')      NOT NULL DEFAULT 'right' AFTER side_image_id,
  ADD COLUMN side_image_width    ENUM('narrow','wide')     NOT NULL DEFAULT 'narrow' AFTER side_image_position,
  ADD COLUMN side_image_fit      ENUM('cover','contain')   NOT NULL DEFAULT 'cover' AFTER side_image_width;
