(1088,544,2,'','Avatar: Tales from Pandora','n the year 2154, on the moon Pandora, in a galaxy far from earth, Marine Jake Sully joined the native Na’vi through an avatar body and became their leader in the fight against the destructive RDA organization and human colonization. In Tsu’tey’s Path experience these events—events of the first Avatar movie—from the perspective of Na’vi Omatikaya warrior Tsu’tey!','2025-11-28 09:00:00','',0,'',0,'assets/img/avatar/PEAR-Logo-James-Cameron-Avatar-Comics-Tales-From-Pandora.webp',''),(1089,545,1,'','Mister Miracle','Aucune prison ne peut le retenir. Aucun piège ne peut l’enfermer. Il est Scott Free, la sensation mondiale connue sous le nom de Mister Miracle, et il est le plus grand artiste de l’évasion ayant jamais vécu. Mais parviendra-t-il à réaliser l’ultime numéro… et à s’échapper de la mort elle-même ?','2027-01-01 09:00:00','Non daté',0,'',0,'assets/img/dc-studios/PEAR-Logo-DC-Studios-Mister-Miracle.webp',''),(1090,545,2,'','Mister Miracle','No prison can hold him. No trap can contain him. He is Scott Free, the worldwide celebrity sensation known as Mister Miracle, and he is the greatest escape artist who ever lived. But can he pull off the ultimate trick – and escape death itself?','2027-01-01 09:00:00','No Date',0,'',0,'assets/img/dc-studios/PEAR-Logo-DC-Studios-Mister-Miracle.webp',''),(1091,546,1,'','Avatar, le dernier maître de l\'air Saison 2 (Adaptation Live Action)','','2026-04-22 09:00:00','',0,'https://youtu.be/3Z4eA_58-Cs?si=9Rd1s6OY4-sfelir',0,'assets/img/avatar-the-last-airbender/PEAR-Logo-FR-Avatar-Le-Dernier-Maitre-De-L-Air-Netflix-Live-Action.webp',''),(1092,546,2,'','Avatar: The Last Airbender Season 2 (Live Action)','','2026-04-22 09:00:01','',0,'https://youtu.be/oZoZ1ivUdjU?si=wS4rYiWRJ55UR9UJ',0,'assets/img/avatar-the-last-airbender/PEAR-Logo-Avatar-The-Last-Airbender-Netflix-Live-Action.webp',''),(1093,547,1,'','Stranger Things : Six','978. Six n’est pas une adolescente comme les autres : elle a un don, celui de prédire l’avenir. Enfermée dans le laboratoire d’Hawkins, elle est soumise à d’étranges tests sous la supervision du docteur Brenner, qui est prêt à tout pour exploiter son potentiel. Mais dans un flash, elle aperçoit un futur funeste et grouillant de monstres… à moins qu’ils ne soient déjà autour d’elle ?','2020-01-02 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Six.webp',''),(1094,547,2,'','Stranger Things: Six','A teenage girl with precognitive abilities, has struggled through a lifetime of exploitation only to end up the pawn of a government agency that wants to harness her powers for its own ends.','2019-05-29 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Six.webp',''),(1095,548,1,'','Stranger Things : Dans les flammes','Des années après s’être échappés du laboratoire d’Hawkins, Ricky et Marcy – deux ex-sujets du docteur Brenner – tentent de retrouver une vie normale. Alors qu’ils sont sur le point de prendre un nouveau départ, leur ancienne prison se retrouve soudainement à la une des journaux nationaux. Ils décident d’affronter leur passé et prennent la route dans l’espoir d’aider les autres enfants qui étaient enfermés avec eux. Lorsqu’ils apprennent que Neuf – la sœur jumelle de Marcy – est toujours en vie, une course contre la montre commence pour la sauver.','2020-11-19 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Dans-Les-Flammes.webp',''),(1096,548,2,'','Stranger Things: Into the Fire','Years after escaping Hawkins Lab, two of Dr. Brenner\'s former subjects seek to live normal lives. When news reaches them that the lab was shut down, they go on a harrowing search for Nine, a powerful pyrokinetic whose shattered psyche threatens to burn them all to ashes if they can\'t find her and free her from her own malevolent imagination.','2020-01-08 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Into-The-Fire.webp',''),(1097,549,1,'','Stranger Things et Dungeons & Dragons','Asseyez-vous à la table des quatre garçons de Hawkins tandis qu’ils découvrent ensemble les monstres légendaires et les aventures épiques du jeu de rôle Dungeons & Dragons.','2021-10-07 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Et-Donjons-Et-Dragons.webp',''),(1098,549,2,'','Stranger Things and Dungeons & Dragons','Follow the crew from Hawkins, Indiana, as they discover the legendary monsters and epic adventures of the Dungeons & Dragons tabletop role-playing game together. Long before the dreaded Demogorgon took one of them to the Upside Down, watch Mike, Lucas, and Will bond with Dustin for the first time over the game that would define their childhood. See the party come together as a team through communal stories and perilous quests to learn important lessons about friendship and find the courage to stand up to the bullies that challenge their everyday.\n','2020-11-04 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-And-Dungeons-And-Dragons.webp',''),(1099,550,1,'','Stranger Things : De l’autre côté','Will Byers ne comprend pas dans quel monde il se trouve ni comment il est arrivé là, mais une chose est sûre : il n’est pas en sécurité. Sa famille et ses amis ont disparu, tandis qu’un terrible monstre rôde dans les ténèbres de cette réalité parallèle. Seule la voix de sa mère semble parvenir à traverser les dimensions, mais comment lui répondre ? Sait-elle au moins où il est ?','2019-07-04 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-De-L-Autre-Cote.webp',''),(1100,550,2,'','Stranger Things: The Other Side','When Will Byers finds himself in the Upside Down, an impossible dark parody of his own world, he\'s understandably frightened. But that\'s nothing compared with the fear that takes hold when he realizes whats in that world with him!','2019-05-01 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-The-Other-Side.webp',''),(1101,551,1,'','Stranger Things : Tales from Hawkins','À première vue, Hawkins, dans l\'Indiana, semble être le genre de ville où rien ne sort de l\'ordinaire, mais à l\'automne 1983, deux chasseurs se rendent dans les bois avec leur fusil et un pack de bière, et deviennent la proie d\'une bête cauchemardesque. Lorsque Barb Holland disparaît, Murray Bauman est sur l\'affaire, à condition qu\'il puisse faire abstraction de son propre esprit soupçonneux pour la résoudre. Le projet de film scolaire de Robin Buckley lui donne l\'occasion de travailler avec la personne qu\'elle aime en secret, mais cela ne fera-t-il pas que rendre plus difficile l\'acceptation de ses sentiments ? Et lorsque des citrouilles commencent à pourrir de façon inexplicable, la querelle entre deux familles de fermiers atteint son point critique.\n','2025-06-05 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Tales-From-Hawkins.webp',''),(1102,551,2,'','Stranger Things: Tales from Hawkins','On the surface, Hawkins seems like the kind of town where nothing bad could ever happen, but in the fall of \'83 it is anything but safe. When two friends head out into the woods with their rifles and a six-pack, the would-be hunters find themselves the prey of a nightmarish beast who has claimed the wilderness around town and everything inside it, including them. ','2023-02-08 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Tales-From-Hawkins.webp',''),(1103,552,1,'','Stranger Things : La Brute','James et Troy – les petites frappes qui terrorisaient Mike, Lucas, Dustin et Will – tentent de percer le mystère des facultés psychiques d’Onze dans ce récit terrifiant ! Troy fait des cauchemars à propos de cette dernière depuis qu’elle l’a humilié devant toute l’école et qu’elle lui a cassé le bras. Impuissant et anxieux, il est déterminé à prouver que ce qui s’est passé avec elle n’était qu’une mise en scène et que ses prétendus « super-pouvoirs » sont une supercherie. C’est alors que James et lui vont faire la rencontre des Démo-chiens…','2021-02-04 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-La-Brute.webp',''),(1104,552,2,'','Stranger Things: The Bully','The bullies of Stranger Things try to uncover the mystery of Eleven\'s psychic powers in this scary all-ages graphic novel! Troy has been having nightmares about El ever since she embarrassed him in front of the school and broke his arm in season 1. Feeling powerless and anxious, Troy is determined to prove that what happened between him and El is only some form of trickery. That is until he and James encounter demodogs!','2020-07-31 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-The-Bully.webp',''),(1105,553,1,'','Stranger Things : Zombie Boys','1983. Le printemps s’est installé dans la (presque) paisible ville d’Hawkins. Mike, Lucas, Dustin et Will essayent tant bien que mal de se remettre de leur rencontre traumatisante avec le Démogorgon. Le Monde à l’Envers continue de les hanter et des tensions naissent entre les quatre garçons : leur groupe est au bord de l’éclatement. C’est à ce moment que Joey Kim, un nouvel élève, vient frapper à la porte du club d’audiovisuel, un caméscope à la main et des idées plein la tête. Cet apprenti Spielberg veut en effet réaliser un film de zombies basé sur les dessins de Will, et leur propose de jouer dedans. Ce projet sera sans doute l’opportunité pour les jeunes acteurs de resserrer leurs liens et de surmonter les horreurs qu’ils ont vécues.','2020-08-27 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Zombie-Boys.webp',''),(1106,553,2,'','Stranger Things: Zombie Boys','It\'s spring in the normally quiet town of Hawkins, Indiana. Mike, Lucas, Dustin, and Will are still grappling with the traumatic encounters with the Demogorgon and the Upside Down in season one of the hit Netflix series. As tensions rise and fractures begin to form in the group, a new kid shows up to AV club with a Betamax Camcorder and a vision. The new Spielberg-wannabe friend, Joey Kim, wants to make a zombie horror movie based on Wills drawings, and in the process they come to terms with the real horrors theyve already faced.','2020-01-22 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Zombie-Boys.webp',''),(1107,554,1,'','Stranger Things : Colo de sciences','Dustin passe ses vacances d’été dans une colonie scientifique au milieu des bois, et pour la première fois depuis longtemps, il est loin d’Hawkins et de ses amis. Tout en étant confronté à une bande de petits intellos despotiques qui cherche à l’intimider, il doit faire face à une menace bien plus importante : une sinistre silhouette masquée vient perturber le camp. Quand les moniteurs commencent à disparaître les uns après les autres, Dustin comprend qu’il ne pourra pas résoudre ce mystère seul. Mais arrivera-t-il à se mettre sur la même longueur d’onde que Suzie et les autres adolescents ?','2021-06-03 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Colo-De-Sciences.webp',''),(1108,554,2,'','Stranger Things: Science Camp','Dustin arrives at Camp Know Where to navigate the new social hierarchy without the support of his Hawkins adventuring party. While also faced with nerdy bullies, a new menace haunts the young scientists and camp counselors. A mysterious figure with sinister intent arrives to disrupt the serene woodland scene. The solution won\'t take rocket science, but Dustin will have to get on the same wavelength as the other campers before tensions reach a boiling point.','2020-09-30 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Science-Camp.webp',''),(1109,555,1,'','Stranger Things : La Tombe d\'Ybwen','Juillet 1985. La bande d’Hawkins a survécu à la bataille contre le flagelleur mental, mais Will et Joyce sont toujours sous le choc après la mort de Bob Newby. Après avoir découvert une mystérieuse carte dans l’un des cartons de souvenirs de Bob, Will retrouve la bande pour enquêter. Mais une tempête de neige approchant, les garçons ont peur de le suivre. Lorsque Mike, Dustin et Lucas apprennent que Will s’est aventuré seul dans la tempête, ils s’empressent de partir à sa recherche pour le ramener. Mais quand ils le retrouvent, il est trop tard pour faire demi-tour. Ils n’ont pas d’autre choix que de suivre les indices qui les mènent dans une grotte truffée de pièges.','2023-07-06 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-La-Tombe-D-Ybwen.webp',''),(1110,555,2,'','Stranger Things: The Tomb of Ybwen','It\'s January 1985 the Hawkins crew survived their battle with the mind flayer, but Will and Joyce are still reeling from the recent death of Bob Newby. Will\'s friends have been too busy with their girlfriends to notice how much he is struggling. After he and Mr. Clarke discover a mysterious map Bob left in a box of old nerdy memorabilia, Will rallies the crew to investigate.','2021-09-29 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Tomb-Of-Ybwen.webp',''),(1111,556,1,'','Stranger Things : Erica la Grande','Après avoir contribué à sauver la ville de Hawkins de mystérieuses créatures surnaturelles et d’espions russes, Erica a soif d’aventures. Malheureusement, son frère est trop occupé pour jouer avec elle. Elle espère convaincre ses amis de jouer à Donjons et Dragons, mais la jeune fille éprouve des difficultés à abandonner le feu des projecteurs et se dispute avec son « ennamie », Tanya.','2022-06-02 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Erica-La-Grande.webp',''),(1112,556,2,'','Stranger Things: Erica the Great','In this Middle Grade foray into eighties-nostalgia hit series from Netflix, Erica\'s frenemy loses track of her mother\'s prized Parakeet, the two will have to work together to return the bird safe and sound or deal with the consequences. They learn that even the toughest and smartest people need a little help now and then. ','2022-02-02 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Erica-The-Great.webp',''),(1113,557,1,'','Stranger Things : Kamchatka','Un éminent scientifique soviétique est enlevé pour travailler sur un projet top secret et se retrouve face à la nouvelle arme ultime du Kremlin… un démogorgon !','2024-05-16 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Kamchatka.webp',''),(1114,557,2,'','Stranger Things: Kamchatka','A Russian scientist is kidnapped by Soviet troops, leaving nothing for his two teenage children but a mysterious case and a whole lot of questions. While their father is dragooned into weaponizing a monster brought back from the US, the two teenagers embark on a harrowing and perilous journey to find him with help from an unlikely ally: an old bad@$$ KGB spy. ','2022-03-23 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-Kamchatka.webp',''),(1115,558,1,'','Stranger Things : Le Voyage','Le capitaine Jacoby est trop fauché pour refuser l’affaire un peu louche que lui propose un groupe de Russes qui veulent retourner de l\'Alaska au Kamchatka à bord de son cargo, le Persephone. Mais les choses tournent mal lorsqu\'un membre de l\'équipage est sauvagement assassiné. Le capitaine et son équipage soupçonnent qu\'il se trame quelque chose d\'étrange et finissent par devoir traquer un monstre alors qu\'une violente tempête fait rage au milieu de l\'océan','2025-11-06 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-FR-Stranger-Things-Comics-BD-Le-Voyage.webp',''),(1116,558,2,'','Stranger Things: The Voyage','Captain Jacoby is too broke to reject a shady deal from a group of Russians looking to get from Alaska back home on his freighter ship The Persephone, but things get turned upside down when a crew member gets butchered,  suspects something far stranger at play.','2023-11-01 09:00:00','',0,'',0,'assets/img/stranger-things/PEAR-Logo-Stranger-Things-Comics-The-Voyage.webp',''),(1117,559,1,'Ère de la Haute République','Star Wars : Fate of the Old Republic','','2029-11-01 09:00:00','Non daté',0,'https://youtu.be/lAmkl1jL0fo?si=9CHYIFSVWXbjzdNg',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Fate-Of-The-Old-Republic.webp',''),(1118,559,2,'Age of Hight Republic','Star Wars: Fate of the Old Republic','','2029-11-01 09:00:00','No date',0,'https://youtu.be/lAmkl1jL0fo?si=9CHYIFSVWXbjzdNg',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Fate-Of-The-Old-Republic.webp',''),(1119,560,1,'Ère de la Haute République','Star Wars : Les Aventures des petits Jedi Saison 1','L\'incroyable parcours des Younglings, de jeunes recrues entamant un long cheminement dans l\'espoir de devenir un jour des chevaliers Jedi. Leur formation va les amener à se confronter à de multiples épreuves et découvrir des valeurs indispensables.','2023-05-04 09:00:00','',0,'https://youtu.be/3JwvPhLbmYQ?si=yRlqIJUM9uJ9ziIf',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Les-Aventures-Des-Petits-Jedi.webp',''),(1120,560,2,'Age of Hight Republic','Star Wars: Young Jedi Adventures Season 1','The incredible journey of the Younglings, young recruits embarking on a long path in the hope of one day becoming Jedi Knights. Their training will lead them through many trials and help them discover essential values.','2023-05-04 09:00:00','',0,'https://youtu.be/otoDnun24zM?si=9qqpe4lugcxEaLRp',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Young-Jedi-Aventures.webp',''),(1121,561,1,'Ère de la Haute République','Star Wars : Les Aventures des petits Jedi Saison 2','L\'incroyable parcours des Younglings, de jeunes recrues entamant un long cheminement dans l\'espoir de devenir un jour des chevaliers Jedi. Leur formation va les amener à se confronter à de multiples épreuves et découvrir des valeurs indispensables.','2024-08-02 09:00:00','',0,'https://youtu.be/3JwvPhLbmYQ?si=yRlqIJUM9uJ9ziIf',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Les-Aventures-Des-Petits-Jedi.webp',''),(1122,561,2,'Age of Hight Republic','Star Wars: Young Jedi Adventures Season 2','The incredible journey of the Younglings, young recruits embarking on a long path in the hope of one day becoming Jedi Knights. Their training will lead them through many trials and help them discover essential values.','2024-08-02 09:00:00','',0,'https://youtu.be/otoDnun24zM?si=9qqpe4lugcxEaLRp',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Young-Jedi-Aventures.webp',''),(1123,562,1,'Ère de la Haute République','Star Wars : Les Aventures des petits Jedi Saison 3','L\'incroyable parcours des Younglings, de jeunes recrues entamant un long cheminement dans l\'espoir de devenir un jour des chevaliers Jedi. Leur formation va les amener à se confronter à de multiples épreuves et découvrir des valeurs indispensables.','2025-12-08 09:00:00','',0,'https://youtu.be/r0-nNMGu1qM?si=wPB_LEnBP0X00Tvp',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Les-Aventures-Des-Petits-Jedi.webp',''),(1124,562,2,'Age of Hight Republic','Star Wars: Young Jedi Adventures Season 3','The incredible journey of the Younglings, young recruits embarking on a long path in the hope of one day becoming Jedi Knights. Their training will lead them through many trials and help them discover essential values.','2025-12-08 09:00:00','',0,'https://youtu.be/NShfDnouL7w?si=jNGsZd4qwBVQXnWJ',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Young-Jedi-Aventures.webp',''),(1125,563,1,'Ère de la Rébellion','Star Wars Battlefront (2015)','Le jeu se concentre sur cinq films de la saga Star Wars. Star Wars Battlefront met en scène des combats armés entre les forces de l\'Empire galactique et d\'une organisation s\'y opposant, l\'Alliance rebelle (parfois appelée la Rébellion) sur diverses planètes de la galaxie fictive','2015-11-19 09:00:00','',0,'https://youtu.be/ZwWLns7-xN8?si=Yxj6g5NjHNXcIESb',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Battlefront.webp',''),(1126,563,2,'Age of Rebellion','Star Wars Battlefront (2015)','The game focuses on five films from the Star Wars saga. Star Wars Battlefront features armed combat between the forces of the Galactic Empire and an opposing organization, the Rebel Alliance (sometimes referred to as the Rebellion), on various planets across the fictional galaxy.','2015-11-19 09:00:00','',0,'https://youtu.be/ZwWLns7-xN8?si=Yxj6g5NjHNXcIESb',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Battlefront.webp',''),(1127,564,1,'Ère de la Rébellion','Star Wars Battlefront II (2017)','Star Wars Battlefront II est un jeu vidéo de tir à la première et troisième personne développé par DICE, Criterion Games et Motive Studios, et édité par Electronic Arts. Le jeu sort le 17 novembre 2017 sur Windows, PlayStation 4 et Xbox One. Il fait suite au jeu vidéo Star Wars Battlefront sorti en 2015.','2017-10-06 09:00:00','',0,'https://youtu.be/PNZQFWLEKHU?si=aYompjMYaJXUXA9x',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Battlefront-2-Two-II.webp',''),(1128,564,2,'Age of Rebellion','Star Wars Battlefront II (2017)','Star Wars Battlefront II is a first- and third-person shooter video game developed by DICE, Criterion Games, and Motive Studios, and published by Electronic Arts. The game was released on November 17, 2017, for Windows, PlayStation 4, and Xbox One. It is the sequel to the video game Star Wars Battlefront, released in 2015.','2017-10-06 09:00:00','',0,'https://youtu.be/Kae-JjbLsgA?si=QrAm_VA3ikQ4_-9q',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Battlefront-2-Two-II.webp',''),(1129,565,1,'Ère de la Rébellion','Star Wars : Squadrons','Star Wars: Squadrons est un jeu vidéo de combat spatial en vue à la première personne se déroulant dans l\'univers de Star Wars, développé par Motive Studios et publié par Electronic Arts.','2020-10-02 09:00:00','',0,'https://youtu.be/gMdz-734WHQ?si=QDnmJ-WmzwWJZlDb',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Squadrons.webp',''),(1130,565,2,'Age of Rebellion','Star Wars: Squadrons','Star Wars: Squadrons is a first-person space combat video game set in the Star Wars universe, developed by Motive Studios and published by Electronic Arts.','2020-10-02 09:00:00','',0,'https://youtu.be/w0eRkhR1z6A?si=a0dyqyfkTeroH9ts',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Squadrons.webp',''),(1131,566,1,'Ère de la Haute République','Star Wars : Eclipse','','2027-11-01 09:00:00','Non daté',0,'https://youtu.be/4cJpiOPKH14?si=lAx8RoEW_cREzrIh',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Eclipse.webp',''),(1132,566,2,'Age of Hight Republic','Star Wars: Eclipse','','2027-11-01 09:00:00','No date',0,'https://youtu.be/4cJpiOPKH14?si=lAx8RoEW_cREzrIh',0,'assets/img/starwars/age-of-high-republic/PEAR-Logo-Star-Wars-Eclipse.webp',''),(1133,567,1,'Ère de la Rébellion','Star Wars : Tales from the Galaxy\'s Edge','','2020-11-19 09:00:00','',0,'https://youtu.be/em8WoUrw9Zs?si=_XDZeBJoF-EeuC-N',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Tales-From-The-Galaxy-s-Edge.webp',''),(1134,567,2,'Age of Rebellion','Star Wars: Tales from the Galaxy\'s Edge','','2020-11-19 09:00:00','',0,'https://youtu.be/em8WoUrw9Zs?si=_XDZeBJoF-EeuC-N',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Tales-From-The-Galaxy-s-Edge.webp',''),(1135,568,1,'Ère de la Rébellion','Star Wars : Galactic Racer','Star Wars: Galactic Racer est un jeu vidéo de course développé par le studio anglais Fuse Games et édité par Secret Mode. Le jeu est développé en collaboration avec Lucasfilm Games. C\'est un jeu de course d\'arcade. Il se déroule dans l\'univers Star Wars, où le joueur incarne un pilote de module de course.','2026-05-15 09:00:00','2026',0,'https://youtu.be/RiavNl4qxWY?si=1elpQsm0I0EW7_wj',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Galactif-Racer.webp',''),(1136,568,2,'Age of Rebellion','Star Wars: Galactic Racer','Star Wars: Galactic Racer is a racing video game developed by the British studio Fuse Games and published by Secret Mode. The game is developed in collaboration with Lucasfilm Games. It is an arcade racing game set in the Star Wars universe, in which the player takes on the role of a podracing pilot.','2026-05-15 09:00:00','2026',0,'https://youtu.be/RiavNl4qxWY?si=1elpQsm0I0EW7_wj',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Galactif-Racer.webp',''),(1137,569,1,'Ère de la Rébellion','Star Wars Jedi : Fallen Order','Contraint de révéler ses pouvoirs, Cal devient la cible des Inquisiteurs de Dark Vador.\nAvec l’aide de nouveaux alliés, il cherche à reconstruire son lien avec la Force.\nSon voyage l’amène à affronter son passé et à décider ce que signifie être Jedi dans une galaxie dominée par l’Empire.','2019-11-15 09:00:00','',0,'https://youtu.be/Fzy9Y3JDMZI?si=zia04N7EaUX8NC2h',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Jedi-Fallen-Order.webp',''),(1138,569,2,'Age of Rebellion','Star Wars Jedi: Fallen Order','Forced to reveal his powers, Cal becomes a target of Darth Vader’s Inquisitors.\nWith the help of new allies, he seeks to rebuild his connection to the Force.\nHis journey leads him to confront his past and decide what it truly means to be a Jedi in a galaxy ruled by the Empire.','2019-11-15 09:00:00','',0,'https://youtu.be/0GLbwkfhYZk?si=aluIWk0v-x6_SyXm',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Jedi-Fallen-Order.webp',''),(1139,570,1,'Ère de la Rébellion','Star Wars Jedi : Survivor','Cinq ans après les événements de Jedi: Fallen Order, Cal Kestis poursuit son combat contre l’Empire.\nAlors que l’obscurité se referme sur lui, il est poussé dans ses derniers retranchements et doit décider jusqu’où il est prêt à aller pour protéger ceux qui lui sont chers.\nHanté par le passé et traqué par de puissants ennemis, le périple de Cal mettra à l’épreuve ce que signifie réellement survivre en tant que l’un des derniers Jedi.','2023-04-28 09:00:00','',0,'https://youtu.be/gFbiG2XedCw?si=8AO_C97OO0iYbake',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Jedi-Survivor.webp',''),(1140,570,2,'Age of Rebellion','Star Wars Jedi: Survivor','Five years after the events of Jedi: Fallen Order, Cal Kestis continues his fight against the Empire.\nAs darkness closes in, he is pushed to his limits and must decide how far he is willing to go to protect those he cares about.\nHaunted by the past and hunted by powerful enemies, Cal’s journey will test what it truly means to survive as one of the last Jedi.','2023-04-28 09:00:00','',0,'https://youtu.be/VRaobDJjiec?si=tfEbY9w3Ap22kesd',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Jedi-Survivor.webp',''),(1141,571,1,'Ère de la Rébellion','Star Wars Outlaws','Une voleuse audacieuse se retrouve mêlée à un casse qui déclenche une guerre silencieuse entre les plus puissants syndicats criminels de la galaxie. Traquée par l’Empire et ses anciens alliés, elle n’a d’autre choix que de miser sur son instinct, sa ruse et des alliances fragiles. Dans l’ombre des grandes légendes, c’est la survie des hors-la-loi qui se joue.','2024-08-30 09:00:00','',0,'https://youtu.be/PR5-iSxp-yw?si=HS5sx5hrUqoL8NSX',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Outlaws.webp',''),(1142,571,2,'Age of Rebellion','Star Wars Outlaws','An audacious thief gets caught up in a heist that sparks a silent war between the galaxy’s most powerful criminal syndicates. Hunted by the Empire and her former allies, she has no choice but to rely on her instincts, cunning, and fragile alliances. In the shadows of great legends, the outlaws’ survival is at stake.','2024-08-30 09:00:00','',0,'https://youtu.be/HlfuN4yj3yg?si=IHHqrrs0qG780tsN',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Outlaws.webp',''),(1143,572,1,'Ère de la Rébellion','Vader Immortal : A Star Wars VR Series','La série, qui se déroule entre les événements de La Revanche des Sith et Rogue One, suit un contrebandier sensible à la Force, descendant de la célèbre Lady Corvax, qui est fait prisonnier par Dark Vador.','2019-05-21 09:00:00','',0,'https://youtu.be/uPEss1KRccI?si=Exh6nZQBlhdbv1aZ',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Vader-Immortal.webp',''),(1144,572,2,'Age of Rebellion','Vader Immortal: A Star Wars VR Series','The series, taking place between the events of Revenge of the Sith and Rogue One, follows a Force-sensitive smuggler, a descendant of the famous Lady Corvax, who is taken captive by Darth Vader.','2019-05-21 09:00:00','',0,'https://youtu.be/uPEss1KRccI?si=Exh6nZQBlhdbv1aZ',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Vader-Immortal.webp',''),(1145,573,1,'Ère de la Rébellion','Vader Immortal : A Star Wars VR Series - Épisode 2','La série, qui se déroule entre les événements de La Revanche des Sith et Rogue One, suit un contrebandier sensible à la Force, descendant de la célèbre Lady Corvax, qui est fait prisonnier par Dark Vador.','2019-09-25 09:00:00','',0,'https://youtu.be/uPEss1KRccI?si=Exh6nZQBlhdbv1aZ',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Vader-Immortal.webp',''),(1146,573,2,'Age of Rebellion','Vader Immortal: A Star Wars VR Series - Episode II','The series, taking place between the events of Revenge of the Sith and Rogue One, follows a Force-sensitive smuggler, a descendant of the famous Lady Corvax, who is taken captive by Darth Vader.','2019-09-25 09:00:00','',0,'https://youtu.be/uPEss1KRccI?si=Exh6nZQBlhdbv1aZ',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Vader-Immortal.webp',''),(1147,574,1,'Ère de la Rébellion','Vader Immortal : A Star Wars VR Series - Épisode 3','La série, qui se déroule entre les événements de La Revanche des Sith et Rogue One, suit un contrebandier sensible à la Force, descendant de la célèbre Lady Corvax, qui est fait prisonnier par Dark Vador.','2019-11-21 09:00:00','',0,'https://youtu.be/uPEss1KRccI?si=Exh6nZQBlhdbv1aZ',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Vader-Immortal.webp',''),(1148,574,2,'Age of Rebellion','Vader Immortal: A Star Wars VR Series - Episode III','The series, taking place between the events of Revenge of the Sith and Rogue One, follows a Force-sensitive smuggler, a descendant of the famous Lady Corvax, who is taken captive by Darth Vader.','2019-11-21 09:00:00','',0,'https://youtu.be/uPEss1KRccI?si=Exh6nZQBlhdbv1aZ',0,'assets/img/starwars/age-of-rebellion/PEAR-Logo-Star-Wars-Vader-Immortal.webp','');

--
-- Table structure for table `pear_contenttype`
--

CREATE TABLE `pear_contenttype` (
  `id` int unsigned NOT NULL,
  `code` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_contenttype`
--

INSERT INTO `pear_contenttype` VALUES (8,'BANDE-DESSINE'),(5,'COMICS'),(3,'COURT-METRAGE'),(7,'EVENEMENT-JOUABLE'),(1,'FILM'),(4,'JEU-VIDEO'),(2,'SERIE'),(6,'THEATRE');

--
-- Table structure for table `pear_contenttype_lang`
--

CREATE TABLE `pear_contenttype_lang` (
  `id` int unsigned NOT NULL,
  `idContentType` int unsigned NOT NULL,
  `idLang` int unsigned NOT NULL,
  `label` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `foreign_pear_contenttype_idContentType` (`idContentType`),
  KEY `foreign_pear_contenttype_lang_idLang` (`idLang`),
  CONSTRAINT `foreign_pear_contenttype_idContentType` FOREIGN KEY (`idContentType`) REFERENCES `pear_contenttype` (`id`),
  CONSTRAINT `foreign_pear_contenttype_lang_idLang` FOREIGN KEY (`idLang`) REFERENCES `pear_lang` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_contenttype_lang`
--

INSERT INTO `pear_contenttype_lang` VALUES (1,1,1,'Film'),(2,1,2,'Film'),(3,2,1,'Série'),(4,2,2,'Series'),(5,3,1,'Court-métrage'),(6,3,2,'Short film'),(7,4,1,'Jeu-vidéo'),(8,4,2,'Video game'),(9,5,1,'Comics'),(10,5,2,'Comics'),(11,6,1,'Théatre'),(12,6,2,'Theater');

--
-- Table structure for table `pear_country`
--

CREATE TABLE `pear_country` (
  `id` int unsigned NOT NULL,
  `code` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `alpha2` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `alpha3` varchar(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_country`
--

INSERT INTO `pear_country` VALUES (1,'FRENCH-REPUBLIC','France','FR','FRA'),(2,'UNITED-STATES-OF-AMERICA','United States of America','US','USA');

--
-- Table structure for table `pear_country_lang`
--

CREATE TABLE `pear_country_lang` (
  `id` int unsigned NOT NULL,
  `idCountry` int unsigned NOT NULL,
  `idLang` int unsigned NOT NULL,
  `code` varchar(128) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`),
  KEY `foreign_pear_country_lang_idCountry` (`idCountry`),
  KEY `foreign_pear_country_lang_idLang` (`idLang`),
  CONSTRAINT `foreign_pear_country_lang_idCountry` FOREIGN KEY (`idCountry`) REFERENCES `pear_country` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `foreign_pear_country_lang_idLang` FOREIGN KEY (`idLang`) REFERENCES `pear_lang` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_country_lang`
--

INSERT INTO `pear_country_lang` VALUES (1,1,1,'fr-FR'),(2,2,2,'en-US');

--
-- Table structure for table `pear_email_verification_token`
--

CREATE TABLE `pear_email_verification_token` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `userId` int unsigned NOT NULL,
  `tokenHash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `expiresAt` datetime NOT NULL,
  `usedAt` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_verify_token_hash` (`tokenHash`),
  KEY `idx_verify_user` (`userId`),
  CONSTRAINT `fk_verify_user` FOREIGN KEY (`userId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_email_verification_token`
--

INSERT INTO `pear_email_verification_token` VALUES (1,1,'b5513934ca96733a07379180d4b44152cfc4ea94d4a68d9c77f757c29d0c7827','2026-01-31 17:20:24','2026-02-01 18:20:24','2026-01-31 18:20:31'),(2,4,'0e17eaefb0c11356bb7400efffb62a0249e2bad1e8359c3bf0426aeacbdab9ae','2026-02-01 14:05:20','2026-02-02 15:05:20','2026-02-01 15:05:50'),(3,7,'0eee2774a4def75f781957b72c3c0c81ab3ec1ee6ea0a16117a62e62f321d799','2026-02-28 13:35:04','2026-03-01 14:35:04','2026-02-28 14:35:18');

--
-- Table structure for table `pear_forbidden_name_term`
--

CREATE TABLE `pear_forbidden_name_term` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `term` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `normalizedTerm` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `compactTerm` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `category` enum('hate_ideology','terrorism','pedocrime','sexual_violence','violent_crime','human_exploitation') COLLATE utf8mb4_unicode_ci NOT NULL,
  `severity` enum('high','critical') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'high',
  `matchMode` enum('exact','contains') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'exact',
  `languages` json DEFAULT NULL,
  `notes` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `isActive` tinyint(1) NOT NULL DEFAULT '1',
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_forbidden_name_term` (`normalizedTerm`,`matchMode`),
  KEY `idx_forbidden_name_active_match` (`isActive`,`matchMode`),
  KEY `idx_forbidden_name_compact` (`compactTerm`)
) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_forbidden_name_term`
--

INSERT INTO `pear_forbidden_name_term` VALUES (1,'hitler','hitler','hitler','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Nazism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(2,'adolf hitler','adolf hitler','adolfhitler','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Nazism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(3,'heil hitler','heil hitler','heilhitler','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Nazism slogan',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(4,'sieg heil','sieg heil','siegheil','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Nazism slogan',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(5,'nazi','nazi','nazi','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Nazism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(6,'nazism','nazism','nazism','hate_ideology','critical','contains','[\"en-US\"]','Nazism ideology',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(7,'nazisme','nazisme','nazisme','hate_ideology','critical','contains','[\"fr-FR\"]','Nazism ideology',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(8,'neo nazi','neo nazi','neonazi','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Neo-Nazism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(9,'white power','white power','whitepower','hate_ideology','critical','contains','[\"en-US\"]','White supremacist slogan',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(10,'white supremacist','white supremacist','whitesupremacist','hate_ideology','critical','contains','[\"en-US\"]','White supremacist reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(11,'white supremacy','white supremacy','whitesupremacy','hate_ideology','critical','contains','[\"en-US\"]','White supremacist ideology',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(12,'supremacie blanche','supremacie blanche','supremacieblanche','hate_ideology','critical','contains','[\"fr-FR\"]','White supremacist ideology',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(13,'supremaciste blanc','supremaciste blanc','supremacisteblanc','hate_ideology','critical','contains','[\"fr-FR\"]','White supremacist reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(14,'supremaciste blanche','supremaciste blanche','supremacisteblanche','hate_ideology','critical','contains','[\"fr-FR\"]','White supremacist reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(15,'ku klux klan','ku klux klan','kukluxklan','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Hate organization',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(16,'kkk','kkk','kkk','hate_ideology','critical','exact','[\"fr-FR\", \"en-US\"]','Hate organization shorthand',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(17,'antisemite','antisemite','antisemite','hate_ideology','critical','contains','[\"fr-FR\", \"en-US\"]','Antisemitic reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(18,'antisemitic','antisemitic','antisemitic','hate_ideology','critical','contains','[\"en-US\"]','Antisemitic reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(19,'antisemitism','antisemitism','antisemitism','hate_ideology','critical','contains','[\"en-US\"]','Antisemitic ideology',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(20,'antisemitisme','antisemitisme','antisemitisme','hate_ideology','critical','contains','[\"fr-FR\"]','Antisemitic ideology',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(21,'holocaust denial','holocaust denial','holocaustdenial','hate_ideology','critical','contains','[\"en-US\"]','Genocide denial',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(22,'deni de la shoah','deni de la shoah','denidelashoah','hate_ideology','critical','contains','[\"fr-FR\"]','Genocide denial',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(23,'deni de l holocauste','deni de l holocauste','denidelholocauste','hate_ideology','critical','contains','[\"fr-FR\"]','Genocide denial',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(24,'mort aux juifs','mort aux juifs','mortauxjuifs','hate_ideology','critical','contains','[\"fr-FR\"]','Explicit hate slogan',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(25,'kill all jews','kill all jews','killalljews','hate_ideology','critical','contains','[\"en-US\"]','Explicit hate slogan',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(26,'terrorist','terrorist','terrorist','terrorism','critical','contains','[\"en-US\"]','Terrorism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(27,'terrorism','terrorism','terrorism','terrorism','critical','contains','[\"en-US\"]','Terrorism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(28,'terroriste','terroriste','terroriste','terrorism','critical','contains','[\"fr-FR\"]','Terrorism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(29,'terrorisme','terrorisme','terrorisme','terrorism','critical','contains','[\"fr-FR\"]','Terrorism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(30,'daesh','daesh','daesh','terrorism','critical','contains','[\"fr-FR\", \"en-US\"]','Terrorist organization',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(31,'al qaeda','al qaeda','alqaeda','terrorism','critical','contains','[\"fr-FR\", \"en-US\"]','Terrorist organization',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(32,'taliban','taliban','taliban','terrorism','critical','contains','[\"fr-FR\", \"en-US\"]','Terrorist organization',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(33,'jihadist','jihadist','jihadist','terrorism','high','contains','[\"en-US\"]','Violent extremism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(34,'djihadiste','djihadiste','djihadiste','terrorism','high','contains','[\"fr-FR\"]','Violent extremism reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(35,'pedo','pedo','pedo','pedocrime','critical','contains','[\"fr-FR\", \"en-US\"]','Pedocriminality shorthand',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(36,'pedophile','pedophile','pedophile','pedocrime','critical','contains','[\"fr-FR\", \"en-US\"]','Pedocriminality reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(37,'pedophilia','pedophilia','pedophilia','pedocrime','critical','contains','[\"en-US\"]','Pedocriminality reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(38,'pedophilie','pedophilie','pedophilie','pedocrime','critical','contains','[\"fr-FR\"]','Pedocriminality reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(39,'pedocriminal','pedocriminal','pedocriminal','pedocrime','critical','contains','[\"en-US\"]','Pedocriminality reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(40,'pedocrime','pedocrime','pedocrime','pedocrime','critical','contains','[\"fr-FR\", \"en-US\"]','Pedocriminality reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(41,'pedocriminalite','pedocriminalite','pedocriminalite','pedocrime','critical','contains','[\"fr-FR\"]','Pedocriminality reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(42,'child molester','child molester','childmolester','pedocrime','critical','contains','[\"en-US\"]','Child sexual abuse reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(43,'child rapist','child rapist','childrapist','pedocrime','critical','contains','[\"en-US\"]','Child sexual abuse reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(44,'violeur d enfant','violeur d enfant','violeurdenfant','pedocrime','critical','contains','[\"fr-FR\"]','Child sexual abuse reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(45,'violeur d enfants','violeur d enfants','violeurdenfants','pedocrime','critical','contains','[\"fr-FR\"]','Child sexual abuse reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(46,'rapist','rapist','rapist','sexual_violence','critical','contains','[\"en-US\"]','Sexual violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(47,'rape','rape','rape','sexual_violence','critical','exact','[\"en-US\"]','Sexual violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(48,'violeur','violeur','violeur','sexual_violence','critical','contains','[\"fr-FR\"]','Sexual violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(49,'violeuse','violeuse','violeuse','sexual_violence','critical','contains','[\"fr-FR\"]','Sexual violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(50,'murderer','murderer','murderer','violent_crime','high','contains','[\"en-US\"]','Violent crime reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(51,'mass murderer','mass murderer','massmurderer','violent_crime','critical','contains','[\"en-US\"]','Mass violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(52,'serial killer','serial killer','serialkiller','violent_crime','critical','contains','[\"en-US\"]','Violent crime reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(53,'tueur en serie','tueur en serie','tueurenserie','violent_crime','critical','contains','[\"fr-FR\"]','Violent crime reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(54,'genocide','genocide','genocide','violent_crime','critical','contains','[\"fr-FR\", \"en-US\"]','Mass violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(55,'genocidal','genocidal','genocidal','violent_crime','critical','contains','[\"en-US\"]','Mass violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(56,'genocidaire','genocidaire','genocidaire','violent_crime','critical','contains','[\"fr-FR\"]','Mass violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(57,'ethnic cleansing','ethnic cleansing','ethniccleansing','violent_crime','critical','contains','[\"en-US\"]','Mass violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(58,'nettoyage ethnique','nettoyage ethnique','nettoyageethnique','violent_crime','critical','contains','[\"fr-FR\"]','Mass violence reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(59,'slave owner','slave owner','slaveowner','human_exploitation','high','contains','[\"en-US\"]','Human exploitation reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(60,'slaver','slaver','slaver','human_exploitation','high','contains','[\"en-US\"]','Human exploitation reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(61,'esclavagiste','esclavagiste','esclavagiste','human_exploitation','high','contains','[\"fr-FR\"]','Human exploitation reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(62,'human trafficker','human trafficker','humantrafficker','human_exploitation','critical','contains','[\"en-US\"]','Human trafficking reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(63,'human trafficking','human trafficking','humantrafficking','human_exploitation','critical','contains','[\"en-US\"]','Human trafficking reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(64,'traite humaine','traite humaine','traitehumaine','human_exploitation','critical','contains','[\"fr-FR\"]','Human trafficking reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(65,'trafiquant humain','trafiquant humain','trafiquanthumain','human_exploitation','critical','contains','[\"fr-FR\"]','Human trafficking reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00'),(66,'trafiquant d humains','trafiquant d humains','trafiquantdhumains','human_exploitation','critical','contains','[\"fr-FR\"]','Human trafficking reference',1,'2026-02-28 15:21:00','2026-02-28 15:21:00');

--
-- Table structure for table `pear_lang`
--

CREATE TABLE `pear_lang` (
  `id` int unsigned NOT NULL,
  `code` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `name` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `alpha2` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `alpha3` varchar(3) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_lang`
--

INSERT INTO `pear_lang` VALUES (1,'FRENCH','français','fr','fra'),(2,'ENGLISH','english','en','eng');

--
-- Table structure for table `pear_password_reset_token`
--

CREATE TABLE `pear_password_reset_token` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `userId` int unsigned NOT NULL,
  `tokenHash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `expiresAt` datetime NOT NULL,
  `usedAt` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_reset_token_hash` (`tokenHash`),
  KEY `idx_reset_user` (`userId`),
  CONSTRAINT `fk_reset_user` FOREIGN KEY (`userId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_password_reset_token`
--

INSERT INTO `pear_password_reset_token` VALUES (1,2,'5e4244182493a2255c6c053cb285855aac0c951f6cc4c3a5fe2bc66b1fc37b9e','2026-02-16 12:55:00','2026-02-16 14:55:00','2026-02-16 13:55:16');

--
-- Table structure for table `pear_shop_subscription`
--

CREATE TABLE `pear_shop_subscription` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `userId` int unsigned NOT NULL,
  `subscriptionId` bigint unsigned DEFAULT NULL,
  `internalId` int unsigned DEFAULT NULL,
  `productId` bigint unsigned DEFAULT NULL,
  `status` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `itemTitle` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `billingInterval` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `nextBillingDate` date DEFAULT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_shop_sub_user_subscription` (`userId`,`subscriptionId`),
  KEY `idx_shop_sub_user` (`userId`),
  CONSTRAINT `fk_shop_sub_user` FOREIGN KEY (`userId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_shop_subscription`
--

INSERT INTO `pear_shop_subscription` VALUES (53,6,11370621,1007,10300402827601,'ACTIVE','Box POP! Mystères /mois - Premium - 4 POP!','1 month',NULL,'2026-02-22 19:14:11','2026-02-22 19:14:11'),(196,3,11371683,1008,10300402827601,'ACTIVE','Box POP! Mystères /mois - Premium - 2 POP!','1 month',NULL,'2026-04-10 19:09:18','2026-04-10 19:09:18'),(197,3,8223599,1001,10313476276561,'ACTIVE','ARCAHUS Fanatics | Réductions sur le catalogue, Frais de port offerts dès 39€ et bien plus !','1 month',NULL,'2026-04-10 19:09:18','2026-04-10 19:09:18'),(199,14,12874973,1009,10313476276561,'ACTIVE','ARCAHUS Fanatics | Réductions sur le catalogue, Frais de port offerts dès 39€ et bien plus !','1 year',NULL,'2026-04-11 18:16:47','2026-04-11 18:16:47');

--
-- Table structure for table `pear_shop_subscription_product`
--

CREATE TABLE `pear_shop_subscription_product` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `productId` bigint unsigned NOT NULL,
  `label` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `templateId` int unsigned DEFAULT NULL,
  `isPremium` tinyint(1) NOT NULL DEFAULT '0',
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_shop_sub_product` (`productId`),
  KEY `idx_shop_sub_product_template` (`templateId`),
  CONSTRAINT `fk_shop_sub_product_template` FOREIGN KEY (`templateId`) REFERENCES `pear_collection_template` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_shop_subscription_product`
--

INSERT INTO `pear_shop_subscription_product` VALUES (1,10313476276561,'ARCAHUS Fanatics',NULL,0,'2026-02-28 14:12:08','2026-02-28 14:12:08'),(2,10310517358929,'Box POP! Mystères /mois',1,0,'2026-02-28 14:12:08','2026-02-28 14:12:08'),(3,10300402827601,'Box POP! Mystères /mois - Premium',1,1,'2026-02-28 14:12:08','2026-02-28 14:12:08');

--
-- Table structure for table `pear_subscription_history`
--

CREATE TABLE `pear_subscription_history` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `userId` int unsigned NOT NULL,
  `stripeEventId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `stripeEventType` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `stripeStatus` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `stripePriceId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `amount` int unsigned DEFAULT NULL,
  `currency` varchar(12) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `periodStart` datetime DEFAULT NULL,
  `periodEnd` datetime DEFAULT NULL,
  `source` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'stripe',
  `payload` json DEFAULT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_sub_history_event` (`stripeEventId`),
  KEY `idx_sub_history_user` (`userId`),
  CONSTRAINT `fk_sub_history_user` FOREIGN KEY (`userId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_subscription_history`
--

INSERT INTO `pear_subscription_history` VALUES (1,3,'evt_1T3y6UGsfHl2jz1ZLA1VBwMm','checkout.session.completed','complete',NULL,NULL,'eur',NULL,NULL,'stripe','{\"id\": \"cs_live_b1zBW3uY7quDG3BI83hm15POd5a5XxFoNrJTLCJlRAm4YmPaoezIZckCUR\", \"url\": null, \"mode\": \"subscription\", \"locale\": null, \"object\": \"checkout.session\", \"status\": \"complete\", \"consent\": null, \"created\": 1771849090, \"invoice\": \"in_1T3y6QGsfHl2jz1Z7Kr7kjGR\", \"ui_mode\": \"hosted\", \"currency\": \"eur\", \"customer\": \"cus_U22AkhRVYTXIef\", \"livemode\": true, \"metadata\": {\"user_id\": \"3\", \"user_uid\": \"870052301733824814\"}, \"discounts\": [], \"cancel_url\": \"https://collection.pear-pop.com/account?billing=cancel\", \"expires_at\": 1771935490, \"custom_text\": {\"submit\": null, \"after_submit\": null, \"shipping_address\": null, \"terms_of_service_acceptance\": null}, \"permissions\": null, \"submit_type\": null, \"success_url\": \"https://collection.pear-pop.com/account?billing=success\", \"amount_total\": 499, \"payment_link\": null, \"setup_intent\": null, \"subscription\": \"sub_1T3y6SGsfHl2jz1ZVoRgaAJW\", \"automatic_tax\": {\"status\": null, \"enabled\": false, \"provider\": null, \"liability\": null}, \"client_secret\": null, \"custom_fields\": [], \"shipping_cost\": null, \"total_details\": {\"amount_tax\": 0, \"amount_discount\": 0, \"amount_shipping\": 0}, \"customer_email\": \"grimada@gmail.com\", \"origin_context\": null, \"payment_intent\": null, \"payment_status\": \"paid\", \"recovered_from\": null, \"wallet_options\": null, \"amount_subtotal\": 499, \"adaptive_pricing\": {\"enabled\": false}, \"after_expiration\": null, \"customer_account\": null, \"customer_details\": {\"name\": \"David GRIMA\", \"email\": \"grimada@gmail.com\", \"phone\": null, \"address\": {\"city\": \"Mauchamps\", \"line1\": \"16 rue chanteclair\", \"line2\": \"\", \"state\": \"\", \"country\": \"FR\", \"postal_code\": \"91730\"}, \"tax_ids\": [], \"tax_exempt\": \"none\", \"business_name\": null, \"individual_name\": null}, \"invoice_creation\": null, \"shipping_options\": [], \"branding_settings\": {\"icon\": null, \"logo\": null, \"font_family\": \"default\", \"border_style\": \"rounded\", \"button_color\": \"#0074d4\", \"display_name\": \"ARCAHUS\", \"background_color\": \"#ffffff\"}, \"customer_creation\": \"always\", \"consent_collection\": null, \"client_reference_id\": \"3\", \"currency_conversion\": null, \"payment_method_types\": [\"card\", \"klarna\", \"link\", \"amazon_pay\"], \"allow_promotion_codes\": true, \"collected_information\": {\"business_name\": null, \"individual_name\": null, \"shipping_details\": null}, \"payment_method_options\": {\"card\": {\"request_three_d_secure\": \"automatic\"}}, \"phone_number_collection\": {\"enabled\": false}, \"payment_method_collection\": \"always\", \"billing_address_collection\": null, \"shipping_address_collection\": null, \"saved_payment_method_options\": {\"payment_method_save\": null, \"payment_method_remove\": \"disabled\", \"allow_redisplay_filters\": [\"always\"]}, \"payment_method_configuration_details\": {\"id\": \"pmc_1SqVrgGsfHl2jz1ZtBSr5VAh\", \"parent\": null}}','2026-02-23 12:19:11'),(2,3,'evt_1TE7SzGsfHl2jz1ZiMlr0pCY','customer.subscription.updated','active','price_1SqW6iGsfHl2jz1ZAZePAPrS',499,'eur',NULL,NULL,'stripe','{\"id\": \"sub_1T3y6SGsfHl2jz1ZVoRgaAJW\", \"plan\": {\"id\": \"price_1SqW6iGsfHl2jz1ZAZePAPrS\", \"meter\": null, \"active\": true, \"amount\": 499, \"object\": \"plan\", \"created\": 1768643268, \"product\": \"prod_To8NkkepnPusDd\", \"currency\": \"eur\", \"interval\": \"month\", \"livemode\": true, \"metadata\": [], \"nickname\": null, \"tiers_mode\": null, \"usage_type\": \"licensed\", \"amount_decimal\": \"499\", \"billing_scheme\": \"per_unit\", \"interval_count\": 1, \"transform_usage\": null, \"trial_period_days\": null}, \"items\": {\"url\": \"/v1/subscription_items?subscription=sub_1T3y6SGsfHl2jz1ZVoRgaAJW\", \"data\": [{\"id\": \"si_U22ALQ6KrtGkbA\", \"plan\": {\"id\": \"price_1SqW6iGsfHl2jz1ZAZePAPrS\", \"meter\": null, \"active\": true, \"amount\": 499, \"object\": \"plan\", \"created\": 1768643268, \"product\": \"prod_To8NkkepnPusDd\", \"currency\": \"eur\", \"interval\": \"month\", \"livemode\": true, \"metadata\": [], \"nickname\": null, \"tiers_mode\": null, \"usage_type\": \"licensed\", \"amount_decimal\": \"499\", \"billing_scheme\": \"per_unit\", \"interval_count\": 1, \"transform_usage\": null, \"trial_period_days\": null}, \"price\": {\"id\": \"price_1SqW6iGsfHl2jz1ZAZePAPrS\", \"type\": \"recurring\", \"active\": true, \"object\": \"price\", \"created\": 1768643268, \"product\": \"prod_To8NkkepnPusDd\", \"currency\": \"eur\", \"livemode\": true, \"metadata\": [], \"nickname\": null, \"recurring\": {\"meter\": null, \"interval\": \"month\", \"usage_type\": \"licensed\", \"interval_count\": 1, \"trial_period_days\": null}, \"lookup_key\": null, \"tiers_mode\": null, \"unit_amount\": 499, \"tax_behavior\": \"unspecified\", \"billing_scheme\": \"per_unit\", \"custom_unit_amount\": null, \"transform_quantity\": null, \"unit_amount_decimal\": \"499\"}, \"object\": \"subscription_item\", \"created\": 1771849146, \"metadata\": [], \"quantity\": 1, \"discounts\": [], \"tax_rates\": [], \"subscription\": \"sub_1T3y6SGsfHl2jz1ZVoRgaAJW\", \"billing_thresholds\": null, \"current_period_end\": 1776946745, \"current_period_start\": 1774268345}], \"object\": \"list\", \"has_more\": false, \"total_count\": 1}, \"object\": \"subscription\", \"status\": \"active\", \"created\": 1771849145, \"currency\": \"eur\", \"customer\": \"cus_U22AkhRVYTXIef\", \"ended_at\": null, \"livemode\": true, \"metadata\": [], \"quantity\": 1, \"schedule\": null, \"cancel_at\": null, \"discounts\": [], \"trial_end\": null, \"start_date\": 1771849145, \"test_clock\": null, \"application\": null, \"canceled_at\": null, \"description\": null, \"trial_start\": null, \"billing_mode\": {\"type\": \"flexible\", \"flexible\": {\"proration_discounts\": \"included\"}, \"updated_at\": 1771849090}, \"on_behalf_of\": null, \"automatic_tax\": {\"enabled\": false, \"liability\": null, \"disabled_reason\": null}, \"transfer_data\": null, \"days_until_due\": null, \"default_source\": null, \"latest_invoice\": \"in_1TE7SzGsfHl2jz1ZAGdiRnoC\", \"pending_update\": null, \"trial_settings\": {\"end_behavior\": {\"missing_payment_method\": \"create_invoice\"}}, \"customer_account\": null, \"invoice_settings\": {\"issuer\": {\"type\": \"self\"}, \"account_tax_ids\": null}, \"pause_collection\": null, \"payment_settings\": {\"payment_method_types\": null, \"payment_method_options\": {\"upi\": null, \"card\": {\"network\": null, \"request_three_d_secure\": \"automatic\"}, \"payto\": null, \"konbini\": null, \"acss_debit\": null, \"bancontact\": null, \"sepa_debit\": null, \"us_bank_account\": null, \"customer_balance\": null}, \"save_default_payment_method\": \"off\"}, \"collection_method\": \"charge_automatically\", \"default_tax_rates\": [], \"billing_thresholds\": null, \"billing_cycle_anchor\": 1771849145, \"cancel_at_period_end\": false, \"cancellation_details\": {\"reason\": null, \"comment\": null, \"feedback\": null}, \"pending_setup_intent\": null, \"default_payment_method\": \"pm_1T3y6OGsfHl2jz1ZY9fFMY0e\", \"application_fee_percent\": null, \"billing_cycle_anchor_config\": null, \"pending_invoice_item_interval\": null, \"next_pending_invoice_item_invoice\": null}','2026-03-23 12:20:22');

--
-- Table structure for table `pear_subscription_notification`
--

CREATE TABLE `pear_subscription_notification` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `userId` int unsigned NOT NULL,
  `notifKey` varchar(80) COLLATE utf8mb4_unicode_ci NOT NULL,
  `sentAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_sub_notification` (`userId`,`notifKey`),
  KEY `idx_sub_notification_user` (`userId`),
  CONSTRAINT `fk_sub_notification_user` FOREIGN KEY (`userId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=204 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_subscription_notification`
--

INSERT INTO `pear_subscription_notification` VALUES (1,1,'collections_80','2026-01-31 18:34:20','2026-01-31 17:34:20'),(2,1,'collections_100','2026-01-31 18:34:21','2026-01-31 17:34:21'),(5,3,'collections_80','2026-02-22 23:18:04','2026-02-22 22:18:04'),(6,3,'collections_100','2026-02-22 23:18:05','2026-02-22 22:18:05'),(19,9,'collections_80','2026-03-03 11:15:53','2026-03-03 10:15:53'),(20,9,'collections_100','2026-03-03 11:15:53','2026-03-03 10:15:53'),(111,10,'collections_80','2026-03-10 17:19:27','2026-03-10 16:19:27'),(112,10,'collections_100','2026-03-10 17:19:27','2026-03-10 16:19:27'),(121,10,'storage_80','2026-03-14 18:18:48','2026-03-14 17:18:48');

--
-- Table structure for table `pear_univers`
--

CREATE TABLE `pear_univers` (
  `id` int unsigned NOT NULL,
  `code` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
  `displayOrder` int unsigned DEFAULT NULL,
  `alternateContent` int unsigned DEFAULT NULL,
  `musicURL` varchar(1024) DEFAULT NULL,
  `iconURL` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `logoURL` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `buttonImageURL` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `buttonVideoURL` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `backgroundImageURL` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `backgroundVideoURL` varchar(1024) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_univers`
--

INSERT INTO `pear_univers` VALUES (1,'MARVEL-STUDIOS',1,0,'assets/audio/marvel-studios/MarvelStudios_Music.mp3','assets/img/marvel-studios/ARCAHUS_icone_mcu.png','assets/img/marvel-studios/Marvel_Studios_Logo_blanc.png','assets/img/marvel-studios/MarvelStudios_btn.png','assets/video/marvel-studios/MCU_btn.webm','assets/img/marvel-studios/MCU_Background_Fade.png','assets/video/marvel-studios/MCU_Background.webm'),(2,'STARWARS',2,0,'assets/audio/starwars/StarWars_Music.mp3','','','assets/img/starwars/Starwars_btn.png','assets/video/starwars/StarWars_btn.webm','','assets/video/starwars/StarWars_Background.webm'),(3,'JURASSIC-WORLD',5,0,'assets/audio/jurassic-world/JurassicWorld_Music.mp3','','','assets/img/jurassic-world/JurassicWorld_btn.png','assets/video/jurassic-world/Jurassic-World_btn.webm','','assets/video/jurassic-world/Jurassic-World_Background.webm'),(4,'PREDATOR-ALIEN',8,1,'assets/audio/pedator-alien/Predalien_Music.mp3','','','assets/img/predator-alien/Predalien_btn.png','assets/video/predator-alien/Predalien_btn.webm','','assets/video/predator-alien/Predalien_Background.webm'),(5,'WIZARDING-WORLD',7,1,'assets/audio/wizarding-world/WizardingWorld_Music.mp3','','','assets/img/wizarding-world/WizardingWorld_btn.png','assets/video/wizarding-world/WizardingWorld_btn.webm','','assets/video/wizarding-world/WizardingWorld_Background.webm'),(6,'GAME-OF-THRONES',6,1,'assets/audio/game-of-thrones/GameOfThrones_Music.mp3','','','assets/img/game-of-thrones/GameOfThrones_btn.png','assets/video/game-of-thrones/GameOfThrones_btn.webm','','assets/video/game-of-thrones/GameOfThrones_Background.webm'),(7,'THE-LORD-OF-THE-RINGS',35,1,'assets/audio/the-lord-of-the-rings/TheLordOfTheRings_Music.mp3','','','assets/img/the-lord-of-the-rings/TheLordOfTheRings_btn.png','assets/video/the-lord-of-the-rings/TheLordOfTheRings_btn.mp4','','assets/video/the-lord-of-the-rings/TheLordOfTheRings_Background.webm'),(8,'FORTNITE',16,1,'assets/audio/fortnite/Fortnite_Music.mp3','','','assets/img/fortnite/Fortnite_btn.png','assets/video/fortnite/Fortnite_btn.webm','','assets/video/fortnite/Fortnite_Background.webm'),(9,'AVATAR',10,1,'assets/audio/avatar/Avatar_Music.mp3','','','assets/img/avatar/Avatar_btn.png','assets/video/avatar/Avatar_btn.webm','','assets/video/avatar/Avatar_Background.webm'),(10,'TERMINATOR',31,1,'assets/audio/terminator/Terminator_Music.mp3','','','assets/img/terminator/Terminator_btn.png','assets/video/terminator/Terminator_btn.mp4','','assets/video/terminator/Terminator_Background.webm'),(11,'MONSTERVERSE',14,1,'assets/audio/monsterverse/MonsterVerse_Music.mp3','','','assets/img/monsterverse/MonsterVerse_btn.png','assets/video/monsterverse/MonsterVerse_btn.webm','','assets/video/monsterverse/MonsterVerse_Background.webm'),(12,'DC-EXTENDED-UNIVERSE',30,1,'assets/audio/dc-extended-universe/DCExtendedUniverse_Music.mp3','','','assets/img/dc-extended-universe/DCExtendedUniverse_btn.png','assets/video/dc-extended-universe/DCExtendedUniverse_btn.mp4','assets/img/dc-extended-universe/DCExtendedUniverse_Background_Fade.png','assets/video/dc-extended-universe/DCExtendedUniverse_Background.webm'),(13,'TRANSFORMERS',11,1,'assets/audio/transformers/Transformers_Music.mp3','','','assets/img/transformers/Transformers_btn.png','assets/video/transformers/Transformers_btn.webm','','assets/video/transformers/Transformers_Background.webm'),(14,'THE-HUNGER-GAMES',15,1,'assets/audio/the-hunger-games/TheHungerGames_Music.mp3','','','assets/img/the-hunger-games/TheHungerGames_btn.png','assets/video/the-hunger-games/TheHungerGames_btn.webm','','assets/video/the-hunger-games/TheHungerGames_Background.webm'),(15,'MATRIX',17,1,'assets/audio/matrix/Matrix_Music.mp3','','','assets/img/matrix/Matrix_btn.png','assets/video/matrix/Matrix_btn.webm','','assets/video/matrix/Matrix_Background.webm'),(16,'ROCKY',18,1,'assets/audio/rocky/Rocky_Music.mp3','','','assets/img/rocky/Rocky_btn.png','assets/video/rocky/Rocky_btn.mp4','','assets/video/rocky/Rocky_Background.webm'),(17,'JOHN-WICK',19,1,'assets/audio/john-wick/John-Wick_Music.mp3','','','assets/img/john-wick/John-Wick_btn.png','assets/video/john-wick/John-Wick_btn.mp4','','assets/video/john-wick/John-Wick_Background.webm'),(18,'XMEN',20,1,'assets/audio/xmen/Xmen_Music.mp3','','','assets/img/xmen/Xmen_btn.png','assets/video/xmen/Xmen_btn.mp4','','assets/video/xmen/Xmen_Background.webm'),(19,'FAST-AND-FURIOUS',21,1,'assets/audio/fast-and-furious/FastAndFurious_Music.mp3','','','assets/img/fast-and-furious/FastAndFurious_btn.png','assets/video/fast-and-furious/FastAndFurious_btn.mp4','','assets/video/fast-and-furious/FastAndFurious_Background.webm'),(20,'PIRATES-OF-THE-CARIBBEAN',22,1,'assets/audio/pirates-of-the-caribbean/PiratesOfTheCaribbean_Music.mp3','','','assets/img/pirates-of-the-caribbean/PiratesOfTheCaribbean_btn.png','assets/video/pirates-of-the-caribbean/PiratesOfTheCaribbean_btn.mp4','','assets/video/pirates-of-the-caribbean/PiratesOfTheCaribbean_Background.webm'),(21,'MISSION-IMPOSSIBLE',23,1,'assets/audio/mission-impossible/MissionImpossible Theme_Music.mp3','','','assets/img/mission-impossible/MissionImpossible_btn.png','assets/video/mission-impossible/MissionImpossible_btn.mp4','','assets/video/mission-impossible/MissionImpossible_Background.webm'),(22,'ICE-AGE',24,1,'assets/audio/ice-age/IceAge_Music.mp3','','','assets/img/ice-age/IceAge_btn.png','assets/video/ice-age/IceAge_btn.mp4','','assets/video/ice-age/IceAge_Background.webm'),(23,'PLANET-OF-THE-APES',25,1,'assets/audio/planet-of-apes/PlanetOfTheApes_Music.mp3','','','assets/img/planet-of-apes/PlanetOfTheApes_btn.png','assets/video/planet-of-apes/PlanetOfTheApes_btn.mp4','','assets/video/planet-of-apes/PlanetOfTheApes_Background.webm'),(24,'SPIDER-VERSE',4,0,'assets/audio/spider-verse/SpiderVerse_Music.mp3','','','assets/img/spider-verse/SpiderVerse_btn.png','assets/video/spider-verse/SpiderVerse_btn.webm','','assets/video/spider-verse/SpiderVerse_Background.webm'),(25,'SHREK',26,1,'assets/audio/shrek/Shrek_Music.mp3','','','assets/img/shrek/Shrek_btn.png','assets/video/shrek/Shred_btn.mp4','','assets/video/shrek/Shrek_Background.webm'),(26,'MAD-MAX',27,1,'assets/audio/madmax/MadMax_Music.mp3','','','assets/img/madmax/MadMax_btn.png','assets/video/madmax/MadMax_btn.mp4','','assets/video/madmax/MadMax_Background.webm'),(27,'INDIANA-JONES',28,1,'assets/audio/indiana-jones/IndianaJones_Music.mp3','','','assets/img/indiana-jones/IndianaJones_btn.png','assets/video/indiana-jones/Indiana-Jones_btn.webm','','assets/video/indiana-jones/Indiana-Jones_Background.webm'),(28,'DUNE',12,0,'assets/audio/dune/Dune_Music.mp3','','','assets/img/dune/Dune_btn.webp','assets/video/dune/Dune_btn.webm','','assets/video/dune/Dune_Background.webm'),(29,'MIRACULOUS',29,0,'assets/audio/miraculous/Miraculous_Music.mp3','','','assets/img/miraculous/Miraculous_btn.webp','assets/video/miraculous/Miraculous_btn.webm','','assets/video/miraculous/Miraculous_Background.webm'),(30,'DC-STUDIOS',3,0,'assets/audio/dc-studios/DC-Studios_Music.mp3','','','assets/img/dc-studios/DC-Studios_btn.webp','assets/video/dc-studios/DC-Studios_btn.webm','','assets/video/dc-studios/DC-Studios_Background.webm'),(31,'HOW-TO-TRAIN-YOUR-DRAGON',13,0,'assets/audio/how-to-train-your-dragon/How-To-Train-Your-Dragon_Music.mp3.mp3','','','assets/img/how-to-train-your-dragon/How-To-Train-Your-Dragon_btn.webp','assets/video/how-to-train-your-dragon/How-To-Train-Your-Dragon_btn.webm','','assets/video/how-to-train-your-dragon/How-To-Train-Your-Dragon_Background.webm'),(32,'THE-BOYS',32,1,'assets/audio/the-boys/The-Boys_Music.mp3','','','assets/img/the-boys/The-Boys_btn.webp','assets/video/the-boys/The-Boys_btn.webm','','assets/video/the-boys/The-Boys_Background.webm'),(33,'THE-BATMAN',33,0,'assets/audio/the-batman/The-Batman_Music.mp3','','','assets/img/the-batman/The-Batman_btn.webp','assets/video/the-batman/The-Batman_btn.webm','','assets/video/the-batman/The-Batman_Background.webm'),(34,'AVATAR-THE-LAST-AIRBENDER',34,1,'assets/audio/avatar-the-last-airbender/Avatar-The-Last-Airbender_Music.mp3','','','assets/img/avatar-the-last-airbender/Avatar-The-Last-Airbender_btn.webp','assets/video/avatar-the-last-airbender/Avatar-The-Last-Airbender_btn.webm','','assets/video/avatar-the-last-airbender/Avatar-The-Last-Airbender_Background.webm'),(35,'STRANGER-THINGS',9,1,'assets/audio/stranger-things/Stranger-Things_Music.mp3','','','assets/img/stranger-things/Stranger-Things_btn.webp','assets/video/stranger-things/Stranger-Things_btn.webm','','assets/video/stranger-things/Stranger-Things_Background.webm'),(36,'KAAMELOTT',36,1,'assets/audio/kaamelott/Kaamelott_Music.mp3','','','assets/img/kaamelott/Kaamelott_btn.webp','assets/video/kaamelott/Kaamelott_btn.mp4','','assets/video/kaamelott/Kaamelott_Background.webm'),(37,'DEMON-SLAYER',37,0,'assets/audio/demon-slayer/Demon-Slayer_Music.mp3','','','assets/img/demon-slayer/Demon-Slayer_btn.webp','assets/video/demon-slayer/Demon-Slayer_btn.webm','','assets/video/demon-slayer/Demon-Slayer_Background.webm');

--
-- Table structure for table `pear_univers_lang`
--

CREATE TABLE `pear_univers_lang` (
  `id` int unsigned NOT NULL,
  `idUnivers` int unsigned NOT NULL,
  `idLang` int unsigned NOT NULL,
  `titleSEO` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `descriptionSEO` varchar(256) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `keywordsSEO` varchar(256) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci DEFAULT NULL,
  `buttonURL` varchar(1024) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `foreign_pear_univers_lang_idUnivers` (`idUnivers`),
  KEY `foreign_pear_univers_lang_idLang` (`idLang`),
  CONSTRAINT `foreign_pear_univers_lang_idLang` FOREIGN KEY (`idLang`) REFERENCES `pear_lang` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `foreign_pear_univers_lang_idUnivers` FOREIGN KEY (`idUnivers`) REFERENCES `pear_univers` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- Dumping data for table `pear_univers_lang`
--

INSERT INTO `pear_univers_lang` VALUES (1,1,1,'Marvel Studios','Chronologie du Marvel Cinematic Universe (MCU) (films, séries & courts-métrages) selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','Chronologie, marvel, mcu, marvel studios, avengers, comics, films, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MarvelStudios_universes_btn.webp'),(2,1,2,'Marvel Studios','Chronology of the Marvel Cinematic Universe (MCU) (movies, series & shorts) by release and viewing order — regularly updated by PEAR.','Timeline, marvel, mcu, marvel studios, avengers, comics, movies, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MarvelStudios_universes_btn.webp'),(3,2,1,'Star Wars','Chronologie de Star Wars (films, séries & courts-métrages) selon l’ordre de sortie et de visionnage canon — régulièrement mise à jour par PEAR.','Chronologie,  starwars, lucas film, films, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/StarWars_universes_btn.webp'),(4,2,2,'Star Wars','Star Wars timeline (films, series & short films) by release order and canon viewing order — regularly updated by PEAR.','Timeline, starwars, lucas film, films, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/StarWars_universes_btn.webp'),(5,3,1,'Jurassic World','Chronologie de l\'univers Jurassic (Jurassic World et Jurassic Park) (films, séries & courts-métrages) selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','Chronologie, jurassic world, jurassic park, universal, dinosaure, films, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/JurassicWorld_universes_btn.webp'),(6,3,2,'Jurassic World','Jurassic Universe timeline (Jurassic World and Jurassic Park) (films, series & short films) by release order and viewing order — regularly updated by PEAR.','Timeline, jurassic world, jurassic park, universal, dinosaure, films, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/JurassicWorld_universes_btn.webp'),(7,4,1,'Alien & Predator','Chronologie des Aliens & Predators (films & séries) selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','Chronologie, predator, alien, triller, horreur, films, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Predalien_universes_btn.webp'),(8,4,2,'Alien & Predator','Aliens & Predators timeline (films & series) by release order and viewing order — regularly updated by PEAR.','Timeline, predator, alien, triller, horror, movies, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Predalien_universes_btn.webp'),(9,5,1,'Wizarding World','La chronologie de sortie et de visionage des films Harry Potter et les Animaux Fantastiques présentée par PEAR Pop Culture','Chronologie, harry potter, animaux fantastiques, sorciers, wizarding world, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/WizardingWorld_universes_btn.webp'),(10,5,2,'Wizarding World','Harry Potter and the Fantastic Beasts\'s timeline for the release and viewing of movies presented by PEAR Pop Culture','Timeline, harry potter, fantastic beasts, wizard, wizarding world, movies, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/WizardingWorld_universes_btn.webp'),(11,6,1,'Game of Thrones','La chronologie de sortie et de visionage des séries de l\'univers Game of Thrones présentée par PEAR Pop Culture','Chronologie, game of thrones, house of the dragon, séries, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/GameOfThrones_universes_btn.webp'),(12,6,2,'Game of Thrones','The Game of Thrones\'s timeline for the release and viewing timeline presented by PEAR Pop Culture','Timeline, game of thrones, house of the dragon, series, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/GameOfThrones_universes_btn.webp'),(13,7,1,'Le Seigneur des anneaux','La chronologie de sortie et de visionage des films et séries de l\'univers Le Seigneur des anneux présentée par PEAR Pop Culture','Chronologie, seigneur des anneaux, anneaux de pouvoir, lord of the rings, films, séries, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/LeSeigneurDesAnneaux_universes_btn.webp'),(14,7,2,'The Lord of the Rings','The Lord of the Rings\'s timeline for the release and viewing of movies presented by PEAR Pop Culture','Timeline, lord of the rings, the rings of power, films, series, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/TheLordOfTheRings_universes_btn.webp'),(15,8,1,'Fortnite','La chronologie de sortie et de visionage des saisons et comics de l\'univers Fortnite présentée par PEAR Pop Culture','Chronologie, fortnite, epic games, jeux vidéos, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Fortnite_universes_btn.webp'),(16,8,2,'Fortnite','Fortnite\'s timeline for the release and viewing of seasons and comics presented by PEAR Pop Culture','Timeline, fortnite, epic games, videos games, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Fortnite_universes_btn.webp'),(17,9,1,'Avatar','La chronologie de sortie et de visionage des films et jeux vidéos de l\'univers Avatar présentée par PEAR Pop Culture','Chronologie, avatar, james cameron, film, cinéma, pandora, jeux vidéos, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Avatar_universes_btn.webp'),(18,9,2,'Avatar','Avatar\'s timeline for the release and viewing of films and videos games presented by PEAR Pop Culture','Timeline, avatar, james cameron, film, cinema, pandora, videos games, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Avatar_universes_btn.webp'),(19,10,1,'Terminator','La chronologie de sortie et de visionage des films et série de l\'univers Terminator présentée par PEAR Pop Culture','Chronologie, terminator, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Terminator_universes_btn.webp'),(20,10,2,'Terminator','Terminator\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','Timeline, terminator, film, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Terminator_universes_btn.webp'),(21,11,1,'MonsterVerse','La chronologie de sortie et de visionage des films et série de l\'univers MonsterVerse présentée par PEAR Pop Culture','Chronologie, monsterverse, godzilla, king kong, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MonsterVerse_universes_btn.webp'),(22,11,2,'MonsterVerse','MonsterVerse\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','Timeline, monsterverse, godzilla, king kong, film, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MonsterVerse_universes_btn.webp'),(23,12,1,'DC Univers Étendu','La chronologie de sortie et de visionage des films l\'univers étendu DC présentée par PEAR Pop Culture','Chronologie, dc, justice league, batman, superman, wonderwoman, aquaman, flash, shazam, suicid squad, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/DCExtendedUniverse_universes_btn.webp'),(24,12,2,'DC Extended Universe','Extended Universe\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, dc, justice league, batman, superman, wonderwoman, aquaman, flash, shazam, suicid squad, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/DCExtendedUniverse_universes_btn.webp'),(25,13,1,'Transformers','La chronologie de sortie et de visionage des films l\'univers Transformers présentée par PEAR Pop Culture','Chronologie, transformers, autobots, decepticons, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Transformers_universes_btn.webp'),(26,13,2,'Transformers','Transformers\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, transformers, autobots, decepticons, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Transformers_universes_btn.webp'),(27,14,1,'The Hunger Games','La chronologie de sortie et de visionage des films et séries l\'univers The Hunger Games présentée par PEAR Pop Culture','Chronologie, hunger games, film, cinéma, séries, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/TheHungerGames_universes_btn.webp'),(28,14,2,'The Hunger Games','The Hunger Games\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','Timeline, hunger games, film, cinéma, series, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/TheHungerGames_universes_btn.webp'),(29,15,1,'Matrix','La chronologie de sortie et de visionage des films de l\'univers Matrix présentée par PEAR Pop Culture','Chronologie, matrix, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Matrix_universes_btn.webp'),(30,15,2,'Matrix','The Matrix\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, matrix, film, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Matrix_universes_btn.webp'),(31,16,1,'Rocky','La chronologie de sortie et de visionage des films de l\'univers Rocky et Creed présentée par PEAR Pop Culture','Chronologie, Rocky, Creed, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Rocky_universes_btn.webp'),(32,16,2,'Rocky','The Rocky\'s and Creed timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, Rocky, Creed, film, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Rocky_universes_btn.webp'),(33,17,1,'John Wick','La chronologie de sortie et de visionage des films et séries de l\'univers John Wick présentée par PEAR Pop Culture','Chronologie, John Wick, Keanu Reeves, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/John-Wick_universes_btn.webp'),(34,17,2,'John Wick','The John Wick\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','Timeline, John Wick, Keanu Reeves, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/John-Wick_universes_btn.webp'),(35,18,1,'X-Men','La chronologie de sortie et de visionage des films et séries de l\'univers X-Men présentée par PEAR Pop Culture','Chronologie, Marvel, X-Men, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Xmen_universes_btn.webp'),(36,18,2,'X-Men','The X-Men\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','Timeline, Marvel, X-Men, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Xmen_universes_btn.webp'),(37,19,1,'Fast & Furious','La chronologie de sortie et de visionage des films de la saga Fast & Furious présentée par PEAR Pop Culture','Chronologie, Fast & Furious, Fast and Furious, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/FastAndFurious_universes_btn.webp'),(38,19,2,'Fast & Furious','The Fast & Furious saga\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, Fast & Furious, Fast and Furious, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/FastAndFurious_universes_btn.webp'),(39,20,1,'Pirates des Caraïbes','La chronologie de sortie et de visionage des films de la saga Pirates des Caraïbes présentée par PEAR Pop Culture','Chronologie, Pirates des Caraïbes, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/PiratesDesCaraibes_universes_btn.webp'),(40,20,2,'Pirates of the Caribbean','Pirates of the Caribbean saga\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, Pirates of the Caribbean, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/PiratesOfTheCaribbean_universes_btn.webp'),(41,21,1,'Mission : Impossible','La chronologie de sortie et de visionage des films de la saga Mission Impossible présentée par PEAR Pop Culture','Chronologie, Impossible, Tom Cruise, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MissionImpossible_universes_btn.webp'),(42,21,2,'Mission: Impossible','Mission Impossible saga\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, Mission Impossible, Tom Cruise, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MissionImpossible_universes_btn.webp'),(43,22,1,'L\'Âge de Glace','La chronologie de sortie et de visionage des films et courts-métrages de la saga L\'Âge de Glace présentée par PEAR Pop Culture','Chronologie, Age de Glace, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/AgeDeGlace_universes_btn.webp'),(44,22,2,'Ice Age','Ice Age saga\'s timeline for the release and viewing of films and shorts presented by PEAR Pop Culture','Timeline, Ice Age, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/IceAge_universes_btn.webp'),(45,23,1,'La Planète des Singes','La chronologie de sortie et de visionage des films de la saga La Planète des Singes présentée par PEAR Pop Culture','Chronologie, La Planète des Singes, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/LaPlaneteDesSinges_universes_btn.webp'),(46,23,2,'Planet of the Apes','Planet of the Apes saga\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, Planet of the Apes, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/PlanetOfTheApes_universes_btn.webp'),(47,24,1,'Spider-Verse (Spider-Man)','La chronologie de sortie et de visionage des films, séries, court métrages, jeux... des Spider-Man présentée par PEAR Pop Culture','Chronologie, Spider Man, Spider Verse, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/SpiderVerse_universes_btn.webp'),(48,24,2,'Spider-Verse (Spider-Man)','Spider-Man\'s timeline for the release and viewing of films, series, shorts, video games... presented by PEAR Pop Culture','Timeline, Spider Man, Spider Verse, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/SpiderVerse_universes_btn.webp'),(49,25,1,'Shrek','La chronologie de sortie et de visionage des films et court métrages des Shrek présentée par PEAR Pop Culture','Chronologie, Shrek, film, série, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Shrek_universes_btn.webp'),(50,25,2,'Shrek','Shrek saga\'s timeline for the release and viewing of films and shorts presented by PEAR Pop Culture','Timeline, Shrek, film, serie, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/Shrek_universes_btn.webp'),(51,26,1,'Mad Max','La chronologie de sortie et de visionage des films Mad Max présentée par PEAR Pop Culture','Chronologie, Mad Max, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MadMax_universes_btn.webp'),(52,26,2,'Mad Max','Mad Max saga\'s timeline for the release and viewing of films presented by PEAR Pop Culture','Timeline, Mad Max, film, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/MadMax_universes_btn.webp'),(53,27,1,'Indiana Jones','La chronologie de sortie et de visionage des films et séries Indiana Jones présentée par PEAR Pop Culture','Chronologie, Indiana Jones, serie, film, cinéma, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/IndianaJones_universes_btn.webp'),(54,27,2,'Indiana Jones','Indiana Jones saga\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','Timeline,  Indiana Jones, serie, film, cinema, PEAR, Pop Culture, ARCAHUS','assets/img/home/buttons/IndianaJones_universes_btn.webp'),(55,28,1,'Dune','La chronologie de sortie et de visionage des films et séries Dune présentée par PEAR Pop Culture','','assets/img/home/buttons/Dune_universes_btn.webp'),(56,28,2,'Dune','Dune saga\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','','assets/img/home/buttons/Dune_universes_btn.webp'),(57,29,1,'Miraculous','La chronologie de sortie et de visionage des films et séries Miraculous présentée par PEAR Pop Culture','','assets/img/home/buttons/Miraculous_universes_btn.webp'),(58,29,2,'Miraculous','Miraculous saga\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','','assets/img/home/buttons/Miraculous_universes_btn.webp'),(59,30,1,'DC Studios','La chronologie de sortie et de visionage des films l\'univers DC présentée par PEAR Pop Culture','','assets/img/home/buttons/DC-Studios_universes_btn.webp'),(60,30,2,'DC Studios','DC Universe\'s timeline for the release and viewing of films presented by PEAR Pop Culture','','assets/img/home/buttons/DC-Studios_universes_btn.webp'),(61,31,1,'Dragons','La chronologie de sortie et de visionage des films, séries et court-métrages l\'univers Dragons présentée par PEAR Pop Culture','','assets/img/home/buttons/Dragons_universes_btn.webp'),(62,31,2,'How to Train Your Dragon','How to Train Your Dragon Universe\'s timeline for the release and viewing of films presented by PEAR Pop Culture','','assets/img/home/buttons/How-To-Train-Your-Dragon_universes_btn.webp'),(64,32,1,'The Boys','La chronologie de sortie et de visionage des séries de l\'univers The Boys présentée par PEAR Pop Culture','','assets/img/home/buttons/The-Boys_universes_btn.webp'),(65,32,2,'The Boys','The Boys\' timeline for the release and viewing of series presented by PEAR Pop Culture','','assets/img/home/buttons/The-Boys_universes_btn.webp'),(66,33,1,'The Batman','La chronologie de sortie et de visionage des films et séries de l\'univers The Batman présentée par PEAR Pop Culture','','assets/img/home/buttons/The-Batman_universes_btn.webp'),(67,33,2,'The Batman','The Batman\'s timeline for the release and viewing of films and series presented by PEAR Pop Culture','','assets/img/home/buttons/The-Batman_universes_btn.webp'),(68,34,1,'Avatar, le dernier maître de l\'air','Chronologie de l\'univers de l\'Avatar (films, séries & courts-métrages) selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','','assets/img/home/buttons/Avatar-The-Last-Airbender_universes_btn.webp'),(69,34,2,'Avatar: The Last Airbender','Chronology of the Avatar Universe (films, series & short films) in order of release and viewing — regularly updated by PEAR.','','assets/img/home/buttons/Avatar-The-Last-Airbender_universes_btn.webp'),(70,35,1,'Stranger Things','Chronologie de l\'univers de Stranger Things (Séries et pièces de théâtre) selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','','assets/img/home/buttons/Stranger-Things_universes_btn.webp'),(71,35,2,'Stranger Things','Chronology of the Stranger Things Universe (Series and plays) in order of release and viewing — regularly updated by PEAR.','','assets/img/home/buttons/Stranger-Things_universes_btn.webp'),(72,36,1,'Kaamelott','Chronologie de l\'univers de Kaamelott selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','','assets/img/home/buttons/Kaamelott_universes_btn.webp'),(73,36,2,'Kaamelott','Chronology of the Kaamelott Universe in order of release and viewing — regularly updated by PEAR.','','assets/img/home/buttons/Kaamelott_universes_btn.webp'),(74,37,1,'Demon Slayer - Kimetsu no Yaiba','Chronologie de Demon Slayer selon l’ordre de sortie et de visionnage — régulièrement mise à jour par PEAR.','','assets/img/home/buttons/Demon-Slayer_universes_btn.webp'),(75,37,2,'Demon Slayer - Kimetsu no Yaiba','Chronology of Demon Slayer in order of release and viewing — regularly updated by PEAR.','','assets/img/home/buttons/Demon-Slayer_universes_btn.webp');

--
-- Table structure for table `pear_user`
--

CREATE TABLE `pear_user` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `uid` char(18) COLLATE utf8mb4_unicode_ci NOT NULL,
  `login` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `pseudo` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `displayName` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `firstName` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `lastName` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `passwordHash` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `avatarPath` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `googleId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `googleEmail` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `discordId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `discordEmail` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `discordAvatarUrl` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `discordBannerUrl` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `discordAvatarDecorationUrl` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `useDiscordImages` tinyint(1) NOT NULL DEFAULT '1',
  `shopifyCustomerId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `shopifyCustomerEmail` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `subscriptionType` enum('freemium','gold') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'freemium',
  `subscriptionStatus` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `subscriptionStartedAt` datetime DEFAULT NULL,
  `subscriptionCurrentPeriodEnd` datetime DEFAULT NULL,
  `subscriptionCancelAtPeriodEnd` tinyint(1) NOT NULL DEFAULT '0',
  `subscriptionCanceledAt` datetime DEFAULT NULL,
  `stripeCustomerId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `stripeSubscriptionId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `stripePriceId` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `subscriptionUpdatedAt` datetime DEFAULT NULL,
  `role` enum('collector','moderator','admin') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'collector',
  `status` enum('normal','watch','warned','banned') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal',
  `sessionVersion` int unsigned NOT NULL DEFAULT '1',
  `statusChangedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `isVerified` tinyint(1) NOT NULL DEFAULT '0',
  `verifiedAt` datetime DEFAULT NULL,
  `maxColumns` int unsigned NOT NULL DEFAULT '10',
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updatedAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_user_uid` (`uid`),
  UNIQUE KEY `uniq_user_login` (`login`),
  UNIQUE KEY `uniq_user_pseudo` (`pseudo`),
  UNIQUE KEY `uniq_user_googleId` (`googleId`),
  UNIQUE KEY `uniq_user_discordId` (`discordId`),
  UNIQUE KEY `uniq_user_shopifyCustomerId` (`shopifyCustomerId`),
  UNIQUE KEY `uniq_user_stripeCustomerId` (`stripeCustomerId`),
  UNIQUE KEY `uniq_user_stripeSubscriptionId` (`stripeSubscriptionId`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_user`
--

INSERT INTO `pear_user` VALUES (1,'506523359303204996','usk.florian@gmail.com','florian_usk','Florian USK','Florian','GRIMA','$2y$10$L2qgi.i8RZRjsV0NXGmIYOlIm55M5P3fTbMCiNWBRpVqpyf8.FQ9e',NULL,'116041367529780627706','grimaflo@gmail.com','235731934720819200','usk.florian@gmail.com','https://cdn.discordapp.com/avatars/235731934720819200/a_b2c9958a55559b01d3506bae3a049920.gif?size=512','https://cdn.discordapp.com/banners/235731934720819200/a_b092573e9b0aabe8df9fb3d0c26f94f6.gif?size=600','https://cdn.discordapp.com/avatar-decoration-presets/a_9bc421cef4bdcfffeb2344b44ad91b44.png?size=320',1,NULL,NULL,'gold',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'admin','normal',1,'2026-01-31 18:20:24',1,'2026-01-31 18:20:31',10,'2026-01-31 17:20:24','2026-03-21 20:26:19'),(2,'290946291910504571','cmaniquant@gmail.com','tortue_cyborg','Tortue_Cyborg','Cyril','Maniquant','$2y$10$plKPJ5q5i8LvOQz5SjvF2ejNDLrPjERBNPYJ.iawnGldH/1lwSBbq','uploads/290946291910504571/avatar_31012026_190018.png','118084853187089984992','cmaniquant@gmail.com','410848964472995842','cmaniquant@gmail.com','https://cdn.discordapp.com/avatars/410848964472995842/694aab9e7671e3b3d6881c99678aea89.png?size=512','https://cdn.discordapp.com/banners/410848964472995842/a_70963f3afea9e36498dacc3e0f843f40.gif?size=600','https://cdn.discordapp.com/avatar-decoration-presets/a_dbb1abd90367c1a31a94f7e162f3a3c3.png?size=320',1,'gid://shopify/Customer/9428396867921','cmaniquant@gmail.com','freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-04-07 20:14:27',1,'2026-01-31 18:56:00',10,'2026-01-31 17:56:00','2026-02-16 12:55:00'),(3,'870052301733824814','grimada@gmail.com','hessesshash','HessEssHash','David','Grima','$2y$10$UKX5HSCbskOXjImmDguGneWYa4GabZCridYyjqwnD7SQ6zlfyswmK',NULL,'108357141547663673524','grimada@gmail.com','370309526324510721','david.grima@free.fr','https://cdn.discordapp.com/avatars/370309526324510721/280fc1b8dc694533ef272332d17539ac.png?size=512','https://cdn.discordapp.com/banners/370309526324510721/5dae1f483a04709970171068b28ee262.png?size=600','https://cdn.discordapp.com/avatar-decoration-presets/a_3700e799d39895e502f4e9be46ceb325.png?size=320',1,'gid://shopify/Customer/9530705871185','grimada@gmail.com','gold','active','2026-02-23 13:19:05',NULL,0,NULL,'cus_U22AkhRVYTXIef','sub_1T3y6SGsfHl2jz1ZVoRgaAJW','price_1SqW6iGsfHl2jz1ZAZePAPrS','2026-03-23 13:20:22','moderator','normal',1,'2026-02-23 13:30:00',1,'2026-01-31 22:36:00',10,'2026-01-31 21:36:00','2026-03-23 12:20:22'),(4,'354352987090296537','christelle.grima91@gmail.com','christ2791','Christ2791','Christelle','GRIMA','$2y$10$Boi81nuQR9h3CiNHRxENN.ORtKA1FZexai2GRp10A0mFOdSvFdG7W',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-01 15:05:20',1,'2026-02-01 15:05:50',10,'2026-02-01 14:05:20','2026-02-01 14:05:50'),(5,'288448456766709759','grimaflo@gmail.com','jinx_morales','Pow','Pow','','$2y$10$e21Pwcw6cecI/qCWXgzKoOWWpf2QVEHT8oOAy/LKcjITEYI.dFB42',NULL,NULL,NULL,'421743885153468433','grimaflo@gmail.com','https://cdn.discordapp.com/avatars/421743885153468433/87b606181fc41ed92fa91aee85d162a0.png?size=512',NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-14 15:19:29',1,'2026-02-14 15:19:29',10,'2026-02-14 14:19:29','2026-03-07 13:05:10'),(6,'126362460944918063','camille.jacques.gaillet@gmail.com','camille','camille','camille','gaillet','$2y$10$MYAZ1JLUFUthfDD/wMR.WemQ7kYqBZsWo0vfUJW1/85na9SMPcs7O',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'gid://shopify/Customer/10080602292561','camille.jacques.gaillet@gmail.com','freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-16 18:42:38',1,'2026-02-16 18:42:38',10,'2026-02-16 17:42:38','2026-02-16 17:42:38'),(7,'014469094953970254','hupjoffrey@gmail.com','popi45','Popi45','Joffrey','Hup','$2y$10$fXAWvt5ABvCYIlDkMo4AwuPW8E1eUZVgwnWueTi4XTNF/66hzhWa.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-28 14:35:04',1,'2026-02-28 14:35:18',10,'2026-02-28 13:35:04','2026-02-28 13:35:58'),(8,'337327925435714728','maelynnloret@outlook.fr','maehwaa','Mae','Maelynn','Loret','$2y$10$YD8p53OfBGX8W2B9PnX8geJE0Z2a3Vf99IXKADYCraSPl1b3kIwQC',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'gid://shopify/Customer/9428402209105','maelynnloret@outlook.fr','freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-28 15:37:47',1,'2026-02-28 15:37:47',10,'2026-02-28 14:37:47','2026-02-28 14:38:05'),(9,'991075239632429213','noahbillot384@gmail.com','noah28','NoahB','Billot','Noah','$2y$10$bHwYfr/Zpc5IYt9Fd4lUCOpONiNCjqDYYzzFoNVYgL0w82gebzKgK',NULL,'105862222997593293533','noahbillot384@gmail.com','824754499318710342','noah.billot59@gmail.com','https://cdn.discordapp.com/avatars/824754499318710342/b49db5d961e0839250bebd857c0f9846.png?size=512',NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-28 17:22:11',1,'2026-02-28 17:22:11',10,'2026-02-28 16:22:11','2026-03-02 16:11:10'),(10,'622452832967977138','hupgoku45@gmail.com','reptile45.j','Jojo et ses animaux','Jojo','et ses animaux','$2y$10$AeoWkUYyjJJS8vIFw1NvreykFyyjBDiFezb72ApMlTWigWp2dg0wO',NULL,NULL,NULL,'1114147123663999066','hupgoku45@gmail.com','https://cdn.discordapp.com/avatars/1114147123663999066/f575e62b0dfbdf09e53f3a13ede19c33.png?size=512',NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-02-28 22:20:12',1,'2026-02-28 22:20:12',10,'2026-02-28 21:20:12','2026-03-16 08:15:44'),(11,'154875193657635764','noah.billot59@gmail.com',NULL,'noah billot','noah','billot','$2y$10$Nkwmw5lqZbHc3YhC3KC3j.cSQd4YGXrVuXcwnV4IHIqIEaWHgMXE2',NULL,'116050196051625841611','noah.billot59@gmail.com',NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-03-03 09:18:54',1,'2026-03-03 09:18:54',10,'2026-03-03 08:18:54','2026-03-03 08:18:54'),(12,'968675476288942009','maelrouille76@gmail.com','mael_9865._93643','(Général Mael)','(Général','Mael)','$2y$10$F04gJ2s2vH6liU0GIRSLROY7f.zAqs3gmpdtwC6yr5NCxIQKeVj1m',NULL,NULL,NULL,'1247948670561685534','maelrouille76@gmail.com','https://cdn.discordapp.com/avatars/1247948670561685534/b1006e637f4667e905f95ad623160cad.png?size=512',NULL,'https://cdn.discordapp.com/avatar-decoration-presets/a_7186f839f92ecb643755baa61fa1e271.png?size=320',1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-03-16 14:53:25',1,'2026-03-16 14:53:25',10,'2026-03-16 13:53:25','2026-03-16 13:53:25'),(13,'393089868927566497','paul.sacleux@gmail.com','pscx86_18093','pscx86','pscx86','','$2y$10$c7MhXpV/aMVSG2pLv5pkh.PsnTN4UNt1a/UtoQJ/gOcRH4B0r.iJm',NULL,NULL,NULL,'1464668996451303537','paul.sacleux@gmail.com',NULL,NULL,NULL,1,NULL,NULL,'freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-03-22 09:59:54',1,'2026-03-22 09:59:54',10,'2026-03-22 08:59:54','2026-03-27 11:21:22'),(14,'606590568049346948','alexia91730@gmail.com','spywanda','Wanda','Alexia','Clain','$2y$10$CdGVKCjBzQN1qkjTpE8TueWSfiRoDhB39qDDex31V8rYgcqUtrFBW',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'gid://shopify/Customer/9428394574161','alexia91730@gmail.com','freemium',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,'collector','normal',1,'2026-04-11 20:16:45',1,'2026-04-11 20:16:45',10,'2026-04-11 18:16:45','2026-04-11 18:30:39');
DELIMITER ;;
/*!50003 CREATE*/ /*!50017 DEFINER=`pearpobarcahus`@`%`*/ /*!50003 TRIGGER `trg_pear_user_status_changed` BEFORE UPDATE ON `pear_user` FOR EACH ROW BEGIN
    IF NEW.`status` <> OLD.`status` THEN
        SET NEW.`statusChangedAt` = NOW();
    END IF;
END */;;
DELIMITER ;

--
-- Table structure for table `pear_user_follow`
--

CREATE TABLE `pear_user_follow` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `followerUserId` int unsigned NOT NULL,
  `followedUserId` int unsigned NOT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_user_follow_pair` (`followerUserId`,`followedUserId`),
  KEY `idx_user_follow_followed` (`followedUserId`),
  CONSTRAINT `fk_user_follow_followed` FOREIGN KEY (`followedUserId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_user_follow_follower` FOREIGN KEY (`followerUserId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_user_follow`
--

INSERT INTO `pear_user_follow` VALUES (1,3,1,'2026-03-24 20:50:44'),(2,3,2,'2026-03-24 20:50:45'),(3,1,2,'2026-03-25 07:31:30'),(4,9,1,'2026-04-07 15:58:26'),(5,2,1,'2026-04-07 18:21:10'),(6,2,10,'2026-04-07 18:21:14'),(7,2,9,'2026-04-07 18:21:15'),(8,2,3,'2026-04-07 18:21:16');

--
-- Table structure for table `pear_user_remember_device`
--

CREATE TABLE `pear_user_remember_device` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `userId` int unsigned NOT NULL,
  `selector` char(24) COLLATE utf8mb4_unicode_ci NOT NULL,
  `validatorHash` char(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `deviceLabel` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `userAgent` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `lastIpAddress` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `lastUsedAt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `expiresAt` datetime NOT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_remember_device_selector` (`selector`),
  KEY `idx_remember_device_user` (`userId`),
  KEY `idx_remember_device_expire` (`expiresAt`),
  CONSTRAINT `fk_remember_device_user` FOREIGN KEY (`userId`) REFERENCES `pear_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `pear_user_remember_device`
--

INSERT INTO `pear_user_remember_device` VALUES (1,3,'c8dfff1277a42daa71bb85f5','5d9aaba96fa484360e50a76d9899d9c20b289585015c2a944ea68cd20bf532bb','Safari / macOS','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3.1 Safari/605.1.15','2a01:e0a:dd2:1570:3165:b977:43a1:77dc','2026-03-16 08:45:32','2026-04-15 09:33:06','2026-03-15 09:14:15'),(2,3,'f7f1baa097f2c0190484d37c','332ab67963f7237095eedec1a9c38c71500b45e29d032b0f907521511f0d14c2','Safari / macOS','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3 Safari/605.1.15','2a01:e0a:dd2:1570:1811:de97:dbc0:79e8','2026-04-08 22:53:43','2026-05-08 22:53:43','2026-03-15 09:14:59'),(3,3,'a70ac0b1ee77317fbb1ef46d','a68fc1e0ea639c5690ba418488c4540a3218652c12cd8a4c656c1879d226a81d','Safari / iPhone','Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1','2a01:e0a:f01:4200:4c41:cc7:e5b5:d9cb','2026-04-10 17:29:16','2026-05-10 17:29:16','2026-03-15 09:15:53'),(4,1,'8c7d450233d48c90cd910c05','783c8a02f334af90e28c20e44627fa05b444e3368b25098804224a51dc1c657e','Safari / iPhone','Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1','2a01:e0a:dd2:1570:f124:f77d:19f2:4a7f','2026-04-11 21:50:41','2026-05-11 21:16:18','2026-03-15 09:18:34'),(5,1,'f869825bb87de755dc1184d1','4eb8284c0c4dc65b94b699749335c188da504dab17e6a3d4d8137de740805e21','Google Chrome / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','2a01:e0a:dd2:1570:6542:2c8d:e6d:7981','2026-03-15 13:00:52','2026-04-14 14:00:52','2026-03-15 09:25:33'),(6,2,'5caa679fa2ed1acfbaae0ec2','b1772d0112e4bd98766727f7e2b41b57df18943ee3d34e56136b688a53b7c0c6','Opera / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 OPR/127.0.0.0','195.36.234.197','2026-03-21 22:32:55','2026-04-20 22:30:06','2026-03-15 09:46:14'),(7,2,'dfc8bcbeddd1facb58b02d9b','572cada43cb3cbdd525662a6193d069245f044678a9fee781c8e05c459c5620d','Google Chrome / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','195.36.234.197','2026-04-04 20:05:11','2026-05-04 20:05:11','2026-03-15 09:48:09'),(8,1,'810f6fc45678a9b338c22279','64762cfc2e3220ab065b5eb49d482735eea962bffb132bc302de5f3d96d28ada','Google Chrome / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','2a01:e0a:dd2:1570:8979:4eeb:72fe:6eb9','2026-03-23 08:52:22','2026-04-22 09:52:22','2026-03-15 10:00:41'),(9,10,'5514fe9fdad1afad79ed670c','4b6c76a35effc1db5ae44f2391bc9bb09af58e7ed352d5ec31121e754020a26d','Safari / iPhone','Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3 Mobile/15E148 Safari/604.1','2a02:8424:b661:7101:6c86:1ba8:6851:412d','2026-04-10 20:47:04','2026-05-10 20:47:04','2026-03-15 10:23:16'),(10,3,'02a601150fa3548bc487ad5f','1831ab549580097614da53d0c2998a34907fcdfd122413655f29c37d5d501242','Safari / macOS','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3.1 Safari/605.1.15','2a01:e0a:dd2:1570:3165:b977:43a1:77dc','2026-03-15 15:55:31','2026-04-14 16:55:32','2026-03-15 14:47:02'),(11,10,'efb96af8c382fc153bc9343f','efaed29b586eb22aec9405003faeb60d9ab8a26ddc40f4306b07fca4a96ff538','Safari / iPhone','Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3 Mobile/15E148 Safari/604.1','2a02:8424:b661:7101:6c86:1ba8:6851:412d','2026-04-10 20:48:09','2026-05-10 20:48:09','2026-03-16 08:15:44'),(12,12,'a2459b10026f0a9200022b79','8415f7779e20f10fb99c3944abd4f0429e0670421a13cfcaba4a14c750659d2e','Google Chrome / Android','Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/25.0 Chrome/121.0.0.0 Mobile Safari/537.36','2a01:cb09:806a:c56b:a30d:b863:d730:695f','2026-03-16 14:53:25','2026-04-15 15:53:26','2026-03-16 13:53:25'),(13,1,'0af7e05f30f7115b50db61ae','6f7f1806476c8184075d861847ef558b529f95797440f80ebef80cab84dbe893','Google Chrome / macOS','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','2a01:e0a:f01:4200:582e:1c24:3aa:24df','2026-04-08 15:28:25','2026-05-08 15:28:25','2026-03-17 17:38:32'),(14,9,'fb6261e7fa1880eabf547c67','6df71efc3bc9972cfe3aa0e152ca8af94e330a4502b1a71402090f9608ce1f8b','Google Chrome / Android','Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36','2a01:e0a:feb:9f0:a860:9712:b019:89b7','2026-03-21 13:47:59','2026-04-20 14:48:00','2026-03-21 02:09:33'),(15,1,'0eaab30fa648be4a536eaf46','5881ce1591fb32bc26978eb8b2ea22fee747b1d1adc53c839e9fb102713bbfea','Google Chrome / macOS','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','2a01:e0a:dd2:1570:d5b7:14cb:4c6c:8d3d','2026-03-21 20:17:48','2026-04-20 21:17:48','2026-03-21 19:17:48'),(16,1,'e5cb8b48cf30d2c558c5a980','27f335c9cf9bdd6590f41609173d561287ecc587bbac1768ae34f8dd005938d9','Safari / macOS','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.3.1 Safari/605.1.15','2a01:e0a:dd2:1570:244f:25c0:528d:28c0','2026-03-25 08:01:17','2026-04-24 09:01:18','2026-03-21 20:26:19'),(17,13,'f9b623051ca6b341f2206df6','86b8e2339b848b262e6ec852e45ca38d21d792d67512946d7c2bb6cc30dacf62','Google Chrome / Android','Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36','2a01:e0a:8e9:af20:58dd:f343:ec46:fc3a','2026-03-30 01:15:39','2026-04-29 01:15:39','2026-03-22 08:59:54'),(18,13,'73e8c0ecfdc53e47818e4af0','78f400827e4aacbdf698e921346e744113d2b5c92d4f889ccd8447ec6c4c9fce','Google Chrome / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','2a01:e0a:8e9:af20:9127:3a1a:f443:6e7d','2026-04-10 10:12:53','2026-05-10 10:12:53','2026-03-27 11:21:22'),(20,9,'da39c79b8b2ac4ebfd3058a8','169d50bd011e28ca5cb7cf3e790db2d0910cf1b4a070351263cacfc9c66b8481','Google Chrome / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36','2a01:e0a:feb:9f0:ec0d:3795:4670:1ced','2026-04-07 20:33:36','2026-05-07 20:04:59','2026-04-07 15:57:26'),(21,2,'c9bec5917217ec56b66e30f3','280a8122f843f4315520ba3d4273913bfc004249dcffdd96e8779042453eb8b0','Opera / Windows','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 OPR/129.0.0.0','2001:863:3bd:93a9:216f:2ea8:2235:3aca','2026-04-08 12:55:42','2026-05-08 12:55:42','2026-04-07 18:11:24'),(22,3,'90ba1db46199ad2ff848730d','79d11928c05faba2bdef60c4765bd77f46c44b2e9e80bf5ffd7d41f583e6947b','Safari / iPhone','Mozilla/5.0 (iPhone; CPU iPhone OS 26_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/147.0.7727.47 Mobile/15E148 Safari/604.1','2a01:e0a:dd2:1570:a08a:287:8e27:a0b7','2026-04-10 21:09:17','2026-05-10 21:09:17','2026-04-10 19:09:17'),(23,14,'83a47f5c3251f484ac2077d8','c5a6d2c80c79b0a65911d52b1b759c4f43c1acd3863a6061b2e3bfc56294521e','Google Chrome / Android','Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Mobile Safari/537.36','86.246.63.201','2026-04-11 20:42:00','2026-05-11 20:16:46','2026-04-11 18:16:46');

--
-- Dumping routines for database 'pearpobarcahus'
--
/*!50003 DROP FUNCTION IF EXISTS `remove_short_words` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` FUNCTION `remove_short_words`(`inStr` LONGTEXT, `minLength` INT) RETURNS longtext CHARSET latin1
BEGIN
    DECLARE retStr LONGTEXT DEFAULT "";
    DECLARE tempStr LONGTEXT DEFAULT "";
    DECLARE aWord LONGTEXT DEFAULT "";
    DECLARE wordLength INT DEFAULT 0;
    SET tempStr = TRIM(inStr);
    WHILE (LENGTH(tempStr) > 0) DO
        SET aWord = SUBSTRING_INDEX(tempStr, " ", 1);
        SET wordLength = LENGTH(aWord);
        IF (wordLength >= minLength) THEN
            SET retStr = CONCAT(retStr, " ", aWord);
        END IF;
        SET tempStr = TRIM(SUBSTRING(tempStr, wordLength + 1));
    END WHILE;

    RETURN TRIM(retStr);
END ;;
DELIMITER ;
/*!50003 DROP FUNCTION IF EXISTS `remove_special_chars` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` FUNCTION `remove_special_chars`(`inStr` LONGTEXT) RETURNS longtext CHARSET latin1
BEGIN
    -- RETURN REGEXP_REPLACE(inStr, '[\]\\[?!£@#$%&§`~^_{}.:,;></\\|()=*\+-]+', '');
    -- n'est pas disponoble avant la version 8 de mysql
    SET inStr = REPLACE(inStr, '[', '');
    SET inStr = REPLACE(inStr, ']', '');
    SET inStr = REPLACE(inStr, '(', '');
    SET inStr = REPLACE(inStr, ')', '');
    SET inStr = REPLACE(inStr, '{', '');
    SET inStr = REPLACE(inStr, '}', '');
    SET inStr = REPLACE(inStr, '&', '');
    SET inStr = REPLACE(inStr, '~', '');
    SET inStr = REPLACE(inStr, '"', '');
    SET inStr = REPLACE(inStr, '#', '');
    SET inStr = REPLACE(inStr, '\'', '');
    SET inStr = REPLACE(inStr, '-', '');
    SET inStr = REPLACE(inStr, '|', '');
    SET inStr = REPLACE(inStr, '`', '');
    SET inStr = REPLACE(inStr, '_', '');
    SET inStr = REPLACE(inStr, '\\', '');
    SET inStr = REPLACE(inStr, '^', '');
    SET inStr = REPLACE(inStr, '@', '');
    SET inStr = REPLACE(inStr, '°', '');
    SET inStr = REPLACE(inStr, '+', '');
    SET inStr = REPLACE(inStr, '=', '');
    SET inStr = REPLACE(inStr, '¨', '');
    SET inStr = REPLACE(inStr, '£', '');
    SET inStr = REPLACE(inStr, '$', '');
    SET inStr = REPLACE(inStr, '¤', '');
    SET inStr = REPLACE(inStr, '*', '');
    SET inStr = REPLACE(inStr, '?', '');
    SET inStr = REPLACE(inStr, ',', '');
    SET inStr = REPLACE(inStr, '.', '');
    SET inStr = REPLACE(inStr, ';', '');
    SET inStr = REPLACE(inStr, '/', '');
    SET inStr = REPLACE(inStr, ':', '');
    SET inStr = REPLACE(inStr, '§', '');
    SET inStr = REPLACE(inStr, '!', '');
    RETURN inStr;
END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `get_content` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` PROCEDURE `get_content`(contentCode VARCHAR(128), langAlpha2 VARCHAR(2))
BEGIN
    SELECT
        univers.id AS universID,
        LOWER(univers.code) AS universCode,
        univers.displayOrder AS universDisplayOrder,
        univers.iconURL AS universIconURL,
        univers.logoURL AS universLogoURL,
        univers.buttonImageURL AS universButtonImageURL,
        univers.buttonVideoURL AS universButtonVideoURL,
        univers.backgroundImageURL AS universBackgroundImageURL,
        univers.backgroundVideoURL AS universBackgroundVideoURL,
        univers_lang.id AS universLangId,
        univers_lang.titleSEO AS universLangTitleSEO,
        univers_lang.descriptionSEO AS universLangDescriptionSEO,
        univers_lang.keywordsSEO AS universLangKeywordsSEO,
        content.id AS contentId,
        content.viewingOrder AS contentViewingOrder,
        LOWER(content.code) AS contentCode,
        content.phase AS contentPhase,
        content.director AS contentDirector,
        content.studio AS contentStudio,
        content.duration AS contentDuration,
        content.postCreditScene AS contentPostCreditScene,
        content_lang.id AS contentLangId,
        content_lang.category AS contentLangCategory,
        content_lang.title AS contentLangTitle,
        content_lang.description AS contentLangDescription,
        content_lang.releaseDate AS contentLangReleaseDate,
        content_lang.releaseLabel AS contentLangReleaseLabel,
        content_lang.trailerURL AS contentLangTrailerURL,
        content_lang.logoURL AS contentLangLogoURL,
        content_lang.posterURL AS contentLangPosterURL,
        LOWER(type.code) as typeCode,
        lang.alpha2 AS langAlpha2
    FROM
        pear_content_lang AS content_lang
        INNER JOIN pear_lang AS lang ON lang.id = content_lang.idLang
        INNER JOIN pear_content AS content ON content.id = content_lang.idContent
        INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers
        INNER JOIN pear_univers_lang AS univers_lang ON univers_lang.idUnivers = univers.id
        INNER JOIN pear_contenttype AS type ON type.id = content.idContentType
    WHERE
        lang.alpha2 = LOWER(langAlpha2)
        AND content.code = UPPER(contentCode)
    ;
END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `get_contents` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` PROCEDURE `get_contents`(IN `universCode` VARCHAR(128), IN `langAlpha2` VARCHAR(2),IN `orderBy` VARCHAR(32))
BEGIN
    SELECT
        content.id AS contentId,
        content.viewingOrder AS contentViewingOrder,
        LOWER(content.code) AS contentCode,
        content.phase AS contentPhase,
        content.director AS contentDirector,
        content.studio AS contentStudio,
        content.duration AS contentDuration,
        content.postCreditScene AS contentPostCreditScene,
        content_lang.id AS contentLangId,
        content_lang.category AS contentLangCategory,
        content_lang.title AS contentLangTitle,
        content_lang.description AS contentLangDescription,
        content_lang.releaseDate AS contentLangReleaseDate,
        content_lang.releaseLabel AS contentLangReleaseLabel,
        content_lang.isUSAreleaseDate AS contentLangIsUSAreleaseDate,
        content_lang.trailerURL AS contentLangTrailerURL,
        content_lang.trailerToNewPage AS contentLangTrailerToNewPage,
        content_lang.logoURL AS contentLangLogoURL,
        content_lang.posterURL AS contentLangPosterURL,
        LOWER(type.code) AS typeCode,
        type_lang.label AS typeLangLabel,
        lang.alpha2 AS langAlpha2
    FROM
        pear_content_lang AS content_lang
        INNER JOIN pear_lang AS lang ON lang.id = content_lang.idLang
        INNER JOIN pear_content AS content ON content.id = content_lang.idContent
        INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers
        INNER JOIN pear_contenttype AS type ON type.id = content.idContentType
        INNER JOIN pear_contenttype_lang AS type_lang ON type_lang.idContentType = type.id AND type_lang.IdLang = content_lang.idLang
    WHERE
        lang.alpha2 = LOWER(langAlpha2)
        AND univers.code = UPPER(universCode)
        AND CASE WHEN orderBy = 'viewingOrder' THEN content.viewingOrder IS NOT NULL ELSE TRUE END
    ORDER BY
        CASE WHEN orderBy = 'releaseDate' THEN content_lang.releaseDate END ASC,
        CASE WHEN orderBy = 'viewingOrder' THEN content.viewingOrder END ASC,
        CASE WHEN orderBy <> 'releaseDate' AND orderBy <> 'viewingOrder' THEN content.id END ASC
    ;

END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `get_univers` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` PROCEDURE `get_univers`(IN `universCode` VARCHAR(128), IN `langAlpha2` VARCHAR(2))
BEGIN
    SELECT
        univers.id AS universID,
        LOWER(univers.code) AS universCode,
        univers.displayOrder AS universDisplayOrder,
        univers.alternateContent AS universAlternateContent,
        univers.musicURL AS universMusicURL,
        univers.iconURL AS universIconURL,
        univers.logoURL AS universLogoURL,
        univers.buttonImageURL AS universButtonImageURL,
        univers.buttonVideoURL AS universButtonVideoURL,
        univers.backgroundImageURL AS universBackgroundImageURL,
        univers.backgroundVideoURL AS universBackgroundVideoURL,
        univers_lang.id AS universLangId,
        univers_lang.titleSEO AS universLangTitleSEO,
        univers_lang.descriptionSEO AS universLangDescriptionSEO,
        univers_lang.keywordsSEO AS universLangKeywordsSEO,
        univers_lang.buttonURL AS universLangButtonURL,
        lang.alpha2 AS langAlpha2
    FROM
        pear_univers_lang AS univers_lang
        INNER JOIN pear_lang AS lang ON lang.id = univers_lang.idLang
        INNER JOIN pear_univers AS univers ON univers.id = univers_lang.idUnivers
    WHERE
        lang.alpha2 = LOWER(langAlpha2)
        AND
        CASE
            WHEN universCode IS NOT NULL THEN univers.code = UPPER(universCode)
            ELSE 1
        END
    ORDER BY
        univers.displayOrder
    ;
END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `get_universes` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` PROCEDURE `get_universes`(IN `langAlpha2` VARCHAR(2))
BEGIN
    SELECT
        univers.id AS universID,
        LOWER(univers.code) AS universCode,
        univers.displayOrder AS universDisplayOrder,
        univers.alternateContent AS universAlternateContent,
        univers.musicURL AS universMusicURL,
        univers.iconURL AS universIconURL,
        univers.logoURL AS universLogoURL,
        univers.buttonImageURL AS universButtonImageURL,
        univers.buttonVideoURL AS universButtonVideoURL,
        univers.backgroundImageURL AS universBackgroundImageURL,
        univers.backgroundVideoURL AS universBackgroundVideoURL,
        univers_lang.titleSEO AS universLangTitleSEO,
        univers_lang.buttonURL AS universLangButtonURL
    FROM pear_univers AS univers
    INNER JOIN pear_univers_lang AS univers_lang ON univers.id = univers_lang.idUnivers
    INNER JOIN pear_lang AS lang ON lang.id = univers_lang.idLang
    WHERE
    lang.alpha2 = LOWER(langAlpha2)
    ORDER BY univers.displayOrder
    ;
END ;;
DELIMITER ;
/*!50003 DROP PROCEDURE IF EXISTS `search` */;
DELIMITER ;;
CREATE DEFINER=`pearpobarcahus`@`%` PROCEDURE `search`(IN `search` LONGTEXT, IN `lang` CHAR(2), IN `minLength` INT)
BEGIN

/*
Recherche insensible à la casse,
aux caractères spéciaux,
aux espaces supplémentaires.

CALL search('The Hunger Games', 'fr', 2);
CALL search('Hunger Games Révolte partie 2', 'fr', 2);
CALL search(' La   Revolte  !', 'fr', 2);
CALL search(' La   Revolte de la partie basse !', 'fr, 2);
CALL search('partie 1', 'fr', 2);

Classement | Recherche
1 | Recherche du texte complet dans les univers
2 | Recherche du texte complet dans les contenus
3 | Ramènes les univers de la recherche du texte complet dans les contenus
4 | Recherche du texte partiel dans les univers
5 | Recherche du texte partiel dans les contenus
6 | Ramènes les univers de la recherche du texte partiel dans les contenus
7 | Recherche de chaque mot dans les univers
8 | Recherche de chaque mot dans les contenus
9 | Ramènes les univers de la recherche de chaque mot dans les contenus
*/

DECLARE exactSearch LONGTEXT DEFAULT '';
DECLARE partialSearch LONGTEXT DEFAULT '';

SET exactSearch =
REPLACE(
    LOWER(
        TRIM(
            search
        )
    )
,' ', '%');

SET partialSearch =
REPLACE(
    LOWER(
        remove_short_words(
            remove_special_chars(
                search
            )
        , minLength)
    )
,' ', '%');

CREATE TEMPORARY TABLE temporary_table (
    `rank` INT,                         /* classement de 1 à 9 */
    `type` VARCHAR(128),                /* univers ou content */
    `langAlpha2` VARCHAR(2),            /* pear_lang.alpha2 */
    `id` INT,                           /* pear_univers.id ou pear_content.id */
    `code` VARCHAR(128),                /* pear_univers.code ou pear_content.code */
    `universCode` VARCHAR(128),         /* pear_univers.code */
    `title` VARCHAR(128),               /* pear_univers_lang.titleSEO ou pear_content_lang.title */
    `universTitle` VARCHAR(128),        /* pear_univers_lang.titleSEO */
    `description` VARCHAR(4096),        /* pear_univers_lang.descriptionSEO ou pear_content_lang.description */
    `image` VARCHAR(1024),              /* pear_univers_lang.buttonURL ou pear_content_lang.logoURL */
    `contentType` VARCHAR(128),         /* pear_contenttype.code */
    `contentTypeLabel` VARCHAR(128),    /* pear_contenttype_lang.label */
    `studio` VARCHAR(128),              /* pear_content.studio */
    `director` VARCHAR(128),            /* pear_content.director */
    `duration` INT(10),                 /* pear_content.duration */
    `postCreditScene`  INT(10),         /* pear_content.postCreditScene */
    `releaseDate` DATETIME,             /* pear_content_lang.releaseDate */
    `releaseLabel` VARCHAR(128),        /* pear_content_lang.releaseLabel */
    `trailerURL` VARCHAR(1024),         /* pear_content_lang.trailerURL */
    `trailerToNewPage` TINYINT(1)       /* pear_content_lang.trailerToNewPage */
);

SET @sql1 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  1 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(univerLang.titleSEO) = "', exactSearch, '"',
'\r\n);'
);

SET @sql2 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  2 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(contentLang.title) = "', exactSearch, '"',
'\r\n);'
);

SET @sql3 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  3 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(univerLang.titleSEO) LIKE "%', exactSearch, '%"',
'\r\n);'
);

SET @sql4 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  4 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(univerLang.descriptionSEO) LIKE "%', exactSearch, '%"',
'\r\n);'
);

SET @sql5 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  5 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(contentLang.title) LIKE "%', exactSearch, '%"',
'\r\n);'
);

SET @sql6 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  6 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(contentLang.description) LIKE "%', exactSearch,'%"',
'\r\n);'
);

SET @sql7 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  7 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  univers.id IN (',
'\r\n    SELECT',
'\r\n    DISTINCT content.idUnivers',
'\r\n    FROM pear_content AS content',
'\r\n    INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n    INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n    WHERE',
'\r\n    lang.alpha2 = "', lang, '"',
'\r\n    AND',
'\r\n    (',
'\r\n      LOWER(contentLang.title) LIKE "%', exactSearch, '%"',
'\r\n      OR LOWER(contentLang.description) LIKE "%', exactSearch, '%"',
'\r\n    )',
'\r\n  )',
'\r\n);'
);

SET @sql8 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  8 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(univerLang.titleSEO) LIKE "%', partialSearch, '%"',
'\r\n);'
);

SET @sql9 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  9 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(univerLang.descriptionSEO) LIKE "%', partialSearch, '%"',
'\r\n);'
);

SET @sql10 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  10 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  (',
'\r\n    LOWER(contentLang.title) LIKE "%', partialSearch, '%"',
'\r\n    OR LOWER(contentLang.description) LIKE "%', partialSearch, '%"',
'\r\n  )',
'\r\n);'
);

SET @sql11 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  11 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  LOWER(contentLang.description) LIKE "%', partialSearch, '%"',
'\r\n);'
);

SET @sql12 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  12 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  univers.id IN (',
'\r\n    SELECT',
'\r\n    DISTINCT content.idUnivers',
'\r\n    FROM pear_content AS content',
'\r\n    INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n    INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n    WHERE',
'\r\n    lang.alpha2 = "', lang, '"',
'\r\n    AND',
'\r\n    (',
'\r\n      LOWER(contentLang.title) LIKE "%', partialSearch, '%"',
'\r\n      OR LOWER(contentLang.description) LIKE "%', partialSearch, '%"',
'\r\n    )',
'\r\n  )',
'\r\n);'
);

SET @sql13 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  13 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  (LOWER(univerLang.titleSEO) LIKE "%', REPLACE(partialSearch,'%', '%" OR LOWER(univerLang.titleSEO) LIKE \"%'), '%")',
'\r\n);'
);

