Skip to content

Commit

Permalink
Adjusted transaction typing in Dumbo to include DBClient type
Browse files Browse the repository at this point in the history
Thanks to that, transaction's connection will be correctly resolved
  • Loading branch information
oskardudycz committed Aug 8, 2024
1 parent b6bd618 commit c94f3f8
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
4 changes: 3 additions & 1 deletion src/packages/dumbo/src/core/connections/connection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ export type CreateConnectionOptions<
close: (client: DbClient) => Promise<void>;
initTransaction: (
connection: () => ConnectionType,
) => (client: Promise<DbClient>) => DatabaseTransaction<ConnectorType>;
) => (
client: Promise<DbClient>,
) => DatabaseTransaction<ConnectorType, DbClient>;
executor: () => Executor;
};

Expand Down
14 changes: 8 additions & 6 deletions src/packages/dumbo/src/core/connections/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,13 @@ export interface DatabaseTransaction<

export interface DatabaseTransactionFactory<
ConnectorType extends string = string,
DbClient = unknown,
> {
transaction: () => DatabaseTransaction<ConnectorType>;
transaction: () => DatabaseTransaction<ConnectorType, DbClient>;

withTransaction: <Result = never>(
handle: (
transaction: DatabaseTransaction<ConnectorType>,
transaction: DatabaseTransaction<ConnectorType, DbClient>,
) => Promise<TransactionResult<Result> | Result>,
) => Promise<Result>;
}
Expand All @@ -38,11 +39,12 @@ const toTransactionResult = <Result>(

export const executeInTransaction = async <
ConnectorType extends string = string,
DbClient = unknown,
Result = void,
>(
transaction: DatabaseTransaction<ConnectorType>,
transaction: DatabaseTransaction<ConnectorType, DbClient>,
handle: (
transaction: DatabaseTransaction<ConnectorType>,
transaction: DatabaseTransaction<ConnectorType, DbClient>,
) => Promise<TransactionResult<Result> | Result>,
): Promise<Result> => {
await transaction.begin();
Expand All @@ -67,8 +69,8 @@ export const transactionFactoryWithDbClient = <
connect: () => Promise<DbClient>,
initTransaction: (
client: Promise<DbClient>,
) => DatabaseTransaction<ConnectorType>,
): DatabaseTransactionFactory<ConnectorType> => ({
) => DatabaseTransaction<ConnectorType, DbClient>,
): DatabaseTransactionFactory<ConnectorType, DbClient> => ({
transaction: () => initTransaction(connect()),
withTransaction: (handle) =>
executeInTransaction(initTransaction(connect()), handle),
Expand Down
2 changes: 2 additions & 0 deletions src/packages/dumbo/src/postgres/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export * from './core';
export * from './pg';
import {
type NodePostgresConnection,
type NodePostgresConnector,
type NodePostgresPool,
type NodePostgresPoolOptions,
Expand All @@ -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;

0 comments on commit c94f3f8

Please sign in to comment.