Files
Jyotisha/frontend/supabase/migrations/20260718100000_repair_missing_chart_profiles.sql
T
2026-07-19 14:46:57 +08:00

57 lines
2.0 KiB
PL/PgSQL

begin;
create table if not exists public.chart_profiles (
id uuid primary key default gen_random_uuid(),
user_id uuid not null references auth.users(id) on delete cascade,
role text not null default 'other' check (role in ('self', 'other')),
profile jsonb not null check (jsonb_typeof(profile) = 'object'),
created_at timestamptz not null default now(),
updated_at timestamptz not null default now()
);
create index if not exists chart_profiles_user_updated_at_idx
on public.chart_profiles (user_id, updated_at desc);
create unique index if not exists chart_profiles_one_self_per_user_idx
on public.chart_profiles (user_id)
where role = 'self';
alter table public.chart_profiles enable row level security;
drop policy if exists chart_profiles_select_own on public.chart_profiles;
create policy chart_profiles_select_own
on public.chart_profiles
for select
to authenticated
using ((select auth.uid()) = user_id);
drop policy if exists chart_profiles_insert_own on public.chart_profiles;
create policy chart_profiles_insert_own
on public.chart_profiles
for insert
to authenticated
with check ((select auth.uid()) = user_id);
drop policy if exists chart_profiles_update_own on public.chart_profiles;
create policy chart_profiles_update_own
on public.chart_profiles
for update
to authenticated
using ((select auth.uid()) = user_id)
with check ((select auth.uid()) = user_id);
drop policy if exists chart_profiles_delete_own on public.chart_profiles;
create policy chart_profiles_delete_own
on public.chart_profiles
for delete
to authenticated
using ((select auth.uid()) = user_id);
revoke all on table public.chart_profiles from anon, authenticated, service_role;
grant select on table public.chart_profiles to authenticated;
grant insert (id, user_id, role, profile, updated_at) on table public.chart_profiles to authenticated;
grant update (role, profile, updated_at) on table public.chart_profiles to authenticated;
grant delete on table public.chart_profiles to authenticated;
commit;