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,76 @@
|
||||
|
||||
-- Collaborative documents table
|
||||
CREATE TABLE public.collaborative_documents (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
association_id uuid REFERENCES public.associations(id) ON DELETE CASCADE NOT NULL,
|
||||
title text NOT NULL,
|
||||
content text DEFAULT '',
|
||||
created_by uuid NOT NULL,
|
||||
locked_by uuid DEFAULT NULL,
|
||||
locked_at timestamptz DEFAULT NULL,
|
||||
created_at timestamptz NOT NULL DEFAULT now(),
|
||||
updated_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- Edit history log
|
||||
CREATE TABLE public.document_edit_history (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
document_id uuid REFERENCES public.collaborative_documents(id) ON DELETE CASCADE NOT NULL,
|
||||
user_id uuid NOT NULL,
|
||||
user_name text NOT NULL,
|
||||
user_color text NOT NULL DEFAULT '#3b82f6',
|
||||
change_summary text,
|
||||
content_snapshot text,
|
||||
created_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- Enable RLS
|
||||
ALTER TABLE public.collaborative_documents ENABLE ROW LEVEL SECURITY;
|
||||
ALTER TABLE public.document_edit_history ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Staff can do anything
|
||||
CREATE POLICY "Staff full access to collaborative_documents"
|
||||
ON public.collaborative_documents FOR ALL TO authenticated
|
||||
USING (
|
||||
public.has_role(auth.uid(), 'admin') OR
|
||||
public.has_role(auth.uid(), 'manager') OR
|
||||
public.has_role(auth.uid(), 'employee')
|
||||
);
|
||||
|
||||
-- Board members can access docs for their associations
|
||||
CREATE POLICY "Board members access collaborative_documents"
|
||||
ON public.collaborative_documents FOR ALL TO authenticated
|
||||
USING (association_id IN (SELECT public.get_user_association_ids()));
|
||||
|
||||
-- Staff full access to edit history
|
||||
CREATE POLICY "Staff full access to document_edit_history"
|
||||
ON public.document_edit_history FOR ALL TO authenticated
|
||||
USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.collaborative_documents d
|
||||
WHERE d.id = document_id AND (
|
||||
public.has_role(auth.uid(), 'admin') OR
|
||||
public.has_role(auth.uid(), 'manager') OR
|
||||
public.has_role(auth.uid(), 'employee')
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
-- Board members access edit history for their association docs
|
||||
CREATE POLICY "Board members access document_edit_history"
|
||||
ON public.document_edit_history FOR ALL TO authenticated
|
||||
USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM public.collaborative_documents d
|
||||
WHERE d.id = document_id AND d.association_id IN (SELECT public.get_user_association_ids())
|
||||
)
|
||||
);
|
||||
|
||||
-- Enable realtime for edit history
|
||||
ALTER PUBLICATION supabase_realtime ADD TABLE public.document_edit_history;
|
||||
ALTER PUBLICATION supabase_realtime ADD TABLE public.collaborative_documents;
|
||||
|
||||
-- Updated_at trigger
|
||||
CREATE TRIGGER update_collaborative_documents_updated_at
|
||||
BEFORE UPDATE ON public.collaborative_documents
|
||||
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
|
||||
Reference in New Issue
Block a user