-- #migration 2026_10_20_001
-- Notifications push (CDC n° 13) : un abonnement Web Push par APPAREIL et par navigateur.
--  - endpoint : adresse du service de push (FCM, Mozilla, Apple, Windows), fournie par le navigateur ; endpoint_hash (SHA-256) sert d'identifiant unique.
--  - p256dh / auth : clés de chiffrement de l'appareil (jamais renvoyees par l'API). Un meme appareil qui change de compte est reaffecte au nouveau compte.
--  - failures : echecs consecutifs d'envoi ; l'abonnement est supprime apres 5, ou tout de suite si le service repond 404 / 410 (appareil desinscrit).
CREATE TABLE IF NOT EXISTS push_subscriptions (
  id            BIGINT       NOT NULL AUTO_INCREMENT,
  user_id       VARCHAR(40)  NOT NULL,
  endpoint_hash CHAR(64)     NOT NULL,
  endpoint      VARCHAR(600) NOT NULL,
  p256dh        VARCHAR(100) NOT NULL,
  auth          VARCHAR(40)  NOT NULL,
  user_agent    VARCHAR(255) NULL,
  failures      TINYINT      NOT NULL DEFAULT 0,
  created_at    DATETIME     NOT NULL DEFAULT UTC_TIMESTAMP(),
  last_used_at  DATETIME     NULL,
  PRIMARY KEY (id),
  UNIQUE KEY uq_endpoint (endpoint_hash),
  KEY idx_push_user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
