-- #migration 2026_10_15_001
-- Messagerie / fil de publications, lot 1 : fil de publications (CDC n° 14 et 15).
--  - posts : une publication (texte, theme, visibilite tous / mon reseau). status 'hidden' = masquee par la moderation (a venir).
--  - post_media : photos d'une publication (chemins /uploads/artisans/<membre>/posts/<fichier>.webp, jamais d'URL externe).
--  - post_likes, post_saves : j'aime et enregistrements (signets), une ligne par membre et par publication.
--  - comments : commentaires sur DEUX niveaux (parent_id vide = commentaire, parent_id = reponse a un commentaire) ; comment_likes.
-- Les compteurs ne sont pas stockes (ils sont comptes a la lecture) : ils ne peuvent pas deriver.
-- Supprimer une publication supprime tout ce qui s'y rattache (le contenu signale sera conserve par la moderation, a part).

CREATE TABLE IF NOT EXISTS posts (
  id         INT          NOT NULL AUTO_INCREMENT,
  user_id    VARCHAR(64)  NOT NULL,
  theme_id   INT          NOT NULL,
  body       TEXT         NOT NULL,
  visibility VARCHAR(10)  NOT NULL DEFAULT 'all',
  status     VARCHAR(12)  NOT NULL DEFAULT 'published',
  created_at DATETIME     NOT NULL,
  edited_at  DATETIME     NULL,
  PRIMARY KEY (id),
  KEY idx_status_id (status, id),
  KEY idx_user (user_id, id),
  KEY idx_theme (theme_id, id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS post_media (
  id         INT          NOT NULL AUTO_INCREMENT,
  post_id    INT          NOT NULL,
  url        VARCHAR(255) NOT NULL,
  sort_order INT          NOT NULL DEFAULT 0,
  PRIMARY KEY (id),
  KEY idx_post (post_id, sort_order)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS post_likes (
  post_id    INT          NOT NULL,
  user_id    VARCHAR(64)  NOT NULL,
  created_at DATETIME     NOT NULL,
  PRIMARY KEY (post_id, user_id),
  KEY idx_user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS post_saves (
  post_id    INT          NOT NULL,
  user_id    VARCHAR(64)  NOT NULL,
  created_at DATETIME     NOT NULL,
  PRIMARY KEY (post_id, user_id),
  KEY idx_user (user_id, post_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS comments (
  id         INT          NOT NULL AUTO_INCREMENT,
  post_id    INT          NOT NULL,
  user_id    VARCHAR(64)  NOT NULL,
  parent_id  INT          NULL,
  body       TEXT         NOT NULL,
  status     VARCHAR(12)  NOT NULL DEFAULT 'published',
  created_at DATETIME     NOT NULL,
  edited_at  DATETIME     NULL,
  PRIMARY KEY (id),
  KEY idx_post (post_id, id),
  KEY idx_parent (parent_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS comment_likes (
  comment_id INT          NOT NULL,
  user_id    VARCHAR(64)  NOT NULL,
  created_at DATETIME     NOT NULL,
  PRIMARY KEY (comment_id, user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
