-- 推广员关系表：记录下级与上级（邀请人）的绑定关系
CREATE TABLE IF NOT EXISTS public.ak_promoter_relations (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  uid UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
  inviter_uid UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
  bind_time TIMESTAMPTZ DEFAULT now(),
  created_at TIMESTAMPTZ DEFAULT now(),

  CONSTRAINT chk_ak_promoter_relations_no_self CHECK (uid <> inviter_uid),
  CONSTRAINT uq_ak_promoter_relations_uid UNIQUE (uid)
);

CREATE INDEX IF NOT EXISTS idx_ak_promoter_relations_inviter_uid ON public.ak_promoter_relations(inviter_uid);

-- 启用 RLS
ALTER TABLE public.ak_promoter_relations ENABLE ROW LEVEL SECURITY;

-- Admin 可读写
CREATE POLICY "Admins can manage promoter relations"
ON public.ak_promoter_relations
FOR ALL
TO authenticated
USING (
  EXISTS (
    SELECT 1 FROM public.ak_users
    WHERE id = auth.uid() AND role = 'admin'
  )
)
WITH CHECK (
  EXISTS (
    SELECT 1 FROM public.ak_users
    WHERE id = auth.uid() AND role = 'admin'
  )
);

-- 普通用户可查看与自己相关的关系（可选，便于移动端展示上级/下级）
CREATE POLICY "Users can view their promoter relation"
ON public.ak_promoter_relations
FOR SELECT
TO authenticated
USING (uid = auth.uid() OR inviter_uid = auth.uid());
