diff --git a/src/index.ts b/src/index.ts index 27ea14f..d6ce1b8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -44,7 +44,14 @@ const app = new Elysia() ) // Error handler - .onError(({ code, error, set }) => { + .onError(({ code, error, set, path }) => { + // Always log errors with full details + console.error(`[${new Date().toISOString()}] ERROR on ${path}:`, { + code, + message: error.message, + stack: error.stack, + }); + if (code === 'VALIDATION') { set.status = 400; return { error: 'Validation error', details: error.message }; @@ -60,9 +67,8 @@ const app = new Elysia() return { error: error.message }; } - console.error('Error:', error); set.status = 500; - return { error: 'Internal server error' }; + return { error: 'Internal server error', details: error.message }; }) .listen(process.env.PORT || 3000); diff --git a/src/routes/emails.ts b/src/routes/emails.ts index 240675f..4679a8b 100644 --- a/src/routes/emails.ts +++ b/src/routes/emails.ts @@ -27,17 +27,33 @@ export const emailRoutes = new Elysia({ prefix: '/emails' }) } // Generate email content - const content = await generateEmail({ - advisorName: user.name, - clientName: client.firstName, - interests: client.interests || [], - notes: client.notes || '', - purpose: body.purpose, - provider: body.provider, - }); + console.log(`[${new Date().toISOString()}] Generating email for client ${client.firstName}, purpose: ${body.purpose}`); + let content: string; + let subject: string; + + try { + content = await generateEmail({ + advisorName: user.name, + clientName: client.firstName, + interests: client.interests || [], + notes: client.notes || '', + purpose: body.purpose, + provider: body.provider, + }); + console.log(`[${new Date().toISOString()}] Email content generated successfully`); + } catch (e) { + console.error(`[${new Date().toISOString()}] Failed to generate email content:`, e); + throw e; + } // Generate subject - const subject = await generateSubject(body.purpose, client.firstName, body.provider); + try { + subject = await generateSubject(body.purpose, client.firstName, body.provider); + console.log(`[${new Date().toISOString()}] Email subject generated successfully`); + } catch (e) { + console.error(`[${new Date().toISOString()}] Failed to generate subject:`, e); + throw e; + } // Save as draft const [communication] = await db.insert(communications)