-- 1) Tabela profiles create table if not exists public.profiles ( id uuid primary key references auth.users(id) on delete cascade, role text not null default 'patient' check (role in ('admin','therapist','patient')), full_name text, created_at timestamptz not null default now(), updated_at timestamptz not null default now() ); -- 2) updated_at automático create or replace function public.set_updated_at() returns trigger language plpgsql as $$ begin new.updated_at = now(); return new; end; $$; drop trigger if exists trg_profiles_updated_at on public.profiles; create trigger trg_profiles_updated_at before update on public.profiles for each row execute function public.set_updated_at(); -- 3) Trigger: cria profile automaticamente quando usuário nasce no auth create or replace function public.handle_new_user() returns trigger language plpgsql security definer set search_path = public as $$ begin insert into public.profiles (id, role) values (new.id, 'patient') on conflict (id) do nothing; return new; end; $$; drop trigger if exists on_auth_user_created on auth.users; create trigger on_auth_user_created after insert on auth.users for each row execute function public.handle_new_user();