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,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();
|
||||
Reference in New Issue
Block a user