| import type { Database } from "@midday/db/client"; | |
| import { getWorkerDb } from "@midday/db/worker-client"; | |
| import { createLoggerWithContext } from "@midday/logger"; | |
| const logger = createLoggerWithContext("worker:db"); | |
| /** | |
| * Get database instance for worker jobs | |
| * Uses a shared connection pool optimized for BullMQ concurrent job processing | |
| * This is appropriate for a stateful server handling many concurrent jobs | |
| */ | |
| let dbInstance: Database | null = null; | |
| /** | |
| * Get database instance with reconnection handling | |
| */ | |
| export function getDb(): Database { | |
| if (!dbInstance) { | |
| try { | |
| dbInstance = getWorkerDb(); | |
| } catch (error) { | |
| // If connection fails, log and rethrow | |
| logger.error("Failed to initialize database connection", { | |
| error: error instanceof Error ? error.message : String(error), | |
| }); | |
| throw error; | |
| } | |
| } | |
| return dbInstance; | |
| } | |