-- phpMyAdmin SQL Dump
-- version 5.2.3
-- https://www.phpmyadmin.net/
--
-- Hôte : lieberrreportage.mysql.db
-- Généré le : sam. 27 juin 2026 à 19:36
-- Version du serveur : 8.4.8-8
-- Version de PHP : 8.4.10

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de données : `lieberrreportage`
--

-- --------------------------------------------------------

--
-- Structure de la table `client_galleries`
--

CREATE TABLE `client_galleries` (
  `id` int UNSIGNED NOT NULL,
  `slug` varchar(160) COLLATE utf8mb4_unicode_ci NOT NULL,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `client_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `client_email` varchar(190) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `client_language` char(2) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'fr',
  `intro` text COLLATE utf8mb4_unicode_ci,
  `access_code_hash` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `status` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'selection',
  `status_before_expiration` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `selection_locked` tinyint(1) NOT NULL DEFAULT '0',
  `client_comment` text COLLATE utf8mb4_unicode_ci,
  `cover_photo_id` int UNSIGNED DEFAULT NULL,
  `expires_at` datetime DEFAULT NULL,
  `expiration_reminder_days` tinyint UNSIGNED NOT NULL DEFAULT '3',
  `expiration_reminder_sent_at` datetime DEFAULT NULL,
  `expired_at` datetime DEFAULT NULL,
  `archived_at` datetime DEFAULT NULL,
  `purge_after_days` smallint UNSIGNED NOT NULL DEFAULT '30',
  `scheduled_delete_at` datetime DEFAULT NULL,
  `validated_at` datetime DEFAULT NULL,
  `first_access_at` datetime DEFAULT NULL,
  `last_access_at` datetime DEFAULT NULL,
  `reopened_at` datetime DEFAULT NULL,
  `delivery_opened_at` datetime DEFAULT NULL,
  `first_download_at` datetime DEFAULT NULL,
  `last_download_at` datetime DEFAULT NULL,
  `download_file_count` bigint UNSIGNED NOT NULL DEFAULT '0',
  `access_email_sent_at` datetime DEFAULT NULL,
  `delivery_email_sent_at` datetime DEFAULT NULL,
  `reopened_email_sent_at` datetime DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Structure de la table `client_gallery_events`
--

CREATE TABLE `client_gallery_events` (
  `id` bigint UNSIGNED NOT NULL,
  `gallery_id` int UNSIGNED NOT NULL,
  `event_type` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `event_data` text COLLATE utf8mb4_unicode_ci,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Structure de la table `client_gallery_invites`
--

CREATE TABLE `client_gallery_invites` (
  `id` bigint UNSIGNED NOT NULL,
  `gallery_id` int UNSIGNED NOT NULL,
  `invitee_email` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `token_hash` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',
  `general_comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `first_access_at` datetime DEFAULT NULL,
  `last_access_at` datetime DEFAULT NULL,
  `revoked_at` datetime DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Structure de la table `client_gallery_invite_feedback`
--

CREATE TABLE `client_gallery_invite_feedback` (
  `id` bigint UNSIGNED NOT NULL,
  `invite_id` bigint UNSIGNED NOT NULL,
  `gallery_id` int UNSIGNED NOT NULL,
  `photo_id` int UNSIGNED NOT NULL,
  `liked` tinyint(1) NOT NULL DEFAULT '0',
  `comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Structure de la table `client_gallery_photos`
--

CREATE TABLE `client_gallery_photos` (
  `id` int UNSIGNED NOT NULL,
  `gallery_id` int UNSIGNED NOT NULL,
  `source_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `preview_stored_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `preview_mime` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `preview_size` bigint UNSIGNED NOT NULL DEFAULT '0',
  `width` int UNSIGNED NOT NULL DEFAULT '0',
  `height` int UNSIGNED NOT NULL DEFAULT '0',
  `ordre` int NOT NULL DEFAULT '0',
  `is_selected` tinyint(1) NOT NULL DEFAULT '0',
  `client_comment` text COLLATE utf8mb4_unicode_ci,
  `delivery_stored_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `delivery_original_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `delivery_mime` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `delivery_size` bigint UNSIGNED DEFAULT NULL,
  `download_enabled` tinyint(1) NOT NULL DEFAULT '0',
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Structure de la table `photos`
--

CREATE TABLE `photos` (
  `id` int NOT NULL,
  `reportage_id` int NOT NULL,
  `filename` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `ordre` int NOT NULL DEFAULT '0',
  `mise_en_page` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT 'pleine',
  `alt_text` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `photos`
--

INSERT INTO `photos` (`id`, `reportage_id`, `filename`, `ordre`, `mise_en_page`, `alt_text`, `created_at`) VALUES
(1, 1, 'photo-01.jpg', 0, 'pleine', 'Deux stagiaires franchissent ensemble un obstacle en bois dans la forêt équatoriale.', '2026-05-16 13:58:12'),
(2, 1, 'photo-02.jpg', 1, 'pleine', 'Stagiaires couverts de boue progressant avec leur arme sur un parcours détrempé.', '2026-05-16 13:58:12'),
(3, 1, 'photo-03.jpg', 2, 'pleine', 'Portrait souriant d’une stagiaire couverte de boue pendant le stage commando jungle.', '2026-05-16 13:58:12'),
(4, 1, 'photo-04.jpg', 3, 'pleine', 'Quatre stagiaires en tenue de combat écoutent des consignes au cœur de la forêt.', '2026-05-16 13:58:12'),
(5, 1, 'photo-05.jpg', 4, 'pleine', 'Stagiaires se rinçant à l’eau après un exercice dans la jungle.', '2026-05-16 13:58:12'),
(6, 1, 'photo-06.jpg', 5, 'pleine', 'Un stagiaire grimpe sur un plan incliné en bois rendu glissant par la pluie.', '2026-05-16 13:58:12'),
(7, 1, 'photo-07.jpg', 6, 'pleine', 'Deux stagiaires aident un camarade à franchir un obstacle de rondins et de cordes.', '2026-05-16 13:58:12'),
(8, 1, 'photo-08.jpg', 7, 'pleine', 'Une stagiaire rampe sur un obstacle de rondins reliés par des cordes.', '2026-05-16 13:58:12'),
(9, 1, 'photo-09.jpg', 8, 'pleine', 'Une stagiaire tient une corde et regarde vers le haut pendant un franchissement.', '2026-05-16 13:58:12'),
(10, 1, 'photo-10.jpg', 9, 'pleine', 'Portrait d’une stagiaire couverte de boue, tournée vers ses camarades.', '2026-05-16 13:58:12'),
(11, 1, 'photo-11.jpg', 10, 'pleine', 'Stagiaire couvert de boue tirant sur une corde pendant un franchissement en jungle.', '2026-05-16 13:58:12'),
(12, 1, 'photo-12.jpg', 11, 'pleine', 'Deux stagiaires traversent une poutre en hauteur avec armes et sacs.', '2026-05-16 13:58:12'),
(13, 1, 'photo-13.jpg', 12, 'pleine', 'Stagiaires autour d’un camarade allongé pendant un exercice en forêt.', '2026-05-16 13:58:12'),
(14, 1, 'photo-14.jpg', 13, 'pleine', 'Groupe de stagiaires couverts de boue courant sur une piste forestière.', '2026-05-16 13:58:12'),
(15, 1, 'photo-15.jpg', 14, 'pleine', 'Portrait de profil d’une stagiaire couverte de boue regardant vers le haut.', '2026-05-16 13:58:12'),
(16, 2, 'photo-01.jpg', 0, 'pleine', 'Pionniers et musique de la Légion étrangère défilant devant le Palais national à Mexico, sur la place de la Constitution (Zócalo).', '2026-05-16 13:58:12'),
(17, 2, 'photo-02.jpg', 1, 'pleine', 'Militaire mexicain portant un drapeau d’unité à contre-jour.', '2026-05-16 13:58:12'),
(18, 2, 'photo-03.jpg', 2, 'pleine', 'Portrait de profil d’un légionnaire pionnier coiffé de son képi blanc.', '2026-05-16 13:58:12'),
(19, 2, 'photo-04.jpg', 3, 'pleine', 'Pionniers de la Légion étrangère défilant dans une rue de Camaròn de Tejeda devant les photographes.', '2026-05-16 13:58:12'),
(20, 2, 'photo-05.jpg', 4, 'pleine', 'Portrait en pied d’un pionnier de la légion étrangère devant le dernier mur encore d\'origine de l\'hacienda où s\'est déroulé le combat de Camerone.', '2026-05-16 13:58:12'),
(21, 2, 'photo-06.jpg', 5, 'pleine', 'Des légionnaires ajustent leurs tabliers de pionniers avant la cérémonie.', '2026-05-16 13:58:12'),
(22, 2, 'photo-07.jpg', 6, 'pleine', 'Une militaire entretient son uniforme avant les répétitions du défilé.', '2026-05-16 13:58:12'),
(23, 2, 'photo-08.jpg', 7, 'pleine', 'Silhouettes de pionniers aperçues à travers une vitre mouillée.', '2026-05-16 13:58:12'),
(24, 2, 'photo-09.jpg', 8, 'pleine', 'Formation de la Légion étrangère sous les drapeaux français et mexicain, au monument aux morts de Camaròn de Tejeda.', '2026-05-16 13:58:12'),
(25, 2, 'photo-10.jpg', 9, 'pleine', 'Tambours militaires mexicains alignés devant la cathédrale de Mexico.', '2026-05-16 13:58:12'),
(26, 2, 'photo-11.jpg', 10, 'pleine', 'Militaires en tenue de cérémonie au milieu des délégations rassemblées pour la cérémonie.', '2026-05-16 13:58:12'),
(27, 2, 'photo-12.jpg', 11, 'pleine', 'Pionniers et musique de la Légion étrangère réunis pour une photographie de groupe devant le monument aux morts de Camaròn de Tejada.', '2026-05-16 13:58:12'),
(28, 2, 'photo-13.jpg', 12, 'pleine', 'Batterie d’artillerie mexicaine tirant une salve cérémonielle sur la place de la Constitution (Zócalo).', '2026-05-16 13:58:12'),
(29, 2, 'photo-14.jpg', 13, 'pleine', 'Militaire descendant en corde lisse depuis un hélicoptère mexicain sur la place de la Constitution (Zócalo).', '2026-05-16 13:58:12'),
(30, 2, 'photo-15.jpg', 14, 'pleine', 'Parachutiste mexicain descendant avec le drapeau national sous une voile tricolore.', '2026-05-16 13:58:12'),
(31, 3, 'photo-01.jpg', 0, 'pleine', 'Légionnaires du 3e régiment étranger d\'infanterie assurant la surveillance du centre spatial guyanais, lors d\'un lancement de la fusée Vega.', '2026-05-16 13:58:12'),
(32, 3, 'photo-02.jpg', 1, 'pleine', 'Véhicule chenillé du 3e régiment étranger d\'infanterie patrouillant dans la zone du Centre spatial guyanais.', '2026-05-16 13:58:12'),
(33, 3, 'photo-03.jpg', 2, 'pleine', 'Patrouilles fluviales des légionnaires du 3e régiment étranger d\'infanterie progressant en embarcations légères sur un cours d’eau bordé de mangrove, au sein de la zone du Centre spatial guyanais.', '2026-05-16 13:58:12'),
(34, 3, 'photo-04.jpg', 3, 'pleine', 'Patrouilles de reconnaissance en quad des légionnaires du 3e régiment étranger d\'infanterie sur une piste forestière.', '2026-05-16 13:58:12'),
(36, 3, 'photo-06.jpg', 5, 'pleine', 'Chef de pièce sol-air Mistral indiquant un secteur d\'observation à son tireur.', '2026-05-16 13:58:12'),
(37, 3, 'photo-07.jpg', 6, 'pleine', 'Une pièce sol-air Mistral en protection du Centre spatial guyanais.', '2026-05-16 13:58:12'),
(38, 3, 'photo-08.jpg', 7, 'pleine', 'Un pilote de véhicule chenillé du 3e régiment étranger d\'infanterie vu à travers la vitre de la cabine.', '2026-05-16 13:58:12'),
(39, 3, 'photo-09.jpg', 8, 'pleine', 'Légionnaire du 3e régiment étranger d\'infanterie en patrouille à pied devant un véhicule chenillé sur une piste du Centre spatial guyanais.', '2026-05-16 13:58:12'),
(40, 4, 'photo-01.jpg', 0, 'pleine', 'Une pirogue sur l\'Oyapock au lever du soleil, entre les arbres de les rives de la France et du Brésil, à Camopi.', '2026-05-16 13:58:12'),
(41, 4, 'photo-02.jpg', 1, 'pleine', 'Rayons du soleil traversant les nuages au-dessus de l’océan et de petits îlots.', '2026-05-16 13:58:12'),
(42, 4, 'photo-03.jpg', 2, 'pleine', 'Piste de terre isolée traversant la forêt équatoriale vue du ciel.', '2026-05-16 13:58:12'),
(43, 4, 'photo-04.jpg', 3, 'pleine', 'Cours d’eau bordé de forêt tropicale, de rochers et de quelques habitations, à proximité de Camopi, à la frontière entre la France et le Brésil.', '2026-05-16 13:58:12'),
(44, 4, 'photo-05.jpg', 4, 'pleine', 'La tour Dreyfus, sur la pointe des Roches, à Kourou, entourée de palmiers et reflétée dans une étendue d’eau.', '2026-05-16 13:58:12'),
(45, 4, 'photo-06.jpg', 5, 'pleine', 'Pêcheurs dispersés sur la pointe des Roches, à Kourou, face à une mer calme.', '2026-05-16 13:58:12'),
(46, 4, 'photo-07.jpg', 6, 'pleine', 'Projecteur allumé devant des bateaux amarrés au crépuscule, sur le port de Pariacabo.', '2026-05-16 13:58:12'),
(72, 7, 'photo-01.jpg', 0, 'pleine', 'Légionnaires au départ du cross de la Fourragère.', '2026-05-28 05:00:17'),
(73, 7, 'photo-02.jpg', 1, 'pleine', 'Derniers efforts lors du cross de la Fourragère.', '2026-05-28 05:00:18'),
(74, 7, 'photo-03.jpg', 3, 'pleine', 'Un militaire arrosé d’eau pendant les challenges sportifs de la Fourragère.', '2026-05-28 05:00:19'),
(75, 7, 'photo-04.jpg', 2, 'pleine', 'Franchissement d\'obstacles lors des challenges sportifs de la Fourragère.', '2026-05-28 05:00:19'),
(76, 7, 'photo-05.jpg', 5, 'pleine', 'Portrait de profil d’un officier de légion pendant la cérémonie de la Fourragère.', '2026-05-28 05:00:20'),
(77, 7, 'photo-06.jpg', 6, 'pleine', 'Arrivée de la garde au drapeau lors de la cérémonie de la Fourragère.', '2026-05-28 05:00:21'),
(78, 7, 'photo-07.jpg', 7, 'pleine', 'Légionnaires en tenue de cérémonie devant l\'inscription « 3 REI » enflammée, lors de la cérémonie de la Fourragère.', '2026-05-28 05:00:21'),
(79, 7, 'photo-08.jpg', 8, 'pleine', 'Militaires en tenue de cérémonie vus de dos et éclairés à contre-jour.', '2026-05-28 05:00:22'),
(80, 7, 'photo-09.jpg', 12, 'pleine', 'Lé général commandant la Légion étrangère remet un décret de naturalisation à un légionnaire lors de la fête de la Fourragère.', '2026-05-28 05:00:23'),
(81, 7, 'photo-10.jpg', 9, 'pleine', 'Un légionnaire conduit un enfant en quad pendant la journée portes ouvertes au 3e régiment étranger d\'infanterie.', '2026-05-28 05:00:23'),
(82, 7, 'photo-11.jpg', 13, 'pleine', 'Une candidate défilant sur scène lors de l’élection de Miss Képi blanc 2023.', '2026-05-28 05:00:24'),
(83, 7, 'photo-12.jpg', 14, 'pleine', 'Trois lauréates de Miss Képi blanc au 3e régiment étranger d\'infanterie posant avec leurs bouquets et leurs écharpes.', '2026-05-28 05:00:25'),
(84, 7, 'photo-13.jpg', 4, 'pleine', 'Mise en place nocturne pour la cérémonie de la Fourragère.', '2026-05-28 05:00:25'),
(85, 7, 'photo-14.jpg', 11, 'pleine', 'Silhouettes de légionnaires en armes sous un puissant projecteur pendant la prise d’armes de la Fourragère.', '2026-05-28 05:00:26'),
(86, 7, 'photo-15.jpg', 10, 'pleine', 'Silhouettes de deux légionnaires en képi devant l’inscription « 3 REI » en flammes.', '2026-05-28 05:00:26'),
(92, 8, 'photo-01.jpg', 0, 'pleine', 'Portrait d’un légionnaire espagnol en tenue de tradition, lors du concert des deux légions.', '2026-06-27 10:38:02'),
(93, 8, 'photo-02.jpg', 1, 'pleine', 'Portrait d’un légionnaire en tenue de tradition, lors du concert des deux légions.', '2026-06-27 10:38:03'),
(94, 8, 'photo-03.jpg', 2, 'pleine', 'Légionnaire de la Musique de la Légion étrangère portant le chapeau chinois.', '2026-06-27 10:38:03'),
(95, 8, 'photo-04.jpg', 3, 'pleine', 'Le chef de la musique de la Légion espagnole avant le début du concert des deux légions.', '2026-06-27 10:38:04'),
(96, 8, 'photo-05.jpg', 4, 'pleine', 'Les tambours de la Musique de la Légion étrangère entrent sur la place d\'armes.', '2026-06-27 10:38:05'),
(97, 8, 'photo-06.jpg', 5, 'pleine', 'Musiciens de la Légion espagnole jouant des cuivres lors du concert des deux légions.', '2026-06-27 10:38:06'),
(98, 8, 'photo-07.jpg', 6, 'pleine', 'Concert des musiques des deux légions devant un public nombreux et conquis.', '2026-06-27 10:38:06'),
(99, 8, 'photo-08.jpg', 7, 'pleine', 'Musique de la Légion espagnole jouant devant le monument aux morts de la Légion étrangère, à Aubagne.', '2026-06-27 10:38:07'),
(100, 8, 'photo-09.jpg', 8, 'pleine', 'Tambours de la Légion étrangère lors du concert des deux légions.', '2026-06-27 10:38:08'),
(101, 8, 'photo-10.jpg', 9, 'pleine', 'Militaire de la légion espagnole regardant la prestation de la musique de la Légion étrangère.', '2026-06-27 10:38:09'),
(102, 8, 'photo-11.jpg', 10, 'pleine', 'Le chef dirigeant la Musique de la Légion étrangère lors du concert des deux légions.', '2026-06-27 10:38:10'),
(103, 8, 'photo-12.jpg', 11, 'pleine', 'Militaire de la musique de la légion espagnole filmant la prestation de la musique de la Légion étrangère.', '2026-06-27 10:38:11'),
(104, 8, 'photo-13.jpg', 12, 'pleine', 'Musiciens de la Légion étrangère jouant de la guitare et de la basse devant le monument aux morts.', '2026-06-27 10:38:11'),
(105, 8, 'photo-14.jpg', 13, 'pleine', 'Vue d’ensemble du concert des deux légions au crépuscule devant le public.', '2026-06-27 10:38:12'),
(106, 8, 'photo-15.jpg', 14, 'pleine', 'Vue d’ensemble du concert des deux légions au crépuscule devant le public.', '2026-06-27 10:38:13');

-- --------------------------------------------------------

--
-- Structure de la table `reportages`
--

CREATE TABLE `reportages` (
  `id` int NOT NULL,
  `slug` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `titre` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `sous_titre` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `date` date DEFAULT NULL,
  `lieu` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `contexte` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `description` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  `tags` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `cover_image` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT 'photo-01.jpg',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `reportages`
--

INSERT INTO `reportages` (`id`, `slug`, `titre`, `sous_titre`, `date`, `lieu`, `contexte`, `description`, `tags`, `cover_image`, `created_at`, `updated_at`) VALUES
(1, 'reportage-jungle', 'Stage commando jungle', 'Entraînements · Outre-mer', NULL, 'Guyane française', 'Le stage commando jungle place les stagiaires dans un environnement équatorial exigeant, où la boue, la pluie, les obstacles et la fatigue éprouvent autant l’endurance individuelle que l’entraide collective.', 'En forêt équatoriale guyanaise, des recrues affrontent les épreuves du stage commando jungle — boue, pluie, obstacles, épuisement. Ce reportage cherche à saisir l\'endurance et la solidarité au-delà du mythe, dans la réalité physique et humaine de chaque instant.', 'Stage commando, jungle, 3e REI', 'photo-01.jpg', '2026-05-16 13:58:12', '2026-06-23 14:56:05'),
(2, 'reportage-mexique', 'La Légion étrangère au Mexique', 'Cérémonies · International', NULL, 'Mexique', 'Réalisé lors d’un déplacement de la Légion étrangère au Mexique, ce reportage relie la mémoire de Camerone aux cérémonies contemporaines, aux rencontres militaires et à la présence des pionniers et de la Musique de la Légion étrangère.', 'Chaque année, la Légion étrangère commémore la bataille de Camerone, livrée le 30 avril 1863 au Mexique. Ce reportage documente le voyage de la Légion en 2021, sur les terres de cette bataille fondatrice, invitée par le Mexique pour la fête de l\'indépendance : cérémonies, défilés, rencontres avec l\'armée mexicaine avec la présence des pionniers et de la musique de la Légion étrangère.', 'Légion étrangère, Camerone, Mexique, 1er RE', 'photo-01.jpg', '2026-05-16 13:58:12', '2026-06-23 14:56:05'),
(3, 'reportage-titan', 'La Mission Titan', 'Opérations · Outre-mer', NULL, 'Kourou, Guyane française', 'La mission Titan protège le Centre Spatial Guyanais, site stratégique des lancements européens. Cette série suit les légionnaires du 3e REI entre patrouilles terrestres, approches fluviales et surveillance en forêt autour d’une zone sensible.', 'La mission Titan confie aux légionnaires du 3e REI la protection terrestre du Centre Spatial Guyanais, site stratégique d\'où s\'élancent les fusées Ariane et Vega. De la forêt équatoriale au pas de tir, la mission s\'écrit de jour comme de nuit, sur l\'eau ou en jungle. Ce reportage suit ces hommes dans la diversité de leurs postes, à la croisée du quotidien militaire et du symbole spatial.', 'Mission Titan, 3e REI, Kourou', 'photo-01.jpg', '2026-05-16 13:58:12', '2026-06-27 10:59:39'),
(4, 'reportage-guyane', 'La Guyane, terres et eaux', 'Paysages · Outre-mer', NULL, 'Guyane française', 'Séquence plus contemplative réalisée en Guyane, hors du tumulte opérationnel : fleuves, littoral, forêt et lumière composent un portrait silencieux du territoire où est implanté le 3e régiment étranger d’infanterie.', 'Entre deux missions, le regard se pose. Sur la canopée infinie, sur les fleuves qui serpentent, sur l\'estuaire où les pêcheurs attendent l\'aube. La Guyane, c\'est aussi cela : un territoire autant de silence que du bruit de la jungle, de ciels immenses ou chargés de nuages et d\'eaux paisibles ou tumultueuses. Ce reportage rassemble les paysages saisis hors du tumulte des opérations — quand la lumière, seule, raconte la mémoire des lieux.', 'Paysages, Guyane', 'photo-01.jpg', '2026-05-16 13:58:12', '2026-06-23 14:56:05'),
(7, 'festivites-fourragere', 'Les festivités de la Fourragère', 'Sport, esprit de corps et tradition', '2023-09-15', 'Kourou, Guyane française', 'En Guyane, le 3e régiment étranger d’infanterie célèbre la fête de la Fourragère, entre épreuves sportives, cérémonie militaire, rassemblement des familles et transmission de la mémoire régimentaire.', 'En Guyane, chaque année, le 3e régiment étranger d’infanterie célèbre la fête de la Fourragère, en mémoire de la percée de la ligne Hindenburg, le 14 septembre 1918. Ces journées mêlent effort, esprit de corps et tradition. Les légionnaires se mesurent lors d’épreuves sportives exigeantes, entre course, parcours d’obstacles et dépassement de soi. À la nuit tombée, les tenues de combat cèdent la place aux uniformes de cérémonie. Une prise d’armes rappelle l’histoire du régiment, et la bravoure collective que symbolise la fourragère. Le lendemain, le régiment ouvre ses portes et permet aux familles ainsi qu’aux civils de mieux le connaitre, sans oublier la très attendue élection de miss Képi blanc !', 'Guyane, Kourou, Légion étrangère, 3e REI, cérémonie, sport, challenge, miss képi blanc, portes ouvertes', 'photo-06.jpg', '2026-05-18 16:52:20', '2026-06-23 14:56:05'),
(8, 'concert-des-deux-legions', 'Concert des deux légions', 'Concert · France', '2026-06-19', 'Aubagne, France', '', 'La musique de la Légion étrangère et la musique de la Légion espagnole ont été réunies le 19 juin 2026 à Aubagne. Dirigés par le capitaine Vladimir Khourda pour la Légion étrangère et par le major Alonso Sosa Ciudad pour la Légion espagnole, une centaine de musiciens se sont produits pour interpréter des musiques du répertoire militaire, mais aussi de la variété internationale.', 'Concert, légion étrangère, légion espagnole, musique, aubagne, france', 'photo-03.jpg', '2026-06-27 10:31:14', '2026-06-27 10:59:14');

-- --------------------------------------------------------

--
-- Structure de la table `reportage_access_events`
--

CREATE TABLE `reportage_access_events` (
  `id` bigint UNSIGNED NOT NULL,
  `reportage_id` int UNSIGNED DEFAULT NULL,
  `reportage_slug` varchar(190) COLLATE utf8mb4_unicode_ci NOT NULL,
  `event_type` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `photo_filename` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `event_data` text COLLATE utf8mb4_unicode_ci,
  `lang` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `referrer_domain` varchar(190) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ip_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `reportage_access_events`
--

INSERT INTO `reportage_access_events` (`id`, `reportage_id`, `reportage_slug`, `event_type`, `photo_filename`, `event_data`, `lang`, `referrer_domain`, `ip_hash`, `user_agent_hash`, `created_at`) VALUES
(1, 3, 'reportage-titan', 'reportage_view', NULL, '{\"title\":\"La Mission Titan\",\"lang\":\"fr\",\"path\":\"/reportages/reportage-titan/\"}', 'fr', 'lieber.fr', '2d3c9f7ee169ced735bf014d3d45513d4cdf1615ad5275a4364545033efabced', '74aa332c370d6642c400b2332190186c9aa4f31e8315ccb99cb2c09ed89fa1c2', '2026-06-27 12:05:41'),
(2, 3, 'reportage-titan', 'photo_open', 'photo-01.jpg', '{\"title\":\"La Mission Titan\",\"lang\":\"fr\",\"path\":\"/reportage-event.php\"}', 'fr', 'lieber.fr', '2d3c9f7ee169ced735bf014d3d45513d4cdf1615ad5275a4364545033efabced', '74aa332c370d6642c400b2332190186c9aa4f31e8315ccb99cb2c09ed89fa1c2', '2026-06-27 12:05:43'),
(3, 3, 'reportage-titan', 'photo_open', 'photo-04.jpg', '{\"title\":\"La Mission Titan\",\"lang\":\"fr\",\"path\":\"/reportage-event.php\"}', 'fr', 'lieber.fr', '2d3c9f7ee169ced735bf014d3d45513d4cdf1615ad5275a4364545033efabced', '74aa332c370d6642c400b2332190186c9aa4f31e8315ccb99cb2c09ed89fa1c2', '2026-06-27 12:05:48'),
(4, 8, 'concert-des-deux-legions', 'reportage_view', NULL, '{\"title\":\"Concert des deux légions\",\"lang\":\"en\",\"path\":\"/en/reportages/concert-des-deux-legions/\"}', 'en', 'lieber.fr', '217c1cf8e418e0d53880607112f0a46edad96f29aa6b823c569639ea3c51a6f9', '5d238945815ce4768e4f2e52ea5e436e69cb179bea578e719c139c427b655f0e', '2026-06-27 14:03:48'),
(5, 1, 'reportage-jungle', 'reportage_view', NULL, '{\"title\":\"Jungle commando course\",\"lang\":\"en\",\"path\":\"/en/reportages/reportage-jungle/\"}', 'en', 'lieber.fr', 'a0bf94492e2dbcea7f63b4f6a3a7206f303ec431040374aa837eaa35fae1ba8a', '5d238945815ce4768e4f2e52ea5e436e69cb179bea578e719c139c427b655f0e', '2026-06-27 16:25:35'),
(6, 4, 'reportage-guyane', 'reportage_view', NULL, '{\"title\":\"French Guiana, lands and waters\",\"lang\":\"en\",\"path\":\"/en/reportages/reportage-guyane/\"}', 'en', 'lieber.fr', 'b7d7f4e2971e2b9bf67b781c334c08bb41c4fbf7b652542b21fc74968426b4f2', '5d238945815ce4768e4f2e52ea5e436e69cb179bea578e719c139c427b655f0e', '2026-06-27 17:15:37'),
(7, 4, 'reportage-guyane', 'reportage_view', NULL, '{\"title\":\"French Guiana, lands and waters\",\"lang\":\"en\",\"path\":\"/en/reportages/reportage-guyane/\"}', 'en', NULL, '515a34f6d58f2f71c664002372a7125099ff99d992b6513c1148333bb629e8cf', '5d238945815ce4768e4f2e52ea5e436e69cb179bea578e719c139c427b655f0e', '2026-06-27 17:26:37'),
(8, 7, 'festivites-fourragere', 'reportage_view', NULL, '{\"title\":\"The Fourragère festivities\",\"lang\":\"en\",\"path\":\"/en/reportages/festivites-fourragere/\"}', 'en', NULL, 'a0bf94492e2dbcea7f63b4f6a3a7206f303ec431040374aa837eaa35fae1ba8a', '5d238945815ce4768e4f2e52ea5e436e69cb179bea578e719c139c427b655f0e', '2026-06-27 17:36:07');

-- --------------------------------------------------------

--
-- Structure de la table `site_access_events`
--

CREATE TABLE `site_access_events` (
  `id` bigint UNSIGNED NOT NULL,
  `event_type` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'page_view',
  `page_key` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `page_path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `page_title` varchar(190) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `event_data` text COLLATE utf8mb4_unicode_ci,
  `lang` varchar(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `referrer_domain` varchar(190) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ip_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent_hash` char(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Déchargement des données de la table `site_access_events`
--

INSERT INTO `site_access_events` (`id`, `event_type`, `page_key`, `page_path`, `page_title`, `event_data`, `lang`, `referrer_domain`, `ip_hash`, `user_agent_hash`, `created_at`) VALUES
(1, 'page_view', 'home', '/', 'Joël Lieber — Photographe · Peintre de l\'armée', '{\"title\":\"Joël Lieber — Photographe · Peintre de l\'armée\",\"query\":\"\"}', 'fr', NULL, 'e0061328fa2d7ce8138e3ad56e47d1336735d73295f5f6f10a96f0ba5c6f005c', 'bc2f0df2f7939e995d7f67d78c5bcf6a93e64510671a7ca393e4266beb2089eb', '2026-06-27 17:08:59'),
(2, 'page_view', 'authentifier', '/authentifier', 'Authentifier une œuvre', '{\"title\":\"Authentifier une œuvre\",\"query\":\"\"}', 'fr', 'lieber.fr', 'e0061328fa2d7ce8138e3ad56e47d1336735d73295f5f6f10a96f0ba5c6f005c', 'bc2f0df2f7939e995d7f67d78c5bcf6a93e64510671a7ca393e4266beb2089eb', '2026-06-27 17:09:02'),
(3, 'page_view', 'reportage-detail', '/en/reportages/reportage-guyane/', 'French Guiana, lands and waters — reportage photographique', '{\"title\":\"French Guiana, lands and waters — reportage photographique\",\"query\":\"slug=reportage-guyane\"}', 'en', 'lieber.fr', '79410701f9d8d2281ade8ab6b24bc372c8c423299e3d04f858ee509c8ff440b5', 'c9fb86fa96a2a546d1e87571a672067acc05be5e24d6cba6a5d0b10c6ab84eb5', '2026-06-27 17:15:37'),
(4, 'page_view', 'reportage-detail', '/en/reportages/reportage-guyane/', 'French Guiana, lands and waters — reportage photographique', '{\"title\":\"French Guiana, lands and waters — reportage photographique\",\"query\":\"slug=reportage-guyane\"}', 'en', NULL, '7542dc1a0699072b090e313062c89242d55d6a1926465e36c851c45082343493', 'c9fb86fa96a2a546d1e87571a672067acc05be5e24d6cba6a5d0b10c6ab84eb5', '2026-06-27 17:26:37'),
(5, 'page_view', 'reportage-detail', '/en/reportages/festivites-fourragere/', 'The Fourragère festivities — Kourou, French Guiana', '{\"title\":\"The Fourragère festivities — Kourou, French Guiana\",\"query\":\"slug=festivites-fourragere\"}', 'en', NULL, '9c3bbad9209bb541a4a5d5a2fb27c204abdbbe47acc40ecaa32b17ca3f2b600d', 'c9fb86fa96a2a546d1e87571a672067acc05be5e24d6cba6a5d0b10c6ab84eb5', '2026-06-27 17:36:07');

--
-- Index pour les tables déchargées
--

--
-- Index pour la table `client_galleries`
--
ALTER TABLE `client_galleries`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_client_galleries_slug` (`slug`),
  ADD KEY `idx_client_galleries_status` (`status`),
  ADD KEY `idx_client_galleries_expires` (`expires_at`),
  ADD KEY `idx_client_galleries_scheduled_delete` (`status`,`scheduled_delete_at`);

--
-- Index pour la table `client_gallery_events`
--
ALTER TABLE `client_gallery_events`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_client_gallery_events_gallery_date` (`gallery_id`,`created_at`),
  ADD KEY `idx_client_gallery_events_type` (`event_type`),
  ADD KEY `idx_client_gallery_events_type_created` (`event_type`,`created_at`);

--
-- Index pour la table `client_gallery_invites`
--
ALTER TABLE `client_gallery_invites`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uniq_client_gallery_invite_token` (`token_hash`),
  ADD UNIQUE KEY `uniq_client_gallery_invite_email` (`gallery_id`,`invitee_email`),
  ADD KEY `idx_client_gallery_invites_gallery` (`gallery_id`),
  ADD KEY `idx_client_gallery_invites_status` (`status`),
  ADD KEY `idx_client_gallery_invites_gallery_created` (`gallery_id`,`created_at`);

--
-- Index pour la table `client_gallery_invite_feedback`
--
ALTER TABLE `client_gallery_invite_feedback`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uniq_client_gallery_invite_photo` (`invite_id`,`photo_id`),
  ADD KEY `idx_client_gallery_invite_feedback_gallery` (`gallery_id`),
  ADD KEY `idx_client_gallery_invite_feedback_photo` (`photo_id`),
  ADD KEY `idx_client_gallery_invite_feedback_like` (`liked`),
  ADD KEY `idx_client_gallery_feedback_gallery_updated` (`gallery_id`,`updated_at`);

--
-- Index pour la table `client_gallery_photos`
--
ALTER TABLE `client_gallery_photos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_client_gallery_photos_gallery` (`gallery_id`,`ordre`,`id`),
  ADD KEY `idx_client_gallery_photos_selected` (`gallery_id`,`is_selected`);

--
-- Index pour la table `photos`
--
ALTER TABLE `photos`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_photos_reportage_ordre` (`reportage_id`,`ordre`);

--
-- Index pour la table `reportages`
--
ALTER TABLE `reportages`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `uq_reportages_slug` (`slug`),
  ADD KEY `idx_reportages_created_at` (`created_at`);

--
-- Index pour la table `reportage_access_events`
--
ALTER TABLE `reportage_access_events`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_reportage_events_reportage_id` (`reportage_id`),
  ADD KEY `idx_reportage_events_slug` (`reportage_slug`),
  ADD KEY `idx_reportage_events_type` (`event_type`),
  ADD KEY `idx_reportage_events_photo` (`photo_filename`),
  ADD KEY `idx_reportage_events_created` (`created_at`),
  ADD KEY `idx_reportage_events_visitor` (`ip_hash`,`user_agent_hash`),
  ADD KEY `idx_reportage_events_slug_created` (`reportage_slug`,`created_at`),
  ADD KEY `idx_reportage_events_slug_type_created` (`reportage_slug`,`event_type`,`created_at`),
  ADD KEY `idx_reportage_events_photo_created` (`reportage_slug`,`photo_filename`(190),`created_at`),
  ADD KEY `idx_reportage_events_visitor_created` (`ip_hash`,`user_agent_hash`,`created_at`);

--
-- Index pour la table `site_access_events`
--
ALTER TABLE `site_access_events`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_site_access_events_type` (`event_type`),
  ADD KEY `idx_site_access_events_page_path` (`page_path`),
  ADD KEY `idx_site_access_events_page_key` (`page_key`),
  ADD KEY `idx_site_access_events_lang` (`lang`),
  ADD KEY `idx_site_access_events_referrer` (`referrer_domain`),
  ADD KEY `idx_site_access_events_created` (`created_at`),
  ADD KEY `idx_site_access_events_visitor` (`ip_hash`,`user_agent_hash`),
  ADD KEY `idx_site_access_events_path_created` (`page_path`(190),`created_at`),
  ADD KEY `idx_site_access_events_type_created` (`event_type`,`created_at`),
  ADD KEY `idx_site_access_events_lang_created` (`lang`,`created_at`),
  ADD KEY `idx_site_access_events_referrer_created` (`referrer_domain`,`created_at`),
  ADD KEY `idx_site_access_events_visitor_created` (`ip_hash`,`user_agent_hash`,`created_at`);

--
-- AUTO_INCREMENT pour les tables déchargées
--

--
-- AUTO_INCREMENT pour la table `client_galleries`
--
ALTER TABLE `client_galleries`
  MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT pour la table `client_gallery_events`
--
ALTER TABLE `client_gallery_events`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=59;

--
-- AUTO_INCREMENT pour la table `client_gallery_invites`
--
ALTER TABLE `client_gallery_invites`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT pour la table `client_gallery_invite_feedback`
--
ALTER TABLE `client_gallery_invite_feedback`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

--
-- AUTO_INCREMENT pour la table `client_gallery_photos`
--
ALTER TABLE `client_gallery_photos`
  MODIFY `id` int UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=44;

--
-- AUTO_INCREMENT pour la table `photos`
--
ALTER TABLE `photos`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=107;

--
-- AUTO_INCREMENT pour la table `reportages`
--
ALTER TABLE `reportages`
  MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT pour la table `reportage_access_events`
--
ALTER TABLE `reportage_access_events`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT pour la table `site_access_events`
--
ALTER TABLE `site_access_events`
  MODIFY `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- Contraintes pour les tables déchargées
--

--
-- Contraintes pour la table `client_gallery_events`
--
ALTER TABLE `client_gallery_events`
  ADD CONSTRAINT `fk_client_gallery_events_gallery` FOREIGN KEY (`gallery_id`) REFERENCES `client_galleries` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `client_gallery_photos`
--
ALTER TABLE `client_gallery_photos`
  ADD CONSTRAINT `fk_client_gallery_photos_gallery` FOREIGN KEY (`gallery_id`) REFERENCES `client_galleries` (`id`) ON DELETE CASCADE;

--
-- Contraintes pour la table `photos`
--
ALTER TABLE `photos`
  ADD CONSTRAINT `fk_photos_reportage` FOREIGN KEY (`reportage_id`) REFERENCES `reportages` (`id`) ON DELETE CASCADE;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
