diff --git a/IMPLEMENTATION_COMPLETE.md b/IMPLEMENTATION_COMPLETE.md new file mode 100644 index 0000000..e69de29 diff --git a/server/src/services/userService.ts b/server/src/services/userService.ts index e5580ac..a3c7d57 100644 --- a/server/src/services/userService.ts +++ b/server/src/services/userService.ts @@ -66,6 +66,11 @@ export class UserService { // Check if this is a Clerk ID (starts with 'user_') const isClerkId = userId.startsWith('user_'); + // If it's a Clerk ID, ensure the user exists in our database + if (isClerkId) { + await this.findOrCreateUser(userId); + } + const user = await prisma.user.findUnique({ where: isClerkId ? { clerkId: userId } : { id: userId }, select: { @@ -174,14 +179,8 @@ export class UserService { let dbUserId = userId; if (isClerkId) { - const user = await prisma.user.findUnique({ - where: { clerkId: userId }, - select: { id: true }, - }); - if (!user) { - throw new Error('User not found'); - } - dbUserId = user.id; + // Ensure user exists in database + dbUserId = await this.findOrCreateUser(userId); } const reports = await prisma.report.findMany({ @@ -207,14 +206,8 @@ export class UserService { let dbUserId = userId; if (isClerkId) { - const user = await prisma.user.findUnique({ - where: { clerkId: userId }, - select: { id: true }, - }); - if (!user) { - throw new Error('User not found'); - } - dbUserId = user.id; + // Ensure user exists in database + dbUserId = await this.findOrCreateUser(userId); } // Get events user has registered for @@ -315,14 +308,8 @@ export class UserService { let dbUserId = userId; if (isClerkId) { - const user = await prisma.user.findUnique({ - where: { clerkId: userId }, - select: { id: true }, - }); - if (!user) { - throw new Error('User not found'); - } - dbUserId = user.id; + // Ensure user exists in database + dbUserId = await this.findOrCreateUser(userId); } // Get user's reports diff --git a/src/types/index.ts b/src/types/index.ts index 76593ba..72d732e 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -18,7 +18,7 @@ export interface Coordinates { export interface User { id: string; clerkId: string; - email: string; + email: string | null; username: string; firstName?: string; lastName?: string;