SET @sql14 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  14 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  (LOWER(univerLang.descriptionSEO) LIKE "%', REPLACE(partialSearch,'%', '%" OR LOWER(univerLang.descriptionSEO) LIKE \"%'), '%")',
'\r\n);'
);

SET @sql15 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  15 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  (LOWER(contentLang.title) LIKE "%', REPLACE(partialSearch,'%', '%" OR LOWER(contentLang.title) LIKE \"%'), '%")',
'\r\n);'
);

SET @sql16 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  16 AS `rank`,',
'\r\n  "content" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  content.id AS `id`,',
'\r\n  content.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  contentLang.title AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  contentLang.description AS `description`,',
'\r\n  contentLang.logoURL AS `image`,',
'\r\n  contentType.code AS `contentType`,',
'\r\n  contentTypeLang.label AS `contentTypeLabel`,',
'\r\n  content.studio AS `studio`,',
'\r\n  content.director AS `director`,',
'\r\n  content.duration AS `duration`,',
'\r\n  content.postCreditScene AS `postCreditScene`,',
'\r\n  contentLang.releaseDate AS `releaseDate`,',
'\r\n  contentLang.releaseLabel AS `releaseLabel`,',
'\r\n  contentLang.trailerURL AS `trailerURL`,',
'\r\n  contentLang.trailerToNewPage AS `trailerToNewPage`',
'\r\n  FROM pear_content AS content',
'\r\n  INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n  INNER JOIN pear_contenttype AS contentType ON contentType.Id = content.idContentType',
'\r\n  INNER JOIN pear_contenttype_lang AS contentTypeLang ON contentTypeLang.idContentType = contentType.id AND contentTypeLang.IdLang = contentLang.idLang',
'\r\n  INNER JOIN pear_univers AS univers ON univers.id = content.idUnivers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  (LOWER(contentLang.description) LIKE "%', REPLACE(partialSearch,'%', '%" OR LOWER(contentLang.description) LIKE \"%'), '%")',
'\r\n);'
);

