Add ACMCC app source, Supabase backend, and project config

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 20:19:26 -04:00
parent 313b51b412
commit 183fe0a93c
1422 changed files with 259271 additions and 0 deletions
@@ -0,0 +1,70 @@
ALTER TABLE public.amenity_bookings
ADD COLUMN IF NOT EXISTS booking_type TEXT NOT NULL DEFAULT 'rental',
ADD COLUMN IF NOT EXISTS title TEXT,
ADD COLUMN IF NOT EXISTS end_time TIME WITHOUT TIME ZONE,
ADD COLUMN IF NOT EXISTS location TEXT,
ADD COLUMN IF NOT EXISTS form_data JSONB NOT NULL DEFAULT '{}'::jsonb,
ADD COLUMN IF NOT EXISTS created_by UUID;
ALTER TABLE public.amenity_bookings
DROP CONSTRAINT IF EXISTS amenity_bookings_booking_type_check;
ALTER TABLE public.amenity_bookings
ADD CONSTRAINT amenity_bookings_booking_type_check
CHECK (booking_type IN ('rental', 'meeting'));
CREATE INDEX IF NOT EXISTS idx_amenity_bookings_assoc_type_date
ON public.amenity_bookings (association_id, booking_type, booking_date);
CREATE INDEX IF NOT EXISTS idx_amenity_bookings_amenity_date
ON public.amenity_bookings (amenity_id, booking_date);
ALTER TABLE public.amenity_bookings ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS "Staff can manage amenity bookings" ON public.amenity_bookings;
DROP POLICY IF EXISTS "Association users can view amenity bookings" ON public.amenity_bookings;
DROP POLICY IF EXISTS "Public can create amenity booking requests" ON public.amenity_bookings;
CREATE POLICY "Staff can manage amenity bookings"
ON public.amenity_bookings
FOR ALL
TO authenticated
USING (
public.has_role(auth.uid(), 'admin'::public.app_role)
OR public.has_role(auth.uid(), 'manager'::public.app_role)
)
WITH CHECK (
public.has_role(auth.uid(), 'admin'::public.app_role)
OR public.has_role(auth.uid(), 'manager'::public.app_role)
);
CREATE POLICY "Association users can view amenity bookings"
ON public.amenity_bookings
FOR SELECT
TO authenticated
USING (
association_id IN (SELECT public.get_user_association_ids())
OR public.has_role(auth.uid(), 'admin'::public.app_role)
OR public.has_role(auth.uid(), 'manager'::public.app_role)
);
CREATE POLICY "Public can create amenity booking requests"
ON public.amenity_bookings
FOR INSERT
TO anon, authenticated
WITH CHECK (
EXISTS (
SELECT 1
FROM public.amenities a
WHERE a.id = amenity_bookings.amenity_id
AND a.association_id = amenity_bookings.association_id
AND a.is_active = true
AND a.amenity_type IN ('booking', 'rental_calendar', 'meeting_calendar')
)
);
DROP TRIGGER IF EXISTS update_amenity_bookings_updated_at ON public.amenity_bookings;
CREATE TRIGGER update_amenity_bookings_updated_at
BEFORE UPDATE ON public.amenity_bookings
FOR EACH ROW
EXECUTE FUNCTION public.update_updated_at_column();