feat: 数据结构说明文档

This commit is contained in:
hzm
2026-02-19 21:37:56 +08:00
parent b645c7d034
commit 5ed13ab42c
4 changed files with 379 additions and 4 deletions

52
doc/supabase.sql Normal file
View 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;