20250707092106-1f3bb355-294b-4003-91a2-5fed66935c68.sql 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. -- Migration pour corriger les données existantes et maintenir la cohérence du nombre d'articles
  2. -- Mettre à jour le article_count pour tous les flux existants
  3. UPDATE public.feeds
  4. SET article_count = (
  5. SELECT COUNT(*)
  6. FROM public.articles
  7. WHERE articles.feed_id = feeds.id
  8. );
  9. -- Créer une fonction pour maintenir automatiquement le article_count
  10. CREATE OR REPLACE FUNCTION public.update_feed_article_count()
  11. RETURNS TRIGGER AS $$
  12. BEGIN
  13. -- Mise à jour du compteur d'articles pour le flux concerné
  14. UPDATE public.feeds
  15. SET article_count = (
  16. SELECT COUNT(*)
  17. FROM public.articles
  18. WHERE feed_id = COALESCE(NEW.feed_id, OLD.feed_id)
  19. )
  20. WHERE id = COALESCE(NEW.feed_id, OLD.feed_id);
  21. RETURN COALESCE(NEW, OLD);
  22. END;
  23. $$ LANGUAGE plpgsql;
  24. -- Créer des triggers pour maintenir automatiquement le article_count
  25. CREATE TRIGGER update_feed_article_count_on_insert
  26. AFTER INSERT ON public.articles
  27. FOR EACH ROW
  28. EXECUTE FUNCTION public.update_feed_article_count();
  29. CREATE TRIGGER update_feed_article_count_on_delete
  30. AFTER DELETE ON public.articles
  31. FOR EACH ROW
  32. EXECUTE FUNCTION public.update_feed_article_count();