VidSimplify / fix_columns_and_trigger.sql
Adityahulk
Restoring repo state for deployment
6fc3143
raw
history blame
1.68 kB
-- 1. Add missing columns if they don't exist
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'full_name') THEN
ALTER TABLE public.users ADD COLUMN full_name text;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'avatar_url') THEN
ALTER TABLE public.users ADD COLUMN avatar_url text;
END IF;
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE table_name = 'users' AND column_name = 'credits') THEN
ALTER TABLE public.users ADD COLUMN credits integer default 5;
END IF;
END $$;
-- 2. Create the Trigger Function (Updated to be safe)
create or replace function public.handle_new_user()
returns trigger as $$
begin
insert into public.users (id, email, full_name, avatar_url, credits)
values (
new.id,
new.email,
new.raw_user_meta_data->>'full_name',
new.raw_user_meta_data->>'avatar_url',
5
)
ON CONFLICT (id) DO UPDATE SET
email = EXCLUDED.email,
full_name = EXCLUDED.full_name,
avatar_url = EXCLUDED.avatar_url;
return new;
end;
$$ language plpgsql security definer;
-- 3. Create the Trigger
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 procedure public.handle_new_user();
-- 4. Backfill existing users
insert into public.users (id, email, full_name, avatar_url, credits)
select
id,
email,
raw_user_meta_data->>'full_name',
raw_user_meta_data->>'avatar_url',
5
from auth.users
where id not in (select id from public.users);