-- 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();
