diff --git a/lib/actions/chat.ts b/lib/actions/chat.ts index f36f2cf6..55e9a178 100644 --- a/lib/actions/chat.ts +++ b/lib/actions/chat.ts @@ -153,6 +153,7 @@ export async function saveSystemPrompt( ): Promise<{ success?: boolean; error?: string }> { if (!userId) return { error: 'User ID is required' } if (!prompt) return { error: 'Prompt is required' } + if (!db) return { error: 'Database is not available' } try { await db.update(users) @@ -170,6 +171,10 @@ export async function getSystemPrompt( userId: string ): Promise { if (!userId) return null + if (!db) { + console.error('getSystemPrompt: Database is not available') + return null + } try { const result = await db.select({ systemPrompt: users.systemPrompt }) diff --git a/lib/db/index.ts b/lib/db/index.ts index 0283d9a3..dad6aad7 100644 --- a/lib/db/index.ts +++ b/lib/db/index.ts @@ -5,21 +5,28 @@ import * as schema from './schema'; dotenv.config({ path: '.env.local' }); -if (!process.env.DATABASE_URL) { - throw new Error('DATABASE_URL environment variable is not set for Drizzle client'); -} +let db: ReturnType> | null = null; -const poolConfig: PoolConfig = { - connectionString: process.env.DATABASE_URL, -}; +try { + if (!process.env.DATABASE_URL) { + console.error('DATABASE_URL environment variable is not set for Drizzle client'); + } else { + const poolConfig: PoolConfig = { + connectionString: process.env.DATABASE_URL, + }; -// Conditionally apply SSL for Supabase URLs -if (process.env.DATABASE_URL && process.env.DATABASE_URL.includes('supabase.co')) { - poolConfig.ssl = { - rejectUnauthorized: false, - }; -} + // Conditionally apply SSL for Supabase URLs + if (process.env.DATABASE_URL.includes('supabase.co')) { + poolConfig.ssl = { + rejectUnauthorized: false, + }; + } -const pool = new Pool(poolConfig); + const pool = new Pool(poolConfig); + db = drizzle(pool, { schema, logger: process.env.NODE_ENV === 'development' }); + } +} catch (error) { + console.error('Failed to initialize database connection:', error); +} -export const db = drizzle(pool, { schema, logger: process.env.NODE_ENV === 'development' }); +export { db };