diff --git a/src/services/userPointsService.ts b/src/services/userPointsService.ts index 8725b4c..bd2c035 100644 --- a/src/services/userPointsService.ts +++ b/src/services/userPointsService.ts @@ -41,24 +41,44 @@ export async function ensureUserExists(userId: string, email: string, name?: str // Fallback to direct insert try { - const { data: insertData, error: insertError } = await supabaseAdmin + // First check if the user already exists + const { data: existingUser, error: checkError } = await supabaseAdmin .from('users') - .insert({ - id: userId, - email: email, - name: name || null, - first_login: new Date().toISOString(), - last_login: new Date().toISOString() - }) - .onConflict('id') - .merge({ last_login: new Date().toISOString() }); + .select('id') + .eq('id', userId) + .maybeSingle(); - if (insertError) { - console.error('Error inserting user:', insertError); - return null; + if (!checkError && existingUser) { + // User exists, update last_login + const { error: updateError } = await supabaseAdmin + .from('users') + .update({ last_login: new Date().toISOString() }) + .eq('id', userId); + + if (updateError) { + console.warn('Error updating user last_login:', updateError); + } + + return userId; + } else { + // User doesn't exist, insert new user + const { data: insertData, error: insertError } = await supabaseAdmin + .from('users') + .insert({ + id: userId, + email: email, + name: name || null, + first_login: new Date().toISOString(), + last_login: new Date().toISOString() + }); + + if (insertError) { + console.error('Error inserting user:', insertError); + return null; + } + + return userId; } - - return userId; } catch (err) { console.error('Error in fallback user creation:', err); return null;