import { FExecutionContext } from "../execution_context/f_execution_context.js"; import { FSqlConnection } from "./f_sql_connection.js"; export interface FSqlConnectionFactory { create(executionContext: FExecutionContext): Promise; usingConnection( executionContext: FExecutionContext, worker: FSqlConnectionFactory.Worker, ): Promise; usingConnectionWithTransaction( executionContext: FExecutionContext, worker: FSqlConnectionFactory.Worker, ): Promise; } export namespace FSqlConnectionFactory { export type WorkerWithExecutionContext = (executionContext: FExecutionContext, sqlConnection: FSqlConnection) => T | Promise; export type WorkerWithoutExecutionContext = (sqlConnection: FSqlConnection) => T | Promise; export type Worker = WorkerWithExecutionContext | WorkerWithoutExecutionContext; }