diff --git a/packages/db/DittoDatabase.ts b/packages/db/DittoDatabase.ts index e43356a0..ebe97cec 100644 --- a/packages/db/DittoDatabase.ts +++ b/packages/db/DittoDatabase.ts @@ -2,7 +2,7 @@ import type { Kysely } from 'kysely'; import type { DittoTables } from './DittoTables.ts'; -export interface DittoDatabase { +export interface DittoDatabase extends AsyncDisposable { readonly kysely: Kysely; readonly poolSize: number; readonly availableConnections: number; diff --git a/packages/db/adapters/DittoPglite.ts b/packages/db/adapters/DittoPglite.ts index 2e7ca3fc..5e7e6ca4 100644 --- a/packages/db/adapters/DittoPglite.ts +++ b/packages/db/adapters/DittoPglite.ts @@ -36,6 +36,10 @@ export class DittoPglite { poolSize: 1, availableConnections: 1, listen, + [Symbol.asyncDispose]: async () => { + await pglite.close(); + await kysely.destroy(); + }, }; } } diff --git a/packages/db/adapters/DittoPostgres.ts b/packages/db/adapters/DittoPostgres.ts index 9ab8156f..d1b0db6c 100644 --- a/packages/db/adapters/DittoPostgres.ts +++ b/packages/db/adapters/DittoPostgres.ts @@ -54,6 +54,7 @@ export class DittoPostgres { return pg.connections.idle; }, listen, + [Symbol.asyncDispose]: () => kysely.destroy(), }; } }