mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 09:50:01 +00:00
Add ACMCC app source, Supabase backend, and project config
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
-- Public-safe RPCs for amenity calendar visibility and booking lookup
|
||||
|
||||
-- 1) Return confirmed/blocked bookings for an amenity, exposing only safe fields
|
||||
CREATE OR REPLACE FUNCTION public.get_public_amenity_booked_dates(p_amenity_id uuid)
|
||||
RETURNS TABLE(booking_date date, start_time text, end_time text, status text)
|
||||
LANGUAGE sql
|
||||
STABLE SECURITY DEFINER
|
||||
SET search_path = public
|
||||
AS $$
|
||||
SELECT ab.booking_date, ab.start_time, ab.end_time, ab.status
|
||||
FROM public.amenity_bookings ab
|
||||
JOIN public.amenities a ON a.id = ab.amenity_id
|
||||
JOIN public.association_public_pages app ON app.association_id = a.association_id
|
||||
WHERE ab.amenity_id = p_amenity_id
|
||||
AND a.is_active = true
|
||||
AND app.is_published = true
|
||||
AND ab.status IN ('confirmed', 'approved', 'blocked')
|
||||
AND ab.booking_date >= (CURRENT_DATE - INTERVAL '7 days')
|
||||
$$;
|
||||
|
||||
GRANT EXECUTE ON FUNCTION public.get_public_amenity_booked_dates(uuid) TO anon, authenticated;
|
||||
|
||||
-- 2) Look up a single booking for the public confirmation page
|
||||
CREATE OR REPLACE FUNCTION public.get_public_booking_confirmation(p_booking_id uuid)
|
||||
RETURNS TABLE(
|
||||
id uuid,
|
||||
guest_name text,
|
||||
guest_email text,
|
||||
booking_date date,
|
||||
start_time text,
|
||||
end_time text,
|
||||
status text,
|
||||
title text,
|
||||
amenity_name text,
|
||||
association_name text,
|
||||
association_slug text
|
||||
)
|
||||
LANGUAGE sql
|
||||
STABLE SECURITY DEFINER
|
||||
SET search_path = public
|
||||
AS $$
|
||||
SELECT
|
||||
ab.id,
|
||||
ab.guest_name,
|
||||
ab.guest_email,
|
||||
ab.booking_date,
|
||||
ab.start_time,
|
||||
ab.end_time,
|
||||
ab.status,
|
||||
ab.title,
|
||||
a.name AS amenity_name,
|
||||
assoc.name AS association_name,
|
||||
app.slug AS association_slug
|
||||
FROM public.amenity_bookings ab
|
||||
JOIN public.amenities a ON a.id = ab.amenity_id
|
||||
JOIN public.associations assoc ON assoc.id = ab.association_id
|
||||
LEFT JOIN public.association_public_pages app ON app.association_id = ab.association_id
|
||||
WHERE ab.id = p_booking_id
|
||||
$$;
|
||||
|
||||
GRANT EXECUTE ON FUNCTION public.get_public_booking_confirmation(uuid) TO anon, authenticated;
|
||||
|
||||
-- 3) Allow status='blocked' as a valid booking_type-independent status used by admin manual blocks
|
||||
-- (no constraint exists on status, so nothing to change)
|
||||
Reference in New Issue
Block a user