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