From c94f3f89e313e881a4686201a83806e92b16d823 Mon Sep 17 00:00:00 2001 From: Oskar Dudycz Date: Thu, 8 Aug 2024 10:28:27 +0200 Subject: [PATCH] Adjusted transaction typing in Dumbo to include DBClient type Thanks to that, transaction's connection will be correctly resolved --- .../dumbo/src/core/connections/connection.ts | 4 +++- .../dumbo/src/core/connections/transaction.ts | 14 ++++++++------ src/packages/dumbo/src/postgres/index.ts | 2 ++ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/packages/dumbo/src/core/connections/connection.ts b/src/packages/dumbo/src/core/connections/connection.ts index c4021e7..b198daf 100644 --- a/src/packages/dumbo/src/core/connections/connection.ts +++ b/src/packages/dumbo/src/core/connections/connection.ts @@ -43,7 +43,9 @@ export type CreateConnectionOptions< close: (client: DbClient) => Promise; initTransaction: ( connection: () => ConnectionType, - ) => (client: Promise) => DatabaseTransaction; + ) => ( + client: Promise, + ) => DatabaseTransaction; executor: () => Executor; }; diff --git a/src/packages/dumbo/src/core/connections/transaction.ts b/src/packages/dumbo/src/core/connections/transaction.ts index 758af1c..e69e550 100644 --- a/src/packages/dumbo/src/core/connections/transaction.ts +++ b/src/packages/dumbo/src/core/connections/transaction.ts @@ -14,12 +14,13 @@ export interface DatabaseTransaction< export interface DatabaseTransactionFactory< ConnectorType extends string = string, + DbClient = unknown, > { - transaction: () => DatabaseTransaction; + transaction: () => DatabaseTransaction; withTransaction: ( handle: ( - transaction: DatabaseTransaction, + transaction: DatabaseTransaction, ) => Promise | Result>, ) => Promise; } @@ -38,11 +39,12 @@ const toTransactionResult = ( export const executeInTransaction = async < ConnectorType extends string = string, + DbClient = unknown, Result = void, >( - transaction: DatabaseTransaction, + transaction: DatabaseTransaction, handle: ( - transaction: DatabaseTransaction, + transaction: DatabaseTransaction, ) => Promise | Result>, ): Promise => { await transaction.begin(); @@ -67,8 +69,8 @@ export const transactionFactoryWithDbClient = < connect: () => Promise, initTransaction: ( client: Promise, - ) => DatabaseTransaction, -): DatabaseTransactionFactory => ({ + ) => DatabaseTransaction, +): DatabaseTransactionFactory => ({ transaction: () => initTransaction(connect()), withTransaction: (handle) => executeInTransaction(initTransaction(connect()), handle), diff --git a/src/packages/dumbo/src/postgres/index.ts b/src/packages/dumbo/src/postgres/index.ts index 6c1dbdf..2b5fbf4 100644 --- a/src/packages/dumbo/src/postgres/index.ts +++ b/src/packages/dumbo/src/postgres/index.ts @@ -1,6 +1,7 @@ export * from './core'; export * from './pg'; import { + type NodePostgresConnection, type NodePostgresConnector, type NodePostgresPool, type NodePostgresPoolOptions, @@ -10,4 +11,5 @@ import { export type PostgresConnector = NodePostgresConnector; export type PostgresPoolOptions = NodePostgresPoolOptions; export type PostgresPool = NodePostgresPool; +export type PostgresConnection = NodePostgresConnection; export const postgresPool = nodePostgresPool;