-- ARC application votes CREATE TABLE public.arc_application_votes ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), application_id UUID NOT NULL REFERENCES public.arc_applications(id) ON DELETE CASCADE, user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE, vote TEXT NOT NULL CHECK (vote IN ('approve', 'deny')), created_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE (application_id, user_id) ); ALTER TABLE public.arc_application_votes ENABLE ROW LEVEL SECURITY; CREATE POLICY "Staff full access on arc_application_votes" ON public.arc_application_votes FOR ALL TO authenticated USING (has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'manager'::app_role)) WITH CHECK (has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'manager'::app_role)); CREATE POLICY "Authenticated users can view arc_application_votes" ON public.arc_application_votes FOR SELECT TO authenticated USING (true); -- ARC application comments CREATE TABLE public.arc_application_comments ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), application_id UUID NOT NULL REFERENCES public.arc_applications(id) ON DELETE CASCADE, user_id UUID NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE, comment TEXT NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); ALTER TABLE public.arc_application_comments ENABLE ROW LEVEL SECURITY; CREATE POLICY "Staff full access on arc_application_comments" ON public.arc_application_comments FOR ALL TO authenticated USING (has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'manager'::app_role)) WITH CHECK (has_role(auth.uid(), 'admin'::app_role) OR has_role(auth.uid(), 'manager'::app_role)); CREATE POLICY "Authenticated users can view arc_application_comments" ON public.arc_application_comments FOR SELECT TO authenticated USING (true);