-- #migration 2026_10_14_001
-- Messagerie / fil de publications, lot 1 : centre de notifications (CDC n° 12 et 13).
--  - notifications : une ligne par notification ; identifiant CROISSANT (l'interface demande « ce qui est nouveau depuis l'id N »).
--    Dates en UTC (DATETIME rempli par UTC_TIMESTAMP()) pour qu'aucune ambiguite de fuseau n'existe entre le serveur et le navigateur.
--  - notification_prefs : choix du membre par type de notification et par canal (in_app, email). Sans ligne : valeur par defaut du code.
--  - notification_settings : heures calmes du membre (aucun email ni push dans la plage ; la notification dans l'application est toujours enregistree).
-- Purge : notifications_retention_days (parametre de /control, 90 jours par defaut), api/_notifications.php.

CREATE TABLE IF NOT EXISTS notifications (
  id           BIGINT       NOT NULL AUTO_INCREMENT,
  user_id      VARCHAR(64)  NOT NULL,
  type         VARCHAR(24)  NOT NULL,
  actor_id     VARCHAR(64)  NULL,
  subject_type VARCHAR(24)  NOT NULL,
  subject_id   VARCHAR(64)  NOT NULL,
  payload      TEXT         NULL,
  read_at      DATETIME     NULL,
  created_at   DATETIME     NOT NULL,
  PRIMARY KEY (id),
  KEY idx_user_id (user_id, id),
  KEY idx_user_unread (user_id, read_at),
  KEY idx_created (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS notification_prefs (
  user_id VARCHAR(64) NOT NULL,
  type    VARCHAR(24) NOT NULL,
  channel VARCHAR(12) NOT NULL,
  enabled TINYINT(1)  NOT NULL,
  PRIMARY KEY (user_id, type, channel)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS notification_settings (
  user_id       VARCHAR(64) NOT NULL,
  quiet_enabled TINYINT(1)  NOT NULL DEFAULT 0,
  quiet_start   CHAR(5)     NOT NULL DEFAULT '22:00',
  quiet_end     CHAR(5)     NOT NULL DEFAULT '08:00',
  timezone      VARCHAR(40) NOT NULL DEFAULT 'Europe/Paris',
  PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
