Implement database trigger for reviews

This commit is contained in:
gpt-engineer-app[bot]
2025-10-16 14:55:18 +00:00
parent 9a911b0655
commit d0d4003f8e

View File

@@ -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.';