diff --git a/src/app/api/auth/signin/route.ts b/src/app/api/auth/signin/route.ts index 68ead11..c9dd61d 100644 --- a/src/app/api/auth/signin/route.ts +++ b/src/app/api/auth/signin/route.ts @@ -11,8 +11,8 @@ export async function POST(request: Request) { } try { - // Find user - use parameterized query - const users = await sql` + // Find or create user + let users = await sql` SELECT u.id, u.email, fm.family_id as family_id FROM users u LEFT JOIN family_members fm ON fm.user_id = u.id @@ -20,10 +20,27 @@ export async function POST(request: Request) { LIMIT 1 `; - const user = users?.[0]; + let user = users?.[0]; + + // Create user if not found + if (!user) { + const newUserId = crypto.randomUUID(); + await sql` + INSERT INTO users (id, email, created_at, updated_at) + VALUES (${newUserId}, ${email}, NOW(), NOW()) + `; + + // Fetch the newly created user + users = await sql` + SELECT u.id, u.email + FROM users u + WHERE u.id = ${newUserId} + `; + user = users?.[0]; + } if (!user) { - return NextResponse.json({ error: "User not found" }, { status: 404 }); + return NextResponse.json({ error: "Failed to create user" }, { status: 500 }); } // Create session token