SET @sql17 =
CONCAT(
'\r\nINSERT INTO temporary_table (',
'\r\n  SELECT',
'\r\n  17 AS `rank`,',
'\r\n  "univers" AS `type`,',
'\r\n  lang.alpha2 AS `langAlpha2`,',
'\r\n  univers.id AS `id`,',
'\r\n  univers.code AS `code`,',
'\r\n  univers.code AS `univerCode`,',
'\r\n  univerLang.titleSEO AS `title`,',
'\r\n  univerLang.titleSEO AS `universTitle`,',
'\r\n  univerLang.descriptionSEO AS `description`,',
'\r\n  univerLang.buttonURL AS `image`,',
'\r\n  NULL AS `contentType`,',
'\r\n  NULL AS `contentTypeLabel`,',
'\r\n  NULL AS `studio`,',
'\r\n  NULL AS `director`,',
'\r\n  NULL AS `duration`,',
'\r\n  NULL AS `postCreditScene`,',
'\r\n  NULL AS `releaseDate`,',
'\r\n  NULL AS `releaseLabel`,',
'\r\n  NULL AS `trailerURL`,',
'\r\n  NULL AS `trailerToNewPage`',
'\r\n  FROM pear_univers AS univers',
'\r\n  INNER JOIN pear_univers_lang AS univerLang ON univers.id = univerLang.idUnivers',
'\r\n  INNER JOIN pear_lang AS lang ON lang.Id = univerLang.idLang',
'\r\n  WHERE',
'\r\n  lang.alpha2 = "', lang, '"',
'\r\n  AND',
'\r\n  univers.id IN (',
'\r\n    SELECT',
'\r\n    DISTINCT content.idUnivers',
'\r\n    FROM pear_content AS content',
'\r\n    INNER JOIN pear_content_lang AS contentLang ON contentLang.idContent = content.id',
'\r\n    INNER JOIN pear_lang AS lang ON lang.Id = contentLang.idLang',
'\r\n    WHERE',
'\r\n    lang.alpha2 = "', lang, '"',
'\r\n    AND',
'\r\n    (',
'\r\n      LOWER(contentLang.title) LIKE "%', REPLACE(partialSearch,'%', '%" OR LOWER(contentLang.title) LIKE \"%'), '%"',
'\r\n      OR LOWER(contentLang.description) LIKE "%', REPLACE(partialSearch,'%', '%" OR LOWER(contentLang.description) LIKE \"%'), '%"',
'\r\n    )',
'\r\n  )',
'\r\n);'
);

