mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 09:50:01 +00:00
183fe0a93c
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
58 lines
1.8 KiB
SQL
58 lines
1.8 KiB
SQL
|
|
-- Create autopay enrollments table
|
|
CREATE TABLE public.autopay_enrollments (
|
|
id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
association_id UUID NOT NULL REFERENCES public.associations(id) ON DELETE CASCADE,
|
|
owner_id UUID REFERENCES public.owners(id) ON DELETE SET NULL,
|
|
unit_id UUID REFERENCES public.units(id) ON DELETE SET NULL,
|
|
stripe_customer_id TEXT NOT NULL,
|
|
stripe_payment_method_id TEXT NOT NULL,
|
|
payment_method_type TEXT NOT NULL DEFAULT 'card',
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
enrolled_by UUID,
|
|
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Enable RLS
|
|
ALTER TABLE public.autopay_enrollments ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Admin/manager full access
|
|
CREATE POLICY "Admins can manage all autopay enrollments"
|
|
ON public.autopay_enrollments
|
|
FOR ALL
|
|
TO authenticated
|
|
USING (
|
|
public.has_role(auth.uid(), 'admin') OR public.has_role(auth.uid(), 'manager')
|
|
)
|
|
WITH CHECK (
|
|
public.has_role(auth.uid(), 'admin') OR public.has_role(auth.uid(), 'manager')
|
|
);
|
|
|
|
-- Owners can view their own
|
|
CREATE POLICY "Users can view own autopay enrollments"
|
|
ON public.autopay_enrollments
|
|
FOR SELECT
|
|
TO authenticated
|
|
USING (enrolled_by = auth.uid());
|
|
|
|
-- Owners can create their own
|
|
CREATE POLICY "Users can create own autopay enrollments"
|
|
ON public.autopay_enrollments
|
|
FOR INSERT
|
|
TO authenticated
|
|
WITH CHECK (enrolled_by = auth.uid());
|
|
|
|
-- Owners can update their own
|
|
CREATE POLICY "Users can update own autopay enrollments"
|
|
ON public.autopay_enrollments
|
|
FOR UPDATE
|
|
TO authenticated
|
|
USING (enrolled_by = auth.uid());
|
|
|
|
-- Timestamp trigger
|
|
CREATE TRIGGER update_autopay_enrollments_updated_at
|
|
BEFORE UPDATE ON public.autopay_enrollments
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION public.update_updated_at_column();
|