admin模块接入数据库
This commit is contained in:
41
docs/sql/10_schema/distribution/ak_promoter_relations_v1.sql
Normal file
41
docs/sql/10_schema/distribution/ak_promoter_relations_v1.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
-- 推广员关系表:记录下级与上级(邀请人)的绑定关系
|
||||
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());
|
||||
Reference in New Issue
Block a user