Create migration for community posts likes and comments counters
cgen-ec7c0a488e3142738797a2bed6725053
This commit is contained in:
parent
5dcda29eb5
commit
f35c5c892a
1 changed files with 54 additions and 0 deletions
|
|
@ -0,0 +1,54 @@
|
|||
-- Add likes_count and comments_count columns to community_posts if they don't exist
|
||||
ALTER TABLE public.community_posts
|
||||
ADD COLUMN IF NOT EXISTS likes_count INTEGER DEFAULT 0 NOT NULL,
|
||||
ADD COLUMN IF NOT EXISTS comments_count INTEGER DEFAULT 0 NOT NULL;
|
||||
|
||||
-- Create function to update likes_count
|
||||
CREATE OR REPLACE FUNCTION update_post_likes_count()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF TG_OP = 'INSERT' THEN
|
||||
UPDATE public.community_posts
|
||||
SET likes_count = (SELECT COUNT(*) FROM public.community_post_likes WHERE post_id = NEW.post_id)
|
||||
WHERE id = NEW.post_id;
|
||||
ELSIF TG_OP = 'DELETE' THEN
|
||||
UPDATE public.community_posts
|
||||
SET likes_count = (SELECT COUNT(*) FROM public.community_post_likes WHERE post_id = OLD.post_id)
|
||||
WHERE id = OLD.post_id;
|
||||
END IF;
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Create function to update comments_count
|
||||
CREATE OR REPLACE FUNCTION update_post_comments_count()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
IF TG_OP = 'INSERT' THEN
|
||||
UPDATE public.community_posts
|
||||
SET comments_count = (SELECT COUNT(*) FROM public.community_comments WHERE post_id = NEW.post_id)
|
||||
WHERE id = NEW.post_id;
|
||||
ELSIF TG_OP = 'DELETE' THEN
|
||||
UPDATE public.community_posts
|
||||
SET comments_count = (SELECT COUNT(*) FROM public.community_comments WHERE post_id = OLD.post_id)
|
||||
WHERE id = OLD.post_id;
|
||||
END IF;
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Drop existing triggers if they exist
|
||||
DROP TRIGGER IF EXISTS trigger_update_post_likes_count ON public.community_post_likes;
|
||||
DROP TRIGGER IF EXISTS trigger_update_post_comments_count ON public.community_comments;
|
||||
|
||||
-- Create triggers for likes
|
||||
CREATE TRIGGER trigger_update_post_likes_count
|
||||
AFTER INSERT OR DELETE ON public.community_post_likes
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_post_likes_count();
|
||||
|
||||
-- Create triggers for comments
|
||||
CREATE TRIGGER trigger_update_post_comments_count
|
||||
AFTER INSERT OR DELETE ON public.community_comments
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_post_comments_count();
|
||||
Loading…
Reference in a new issue