Review a database connection-pool lifecycle

src/database-driver.tsTypeScript
@@ -0,0 +1,20 @@
1+export interface QueryResult {
2+ rowCount: number;
3+}
4+
5+export interface DatabaseClient {
6+ query(sql: string): Promise<QueryResult>;
7+ release(): void;
8+}
9+
10+export interface DatabasePool {
11+ query(sql: string): Promise<QueryResult>;
12+ connect(): Promise<DatabaseClient>;
13+ end(): Promise<void>;
14+}
15+
16+export interface PoolFactory {
17+ create(): Promise<DatabasePool>;
18+}
19+
20+export type TransactionWork<T> = (client: DatabaseClient) => Promise<T>;