diff --git a/src/app/api/webhook/user-created/route.ts b/src/app/api/webhook/user-created/route.ts index 9c1bd60..9212a46 100644 --- a/src/app/api/webhook/user-created/route.ts +++ b/src/app/api/webhook/user-created/route.ts @@ -2,7 +2,7 @@ import { Webhook } from 'svix' import { headers } from 'next/headers' import { WebhookEvent } from '@clerk/nextjs/server' import { InsertUser } from '@/src/db/schema' -import { CreateUser } from '@/src/db/data-access/user/query' +import { CreateUser, SelectUserByEmail, SelectUserById } from '@/src/db/data-access/user/query' export async function POST(req: Request) { @@ -59,6 +59,14 @@ export async function POST(req: Request) { if (evt.type === 'user.created') { const userObj = evt.data + + const userById = await SelectUserById(userObj.id) + const userByEmail = await SelectUserByEmail(userObj.email_addresses[0].email_address) + + if (userById || userByEmail) { + return new Response('', { status: 200 }) + } + const newUser:InsertUser ={ first_name: userObj.first_name || '', last_name: userObj.last_name || '', diff --git a/src/db/data-access/user/query.ts b/src/db/data-access/user/query.ts index b539c34..29d8909 100644 --- a/src/db/data-access/user/query.ts +++ b/src/db/data-access/user/query.ts @@ -10,4 +10,11 @@ export async function SelectUserById(id: string) { return await db.query.usersTable.findFirst({ where: eq(usersTable.external_auth_id, id) }); -} \ No newline at end of file +} + +export async function SelectUserByEmail(email: string) { + return await db.query.usersTable.findFirst({ + where: eq(usersTable.email, email) + }); +} +