Merge pull request #413 from buster-so/dal/auth-public-user-sync

migration for auth public user sync
This commit is contained in:
dal 2025-07-03 16:04:26 -07:00 committed by GitHub
commit 2e476351dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 6218 additions and 0 deletions

View File

@ -0,0 +1,46 @@
-- Custom SQL migration file, put your code below! --
-- Backfill existing users' avatar_url and name from auth.users to public.users
UPDATE public.users
SET
avatar_url = COALESCE(auth.users.raw_user_meta_data->>'avatar_url', public.users.avatar_url),
name = COALESCE(auth.users.raw_user_meta_data->>'full_name', public.users.name)
FROM auth.users
WHERE public.users.id = auth.users.id
AND (auth.users.raw_user_meta_data->>'avatar_url' IS NOT NULL OR auth.users.raw_user_meta_data->>'full_name' IS NOT NULL);
-- Create trigger function for public.users to set avatar_url and name on insert
CREATE OR REPLACE FUNCTION set_avatar_url_and_name_from_auth()
RETURNS TRIGGER AS $$
BEGIN
SELECT raw_user_meta_data->>'avatar_url', raw_user_meta_data->>'full_name'
INTO NEW.avatar_url, NEW.name
FROM auth.users
WHERE auth.users.id = NEW.id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
-- Create trigger on public.users before insert
CREATE TRIGGER set_avatar_url_and_name_trigger
BEFORE INSERT ON public.users
FOR EACH ROW
EXECUTE FUNCTION set_avatar_url_and_name_from_auth();
-- Create trigger function for auth.users to update public.users on insert
CREATE OR REPLACE FUNCTION update_public_users_avatar_url_and_name()
RETURNS TRIGGER AS $$
BEGIN
UPDATE public.users
SET
avatar_url = NEW.raw_user_meta_data->>'avatar_url',
name = NEW.raw_user_meta_data->>'full_name'
WHERE public.users.id = NEW.id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
-- Create trigger on auth.users after insert
CREATE TRIGGER update_avatar_url_and_name_on_auth_insert
AFTER INSERT ON auth.users
FOR EACH ROW
EXECUTE FUNCTION update_public_users_avatar_url_and_name();

File diff suppressed because it is too large Load Diff

View File

@ -519,6 +519,13 @@
"when": 1751577399834,
"tag": "0073_lovely_white_tiger",
"breakpoints": true
},
{
"idx": 74,
"version": "7",
"when": 1751583567208,
"tag": "0074_absurd_maddog",
"breakpoints": true
}
]
}

View File

@ -25,6 +25,7 @@
"build:commonjs:watch": "npm run build:commonjs && tsc --module commonjs --moduleResolution node --watch",
"db:check": "drizzle-kit check",
"db:generate": "drizzle-kit generate",
"db:generate:custom": "drizzle-kit generate --custom",
"db:introspect": "drizzle-kit introspect",
"db:migrate": "drizzle-kit migrate",
"db:pull": "drizzle-kit pull",