feat: 数据结构说明文档
This commit is contained in:
52
doc/supabase.sql
Normal file
52
doc/supabase.sql
Normal file
@@ -0,0 +1,52 @@
|
||||
-- 建表
|
||||
create table public.user_configs (
|
||||
id bigint generated by default as identity not null,
|
||||
created_at timestamp with time zone not null default now(),
|
||||
data json null,
|
||||
updated_at text null,
|
||||
user_id uuid not null,
|
||||
constraint user_configs_pkey primary key (id),
|
||||
constraint user_configs_user_id_key unique (user_id)
|
||||
) TABLESPACE pg_default;
|
||||
|
||||
-- 启用行级安全(RLS)
|
||||
alter table public.user_configs enable row level security;
|
||||
|
||||
drop policy if exists "user_configs_select_own" on public.user_configs;
|
||||
drop policy if exists "user_configs_insert_own" on public.user_configs;
|
||||
drop policy if exists "user_configs_update_own" on public.user_configs;
|
||||
|
||||
create policy "user_configs_select_own"
|
||||
on public.user_configs
|
||||
for select
|
||||
using (auth.uid() = user_id);
|
||||
|
||||
create policy "user_configs_insert_own"
|
||||
on public.user_configs
|
||||
for insert
|
||||
with check (auth.uid() = user_id);
|
||||
|
||||
create policy "user_configs_update_own"
|
||||
on public.user_configs
|
||||
for update
|
||||
using (auth.uid() = user_id)
|
||||
with check (auth.uid() = user_id);
|
||||
|
||||
-- 增量更新函数
|
||||
create or replace function public.update_user_config_partial(payload jsonb)
|
||||
returns void
|
||||
language plpgsql
|
||||
security definer
|
||||
set search_path = public
|
||||
as
|
||||
$$
|
||||
begin
|
||||
update public.user_configs
|
||||
set data = ((coalesce(data::jsonb, '{}'::jsonb) || payload)::json),
|
||||
updated_at = now()
|
||||
where user_id = auth.uid();
|
||||
end;
|
||||
$$;
|
||||
|
||||
grant execute on function public.update_user_config_partial(jsonb) to authenticated;
|
||||
grant execute on function public.update_user_config_partial(jsonb) to service_role;
|
||||
Reference in New Issue
Block a user