From d0d4003f8e8241f7f8f84df57d704c3aba700908 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Thu, 16 Oct 2025 14:55:18 +0000 Subject: [PATCH] Implement database trigger for reviews --- ...9_dfa14e84-4d4a-4fe7-b1b3-f59be8e08159.sql | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 supabase/migrations/20251016145459_dfa14e84-4d4a-4fe7-b1b3-f59be8e08159.sql diff --git a/supabase/migrations/20251016145459_dfa14e84-4d4a-4fe7-b1b3-f59be8e08159.sql b/supabase/migrations/20251016145459_dfa14e84-4d4a-4fe7-b1b3-f59be8e08159.sql new file mode 100644 index 00000000..b968fa88 --- /dev/null +++ b/supabase/migrations/20251016145459_dfa14e84-4d4a-4fe7-b1b3-f59be8e08159.sql @@ -0,0 +1,45 @@ +-- Function to automatically add ride credit when user reviews a ride +CREATE OR REPLACE FUNCTION auto_add_ride_credit_on_review() +RETURNS TRIGGER +LANGUAGE plpgsql +SECURITY DEFINER +SET search_path = public +AS $$ +BEGIN + -- Only proceed if this is a ride review (not a park review) + IF NEW.ride_id IS NOT NULL THEN + -- Check if user already has this ride credit + IF NOT EXISTS ( + SELECT 1 FROM public.user_ride_credits + WHERE user_id = NEW.user_id AND ride_id = NEW.ride_id + ) THEN + -- Insert ride credit using visit_date from review if available + INSERT INTO public.user_ride_credits ( + user_id, + ride_id, + first_ride_date, + ride_count + ) VALUES ( + NEW.user_id, + NEW.ride_id, + NEW.visit_date, + 1 + ); + + RAISE NOTICE 'Auto-added ride credit for user % on ride %', NEW.user_id, NEW.ride_id; + END IF; + END IF; + + RETURN NEW; +END; +$$; + +-- Trigger on review insert +CREATE TRIGGER auto_add_ride_credit_after_review + AFTER INSERT ON public.reviews + FOR EACH ROW + EXECUTE FUNCTION auto_add_ride_credit_on_review(); + +-- Add helpful comment +COMMENT ON FUNCTION auto_add_ride_credit_on_review() IS + 'Automatically adds a ride credit when a user reviews a ride they haven''t tracked yet. Uses visit_date from review as first_ride_date.'; \ No newline at end of file