PREPARE query FROM @sql1; EXECUTE query;
PREPARE query FROM @sql2; EXECUTE query;
PREPARE query FROM @sql3; EXECUTE query;
PREPARE query FROM @sql4; EXECUTE query;
PREPARE query FROM @sql5; EXECUTE query;
PREPARE query FROM @sql6; EXECUTE query;
PREPARE query FROM @sql7; EXECUTE query;
PREPARE query FROM @sql8; EXECUTE query;
PREPARE query FROM @sql9; EXECUTE query;
PREPARE query FROM @sql10; EXECUTE query;
PREPARE query FROM @sql11; EXECUTE query;
PREPARE query FROM @sql12; EXECUTE query;
PREPARE query FROM @sql13; EXECUTE query;
PREPARE query FROM @sql14; EXECUTE query;
PREPARE query FROM @sql15; EXECUTE query;
PREPARE query FROM @sql16; EXECUTE query;
PREPARE query FROM @sql17; EXECUTE query;

DEALLOCATE PREPARE query;

SELECT
`rank`,
`type`,
`langAlpha2`,
`id`,
`code`,
`universCode`,
`title`,
`universTitle`,
`description`,
`image`,
`contentType`,
`contentTypeLabel`,
`studio`,
`director`,
`duration`,
`postCreditScene`,
`releaseDate`,
`releaseLabel`,
`trailerURL`,
`trailerToNewPage`
FROM temporary_table
GROUP BY `type`, `code`
ORDER BY `rank` ASC;

DROP TABLE temporary_table;

END ;;
DELIMITER ;


