Skip to content

Commit

Permalink
feat: add drizzle into the singleton only in dev to persist db connec…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
ixartz committed Sep 15, 2024
1 parent 12c25c9 commit aefe3d8
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/libs/DB.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import path from 'node:path';
import { PGlite } from '@electric-sql/pglite';
import { drizzle as drizzlePg } from 'drizzle-orm/node-postgres';
import { migrate as migratePg } from 'drizzle-orm/node-postgres/migrator';
import { drizzle as drizzlePglite } from 'drizzle-orm/pglite';
import { drizzle as drizzlePglite, type PgliteDatabase } from 'drizzle-orm/pglite';
import { migrate as migratePglite } from 'drizzle-orm/pglite/migrator';
import { PHASE_PRODUCTION_BUILD } from 'next/dist/shared/lib/constants';
import { Client } from 'pg';
Expand All @@ -26,15 +26,17 @@ if (process.env.NEXT_PHASE !== PHASE_PRODUCTION_BUILD && Env.DATABASE_URL) {
migrationsFolder: path.join(process.cwd(), 'migrations'),
});
} else {
const global = globalThis as unknown as { client: PGlite };
const global = globalThis as unknown as { client: PGlite; drizzle: PgliteDatabase<typeof schema> };

if (!global.client) {
global.client = new PGlite();
await global.client.waitReady;

global.drizzle = drizzlePglite(global.client, { schema });
}

drizzle = drizzlePglite(global.client, { schema });
await migratePglite(drizzle, {
drizzle = global.drizzle;
await migratePglite(global.drizzle, {
migrationsFolder: path.join(process.cwd(), 'migrations'),
});
}
Expand Down

0 comments on commit aefe3d8

Please sign in to comment.