mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 01:40:01 +00:00
abd46bcb2b
- HostingerReachPage (replaces MailchimpPage): connect Reach via reach-connection, per-association segment sync via reach-sync - ARC Applications: Buildium import review/matching updates - buildium-import-stage/apply: latest staging + apply changes (already deployed to Supabase) - migrations: hostinger_reach_integration + arc_finalized_lock service role (already applied to live DB) - CI: note that deployment is VPS-side polling (auto-deploy.sh cron) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 lines
1.7 KiB
SQL
40 lines
1.7 KiB
SQL
-- Hostinger Reach integration: one global API token + per-association segment/sync tracking.
|
|
|
|
CREATE TABLE IF NOT EXISTS public.hostinger_reach_config (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
api_token text NOT NULL,
|
|
created_by uuid,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS public.hostinger_reach_segments (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
association_id uuid NOT NULL UNIQUE REFERENCES public.associations(id) ON DELETE CASCADE,
|
|
segment_uuid text,
|
|
segment_name text,
|
|
last_sync_at timestamptz,
|
|
last_sync_status text,
|
|
last_sync_count integer,
|
|
last_sync_error text,
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now()
|
|
);
|
|
|
|
ALTER TABLE public.hostinger_reach_config ENABLE ROW LEVEL SECURITY;
|
|
ALTER TABLE public.hostinger_reach_segments ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Admin-only access (service role bypasses RLS for the edge functions).
|
|
CREATE POLICY "Admins manage reach config" ON public.hostinger_reach_config
|
|
FOR ALL USING (public.has_role(auth.uid(), 'admin'::public.app_role))
|
|
WITH CHECK (public.has_role(auth.uid(), 'admin'::public.app_role));
|
|
|
|
CREATE POLICY "Admins manage reach segments" ON public.hostinger_reach_segments
|
|
FOR ALL USING (public.has_role(auth.uid(), 'admin'::public.app_role))
|
|
WITH CHECK (public.has_role(auth.uid(), 'admin'::public.app_role));
|
|
|
|
CREATE TRIGGER set_reach_config_updated_at BEFORE UPDATE ON public.hostinger_reach_config
|
|
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
|
|
CREATE TRIGGER set_reach_segments_updated_at BEFORE UPDATE ON public.hostinger_reach_segments
|
|
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();
|