@simplysm/orm-node 13.0.44 → 13.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/connections/mssql-db-conn.d.ts +3 -3
- package/dist/connections/mssql-db-conn.d.ts.map +1 -1
- package/dist/connections/mssql-db-conn.js +6 -6
- package/dist/connections/mssql-db-conn.js.map +1 -1
- package/dist/connections/mysql-db-conn.d.ts +3 -3
- package/dist/connections/mysql-db-conn.d.ts.map +1 -1
- package/dist/connections/mysql-db-conn.js +6 -6
- package/dist/connections/mysql-db-conn.js.map +1 -1
- package/dist/connections/postgresql-db-conn.d.ts +5 -6
- package/dist/connections/postgresql-db-conn.d.ts.map +1 -1
- package/dist/connections/postgresql-db-conn.js +9 -9
- package/dist/connections/postgresql-db-conn.js.map +1 -1
- package/dist/create-db-conn.js +1 -1
- package/dist/create-db-conn.js.map +1 -1
- package/dist/node-db-context-executor.d.ts +1 -1
- package/dist/node-db-context-executor.d.ts.map +1 -1
- package/dist/node-db-context-executor.js +1 -4
- package/dist/node-db-context-executor.js.map +1 -1
- package/dist/pooled-db-conn.d.ts +3 -3
- package/dist/pooled-db-conn.d.ts.map +1 -1
- package/dist/pooled-db-conn.js +4 -4
- package/dist/pooled-db-conn.js.map +1 -1
- package/dist/types/db-conn.d.ts +3 -3
- package/dist/types/db-conn.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/connections/mssql-db-conn.ts +13 -10
- package/src/connections/mysql-db-conn.ts +15 -11
- package/src/connections/postgresql-db-conn.ts +20 -12
- package/src/create-db-conn.ts +1 -1
- package/src/node-db-context-executor.ts +5 -5
- package/src/pooled-db-conn.ts +9 -6
- package/src/types/db-conn.ts +3 -3
package/README.md
CHANGED
|
@@ -225,7 +225,7 @@ try {
|
|
|
225
225
|
await conn.execute(["INSERT INTO User (name) VALUES ('Jane Smith')"]);
|
|
226
226
|
await conn.commitTransaction();
|
|
227
227
|
} catch (err) {
|
|
228
|
-
if (conn.
|
|
228
|
+
if (conn.isInTransaction) {
|
|
229
229
|
await conn.rollbackTransaction();
|
|
230
230
|
}
|
|
231
231
|
throw err;
|
|
@@ -370,14 +370,14 @@ The common interface implemented by all DBMS-specific connection classes (`Mysql
|
|
|
370
370
|
|------------|----------|------|
|
|
371
371
|
| `config` | `DbConnConfig` | Connection config (read-only) |
|
|
372
372
|
| `isConnected` | `boolean` | Connection status |
|
|
373
|
-
| `
|
|
373
|
+
| `isInTransaction` | `boolean` | Transaction in progress |
|
|
374
374
|
| `connect()` | `() => Promise<void>` | Establish DB connection |
|
|
375
375
|
| `close()` | `() => Promise<void>` | Close DB connection (PooledDbConn returns to pool) |
|
|
376
376
|
| `beginTransaction()` | `(isolationLevel?: IsolationLevel) => Promise<void>` | Start transaction |
|
|
377
377
|
| `commitTransaction()` | `() => Promise<void>` | Commit transaction |
|
|
378
378
|
| `rollbackTransaction()` | `() => Promise<void>` | Rollback transaction |
|
|
379
|
-
| `execute()` | `(queries: string[]) => Promise<unknown[][]>` | Execute SQL query array |
|
|
380
|
-
| `executeParametrized()` | `(query: string, params?: unknown[]) => Promise<unknown[][]>` | Execute parameterized query |
|
|
379
|
+
| `execute()` | `(queries: string[]) => Promise<Record<string, unknown>[][]>` | Execute SQL query array |
|
|
380
|
+
| `executeParametrized()` | `(query: string, params?: unknown[]) => Promise<Record<string, unknown>[][]>` | Execute parameterized query |
|
|
381
381
|
| `bulkInsert()` | `(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]) => Promise<void>` | Native bulk INSERT |
|
|
382
382
|
|
|
383
383
|
`DbConn` extends `EventEmitter<{ close: void }>`, so you can listen for connection close events with `on("close", handler)` / `off("close", handler)`.
|
|
@@ -406,7 +406,7 @@ const executor = new NodeDbContextExecutor({
|
|
|
406
406
|
| `beginTransaction()` | `(isolationLevel?: IsolationLevel) => Promise<void>` | Begin a transaction |
|
|
407
407
|
| `commitTransaction()` | `() => Promise<void>` | Commit the current transaction |
|
|
408
408
|
| `rollbackTransaction()` | `() => Promise<void>` | Roll back the current transaction |
|
|
409
|
-
| `executeParametrized()` | `(query: string, params?: unknown[]) => Promise<unknown[][]>` | Execute a parameterized SQL query |
|
|
409
|
+
| `executeParametrized()` | `(query: string, params?: unknown[]) => Promise<Record<string, unknown>[][]>` | Execute a parameterized SQL query |
|
|
410
410
|
| `bulkInsert()` | `(tableName: string, columnMetas: Record<string, ColumnMeta>, records: DataRecord[]) => Promise<void>` | Delegate bulk insert to the underlying connection |
|
|
411
411
|
| `executeDefs()` | `(defs: QueryDef[], resultMetas?: (ResultMeta \| undefined)[]) => Promise<T[][]>` | Build SQL from `QueryDef` array, execute, and parse results using `ResultMeta` |
|
|
412
412
|
|
|
@@ -16,15 +16,15 @@ export declare class MssqlDbConn extends EventEmitter<{
|
|
|
16
16
|
private _connTimeout?;
|
|
17
17
|
private _requests;
|
|
18
18
|
isConnected: boolean;
|
|
19
|
-
|
|
19
|
+
isInTransaction: boolean;
|
|
20
20
|
constructor(_tedious: typeof import("tedious"), config: MssqlDbConnConfig);
|
|
21
21
|
connect(): Promise<void>;
|
|
22
22
|
close(): Promise<void>;
|
|
23
23
|
beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
24
24
|
commitTransaction(): Promise<void>;
|
|
25
25
|
rollbackTransaction(): Promise<void>;
|
|
26
|
-
execute(queries: string[]): Promise<unknown[][]>;
|
|
27
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
26
|
+
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
27
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
28
28
|
bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
|
|
29
29
|
private _assertConnected;
|
|
30
30
|
private _parseRowsToRecords;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mssql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mssql-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,YAAY,EAKb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAM1B;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAW5E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAXpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,KAAK,CAAC,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,SAAS,CAA6B;IAE9C,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,QAAQ,EAAE,cAAc,SAAS,CAAC,EAC1C,MAAM,EAAE,iBAAiB;IAK9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mssql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mssql-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,YAAY,EAKb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAM1B;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAW5E,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAXpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,KAAK,CAAC,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAgC;IACrD,OAAO,CAAC,SAAS,CAA6B;IAE9C,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,QAAQ,EAAE,cAAc,SAAS,CAAC,EAC1C,MAAM,EAAE,iBAAiB;IAK9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAUhE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IA+FjC,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAoDhB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,wCAAwC;IAqBhD,OAAO,CAAC,uCAAuC;IA4C/C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAmB1B"}
|
|
@@ -27,7 +27,7 @@ class MssqlDbConn extends EventEmitter {
|
|
|
27
27
|
_connTimeout;
|
|
28
28
|
_requests = [];
|
|
29
29
|
isConnected = false;
|
|
30
|
-
|
|
30
|
+
isInTransaction = false;
|
|
31
31
|
async connect() {
|
|
32
32
|
if (this.isConnected) {
|
|
33
33
|
throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);
|
|
@@ -73,7 +73,7 @@ class MssqlDbConn extends EventEmitter {
|
|
|
73
73
|
}
|
|
74
74
|
this._startTimeout();
|
|
75
75
|
this.isConnected = true;
|
|
76
|
-
this.
|
|
76
|
+
this.isInTransaction = false;
|
|
77
77
|
resolve();
|
|
78
78
|
});
|
|
79
79
|
});
|
|
@@ -105,7 +105,7 @@ class MssqlDbConn extends EventEmitter {
|
|
|
105
105
|
reject(new SdError(err));
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
|
-
this.
|
|
108
|
+
this.isInTransaction = true;
|
|
109
109
|
resolve();
|
|
110
110
|
},
|
|
111
111
|
"",
|
|
@@ -123,7 +123,7 @@ class MssqlDbConn extends EventEmitter {
|
|
|
123
123
|
reject(new SdError(err));
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
|
-
this.
|
|
126
|
+
this.isInTransaction = false;
|
|
127
127
|
resolve();
|
|
128
128
|
});
|
|
129
129
|
});
|
|
@@ -138,7 +138,7 @@ class MssqlDbConn extends EventEmitter {
|
|
|
138
138
|
reject(new SdError(err));
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
|
-
this.
|
|
141
|
+
this.isInTransaction = false;
|
|
142
142
|
resolve();
|
|
143
143
|
});
|
|
144
144
|
});
|
|
@@ -293,7 +293,7 @@ ${jsonStringify(records).substring(0, 1e4)}...
|
|
|
293
293
|
}
|
|
294
294
|
_resetState() {
|
|
295
295
|
this.isConnected = false;
|
|
296
|
-
this.
|
|
296
|
+
this.isInTransaction = false;
|
|
297
297
|
this._conn = void 0;
|
|
298
298
|
this._requests = [];
|
|
299
299
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/mssql-db-conn.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -16,15 +16,15 @@ export declare class MysqlDbConn extends EventEmitter<{
|
|
|
16
16
|
private _conn?;
|
|
17
17
|
private _connTimeout?;
|
|
18
18
|
isConnected: boolean;
|
|
19
|
-
|
|
19
|
+
isInTransaction: boolean;
|
|
20
20
|
constructor(_mysql2: typeof import("mysql2/promise"), config: MysqlDbConnConfig);
|
|
21
21
|
connect(): Promise<void>;
|
|
22
22
|
close(): Promise<void>;
|
|
23
23
|
beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
24
24
|
commitTransaction(): Promise<void>;
|
|
25
25
|
rollbackTransaction(): Promise<void>;
|
|
26
|
-
execute(queries: string[]): Promise<unknown[][]>;
|
|
27
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
26
|
+
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
27
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
28
28
|
bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
|
|
29
29
|
/**
|
|
30
30
|
* MySQL LOAD DATA INFILE용 값 이스케이프
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mysql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mysql-db-conn.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAI1B;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAW5E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAXpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAgC;IAErD,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,OAAO,EAAE,cAAc,gBAAgB,CAAC,EAChD,MAAM,EAAE,iBAAiB;IAK9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mysql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\mysql-db-conn.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAI1B;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAW5E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;IAXpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAgC;IAErD,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,OAAO,EAAE,cAAc,gBAAgB,CAAC,EAChD,MAAM,EAAE,iBAAiB;IAK9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAShE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IA4CjC,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAyDhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiDrB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -29,7 +29,7 @@ class MysqlDbConn extends EventEmitter {
|
|
|
29
29
|
_conn;
|
|
30
30
|
_connTimeout;
|
|
31
31
|
isConnected = false;
|
|
32
|
-
|
|
32
|
+
isInTransaction = false;
|
|
33
33
|
async connect() {
|
|
34
34
|
if (this.isConnected) {
|
|
35
35
|
throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);
|
|
@@ -75,17 +75,17 @@ class MysqlDbConn extends EventEmitter {
|
|
|
75
75
|
timeout: this._timeout
|
|
76
76
|
});
|
|
77
77
|
await conn.beginTransaction();
|
|
78
|
-
this.
|
|
78
|
+
this.isInTransaction = true;
|
|
79
79
|
}
|
|
80
80
|
async commitTransaction() {
|
|
81
81
|
const conn = this._assertConnected();
|
|
82
82
|
await conn.commit();
|
|
83
|
-
this.
|
|
83
|
+
this.isInTransaction = false;
|
|
84
84
|
}
|
|
85
85
|
async rollbackTransaction() {
|
|
86
86
|
const conn = this._assertConnected();
|
|
87
87
|
await conn.rollback();
|
|
88
|
-
this.
|
|
88
|
+
this.isInTransaction = false;
|
|
89
89
|
}
|
|
90
90
|
async execute(queries) {
|
|
91
91
|
const results = [];
|
|
@@ -183,7 +183,7 @@ class MysqlDbConn extends EventEmitter {
|
|
|
183
183
|
case "char":
|
|
184
184
|
case "text": {
|
|
185
185
|
const str = value;
|
|
186
|
-
return str.replace(/\\/g, "\\\\").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r");
|
|
186
|
+
return str.replace(/\\/g, "\\\\").replace(/\0/g, "\\0").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\r/g, "\\r");
|
|
187
187
|
}
|
|
188
188
|
case "datetime":
|
|
189
189
|
return value.toFormatString("yyyy-MM-dd HH:mm:ss.fff");
|
|
@@ -209,7 +209,7 @@ class MysqlDbConn extends EventEmitter {
|
|
|
209
209
|
}
|
|
210
210
|
_resetState() {
|
|
211
211
|
this.isConnected = false;
|
|
212
|
-
this.
|
|
212
|
+
this.isInTransaction = false;
|
|
213
213
|
this._conn = void 0;
|
|
214
214
|
}
|
|
215
215
|
_stopTimeout() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/mysql-db-conn.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,kBAAkB;AAC3B,OAAO,QAAQ;AACf,OAAO,QAAQ;AACf,OAAO,UAAU;AAEjB,OAAO,aAAa;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAEP,MAAM,SAAS,QAAQ,QAAQ,eAAe;AAOvC,MAAM,oBAAoB,aAAgD;AAAA,EAU/E,YACmB,SACR,QACT;AACA,UAAM;AAHW;AACR;AAAA,EAGX;AAAA,EAdA,OAAwB,aAAa;AAAA,EACpB,WAAW;AAAA,EAEpB;AAAA,EACA;AAAA,EAER,cAAc;AAAA,EACd,kBAAkB;AAAA,EASlB,MAAM,UAAyB;AAC7B,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,QAAQ,eAAe,iBAAiB;AAAA,IACpD;AAEA,UAAM,OAAO,MAAM,KAAK,QAAQ,iBAAiB;AAAA,MAC/C,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM,KAAK,OAAO;AAAA,MAClB,MAAM,KAAK,OAAO;AAAA,MAClB,UAAU,KAAK,OAAO;AAAA;AAAA;AAAA,MAGtB,UAAU,KAAK,OAAO,aAAa,YAAY,aAAa,SAAY,KAAK,OAAO;AAAA,MACpF,oBAAoB;AAAA,MACpB,SAAS;AAAA,MACT,qBAAqB,CAAC,aAAqB,GAAG,iBAAiB,QAAQ;AAAA;AAAA,IACzE,CAAwD;AAExD,SAAK,GAAG,OAAO,MAAM;AACnB,WAAK,KAAK,OAAO;AACjB,WAAK,YAAY;AAAA,IACnB,CAAC;AAED,SAAK,GAAG,SAAS,CAAC,UAAU;AAC1B,aAAO,MAAM,gCAAY,MAAM,OAAO;AAAA,IACxC,CAAC;AAED,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,cAAc;AAAA,EACrB;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,aAAa;AAElB,QAAI,KAAK,SAAS,QAAQ,CAAC,KAAK,aAAa;AAC3C;AAAA,IACF;AAEA,UAAM,KAAK,MAAM,IAAI;AAErB,SAAK,KAAK,OAAO;AACjB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,MAAM,iBAAiB,gBAAgD;AACrE,UAAM,OAAO,KAAK,iBAAiB;AAEnC,UAAM,SACJ,kBACA,KAAK,OAAO,yBACZ,oBACA,QAAQ,MAAM,GAAG;AAGnB,UAAM,KAAK,MAAM;AAAA,MACf,KAAK,2CAA2C,KAAK;AAAA,MACrD,SAAS,KAAK;AAAA,IAChB,CAAC;AAGD,UAAM,KAAK,iBAAiB;AAE5B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,oBAAmC;AACvC,UAAM,OAAO,KAAK,iBAAiB;AACnC,UAAM,KAAK,OAAO;AAClB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,iBAAiB;AACnC,UAAM,KAAK,SAAS;AACpB,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,MAAM,QAAQ,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "@simplysm/core-common";
|
|
2
2
|
import type { ColumnMeta, IsolationLevel } from "@simplysm/orm-common";
|
|
3
3
|
import { type DbConn, type PostgresqlDbConnConfig } from "../types/db-conn";
|
|
4
|
-
import type { CopyStreamQuery } from "pg-copy-streams";
|
|
5
4
|
/**
|
|
6
5
|
* PostgreSQL 데이터베이스 연결 클래스
|
|
7
6
|
*
|
|
@@ -11,21 +10,21 @@ export declare class PostgresqlDbConn extends EventEmitter<{
|
|
|
11
10
|
close: void;
|
|
12
11
|
}> implements DbConn {
|
|
13
12
|
private readonly _pg;
|
|
14
|
-
private readonly
|
|
13
|
+
private readonly _pgCopyStreams;
|
|
15
14
|
readonly config: PostgresqlDbConnConfig;
|
|
16
15
|
private readonly _timeout;
|
|
17
16
|
private _client?;
|
|
18
17
|
private _connTimeout?;
|
|
19
18
|
isConnected: boolean;
|
|
20
|
-
|
|
21
|
-
constructor(_pg: typeof import("pg"),
|
|
19
|
+
isInTransaction: boolean;
|
|
20
|
+
constructor(_pg: typeof import("pg"), _pgCopyStreams: typeof import("pg-copy-streams"), config: PostgresqlDbConnConfig);
|
|
22
21
|
connect(): Promise<void>;
|
|
23
22
|
close(): Promise<void>;
|
|
24
23
|
beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
25
24
|
commitTransaction(): Promise<void>;
|
|
26
25
|
rollbackTransaction(): Promise<void>;
|
|
27
|
-
execute(queries: string[]): Promise<unknown[][]>;
|
|
28
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
26
|
+
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
27
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
29
28
|
bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
|
|
30
29
|
/**
|
|
31
30
|
* PostgreSQL COPY CSV용 값 이스케이프
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgresql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\postgresql-db-conn.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"postgresql-db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\connections\\postgresql-db-conn.ts"],"names":[],"mappings":"AAEA,OAAO,EAKL,YAAY,EAIb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAY,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAK1B;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAUjF,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,sBAAsB;IAXzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,YAAY,CAAC,CAAgC;IAErD,WAAW,UAAS;IACpB,eAAe,UAAS;gBAGL,GAAG,EAAE,cAAc,IAAI,CAAC,EACxB,cAAc,EAAE,cAAc,iBAAiB,CAAC,EACxD,MAAM,EAAE,sBAAsB;IAKnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAehE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMpC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAShE,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAmBjC,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAsChB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqDrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;CAQtB"}
|
|
@@ -17,17 +17,17 @@ import {
|
|
|
17
17
|
} from "../types/db-conn.js";
|
|
18
18
|
const logger = consola.withTag("postgresql-db-conn");
|
|
19
19
|
class PostgresqlDbConn extends EventEmitter {
|
|
20
|
-
constructor(_pg,
|
|
20
|
+
constructor(_pg, _pgCopyStreams, config) {
|
|
21
21
|
super();
|
|
22
22
|
this._pg = _pg;
|
|
23
|
-
this.
|
|
23
|
+
this._pgCopyStreams = _pgCopyStreams;
|
|
24
24
|
this.config = config;
|
|
25
25
|
}
|
|
26
26
|
_timeout = DB_CONN_DEFAULT_TIMEOUT;
|
|
27
27
|
_client;
|
|
28
28
|
_connTimeout;
|
|
29
29
|
isConnected = false;
|
|
30
|
-
|
|
30
|
+
isInTransaction = false;
|
|
31
31
|
async connect() {
|
|
32
32
|
if (this.isConnected) {
|
|
33
33
|
throw new SdError(DB_CONN_ERRORS.ALREADY_CONNECTED);
|
|
@@ -67,17 +67,17 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
67
67
|
const level = (isolationLevel ?? this.config.defaultIsolationLevel ?? "READ_UNCOMMITTED").replace(/_/g, " ");
|
|
68
68
|
await this._client.query("BEGIN");
|
|
69
69
|
await this._client.query(`SET TRANSACTION ISOLATION LEVEL ${level}`);
|
|
70
|
-
this.
|
|
70
|
+
this.isInTransaction = true;
|
|
71
71
|
}
|
|
72
72
|
async commitTransaction() {
|
|
73
73
|
this._assertConnected();
|
|
74
74
|
await this._client.query("COMMIT");
|
|
75
|
-
this.
|
|
75
|
+
this.isInTransaction = false;
|
|
76
76
|
}
|
|
77
77
|
async rollbackTransaction() {
|
|
78
78
|
this._assertConnected();
|
|
79
79
|
await this._client.query("ROLLBACK");
|
|
80
|
-
this.
|
|
80
|
+
this.isInTransaction = false;
|
|
81
81
|
}
|
|
82
82
|
async execute(queries) {
|
|
83
83
|
const results = [];
|
|
@@ -106,7 +106,7 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
106
106
|
const colNames = Object.keys(columnMetas);
|
|
107
107
|
const wrappedCols = colNames.map((c) => `"${c}"`).join(", ");
|
|
108
108
|
const copyQuery = `COPY ${tableName} (${wrappedCols}) FROM STDIN WITH (FORMAT csv, NULL '\\N')`;
|
|
109
|
-
const stream = this._client.query(this.
|
|
109
|
+
const stream = this._client.query(this._pgCopyStreams.from(copyQuery));
|
|
110
110
|
const csvLines = [];
|
|
111
111
|
for (const record of records) {
|
|
112
112
|
const row = colNames.map(
|
|
@@ -146,7 +146,7 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
146
146
|
case "char":
|
|
147
147
|
case "text": {
|
|
148
148
|
const str = value;
|
|
149
|
-
if (str.includes('"') || str.includes(",") || str.includes("\n") || str.includes("\r")) {
|
|
149
|
+
if (str.includes('"') || str.includes(",") || str.includes("\n") || str.includes("\r") || str.includes("\\")) {
|
|
150
150
|
return '"' + str.replace(/"/g, '""') + '"';
|
|
151
151
|
}
|
|
152
152
|
return str;
|
|
@@ -174,7 +174,7 @@ class PostgresqlDbConn extends EventEmitter {
|
|
|
174
174
|
}
|
|
175
175
|
_resetState() {
|
|
176
176
|
this.isConnected = false;
|
|
177
|
-
this.
|
|
177
|
+
this.isInTransaction = false;
|
|
178
178
|
this._client = void 0;
|
|
179
179
|
}
|
|
180
180
|
_stopTimeout() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/connections/postgresql-db-conn.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAgB;AACzB,OAAO,aAAa;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/create-db-conn.js
CHANGED
|
@@ -56,7 +56,7 @@ async function createRawConnection(config) {
|
|
|
56
56
|
} else if (config.dialect === "postgresql") {
|
|
57
57
|
const pg = await ensureModule("pg");
|
|
58
58
|
const pgCopyStreams = await ensureModule("pgCopyStreams");
|
|
59
|
-
return new PostgresqlDbConn(pg, pgCopyStreams
|
|
59
|
+
return new PostgresqlDbConn(pg, pgCopyStreams, config);
|
|
60
60
|
} else {
|
|
61
61
|
const tedious = await ensureModule("tedious");
|
|
62
62
|
return new MssqlDbConn(tedious, config);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/create-db-conn.ts"],
|
|
4
|
-
"mappings": "AACA,SAAS,kBAAkB;AAE3B,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AAUjC,MAAM,UAAU,oBAAI,IAA0B;AAG9C,MAAM,mBAAmB,oBAAI,IAAmB;AAGhD,MAAM,UAKF,CAAC;AAWE,SAAS,aAAa,QAAuC;AAElE,QAAM,EAAE,MAAM,mBAAmB,IAAI,gBAAgB,MAAM;AAG3D,SAAO,QAAQ,QAAQ,IAAI,aAAa,MAAM,QAAQ,kBAAkB,CAAC;AAC3E;AAEA,SAAS,gBAAgB,QAGvB;AAEA,QAAM,YAAY,KAAK;AAAA,IAAU;AAAA,IAAQ,CAAC,GAAG,UAC3C,SAAS,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC9D,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,IAC/E;AAAA,EACN;AAEA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG;AAC3B,UAAM,OAAO;AAAA,MACX;AAAA,QACE,QAAQ,YAAY;AAClB,gBAAM,OAAO,MAAM,oBAAoB,MAAM;AAC7C,gBAAM,KAAK,QAAQ;AACnB,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,OAAO,SAAS;AACvB,gBAAM,KAAK,MAAM;AAAA,QACnB;AAAA,QACA,UAAU,CAAC,SAAS;AAElB,iBAAO,QAAQ,QAAQ,KAAK,WAAW;AAAA,QACzC;AAAA,MACF;AAAA,MACA;AAAA,QACE,KAAK,OAAO,MAAM,OAAO;AAAA,QACzB,KAAK,OAAO,MAAM,OAAO;AAAA,QACzB,sBAAsB,OAAO,MAAM,wBAAwB;AAAA,QAC3D,mBAAmB,OAAO,MAAM,qBAAqB;AAAA,QACrD,cAAc;AAAA;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,GAAG,sBAAsB,CAAC,QAAe;AAC5C,uBAAiB,IAAI,WAAW,GAAG;AAAA,IACrC,CAAC;AAED,YAAQ,IAAI,WAAW,IAAI;AAAA,EAC7B;AAEA,SAAO;AAAA,IACL,MAAM,QAAQ,IAAI,SAAS;AAAA,IAC3B,oBAAoB,MAAM,iBAAiB,IAAI,SAAS;AAAA,EAC1D;AACF;AAEA,eAAe,oBAAoB,QAAuC;AACxE,MAAI,OAAO,YAAY,SAAS;AAC9B,UAAM,QAAQ,MAAM,aAAa,OAAO;AACxC,WAAO,IAAI,YAAY,OAAO,MAAM;AAAA,EACtC,WAAW,OAAO,YAAY,cAAc;AAC1C,UAAM,KAAK,MAAM,aAAa,IAAI;AAClC,UAAM,gBAAgB,MAAM,aAAa,eAAe;AACxD,WAAO,IAAI,iBAAiB,IAAI,
|
|
4
|
+
"mappings": "AACA,SAAS,kBAAkB;AAE3B,SAAS,oBAAoB;AAC7B,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,wBAAwB;AAUjC,MAAM,UAAU,oBAAI,IAA0B;AAG9C,MAAM,mBAAmB,oBAAI,IAAmB;AAGhD,MAAM,UAKF,CAAC;AAWE,SAAS,aAAa,QAAuC;AAElE,QAAM,EAAE,MAAM,mBAAmB,IAAI,gBAAgB,MAAM;AAG3D,SAAO,QAAQ,QAAQ,IAAI,aAAa,MAAM,QAAQ,kBAAkB,CAAC;AAC3E;AAEA,SAAS,gBAAgB,QAGvB;AAEA,QAAM,YAAY,KAAK;AAAA,IAAU;AAAA,IAAQ,CAAC,GAAG,UAC3C,SAAS,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC9D,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,IAC/E;AAAA,EACN;AAEA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG;AAC3B,UAAM,OAAO;AAAA,MACX;AAAA,QACE,QAAQ,YAAY;AAClB,gBAAM,OAAO,MAAM,oBAAoB,MAAM;AAC7C,gBAAM,KAAK,QAAQ;AACnB,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,OAAO,SAAS;AACvB,gBAAM,KAAK,MAAM;AAAA,QACnB;AAAA,QACA,UAAU,CAAC,SAAS;AAElB,iBAAO,QAAQ,QAAQ,KAAK,WAAW;AAAA,QACzC;AAAA,MACF;AAAA,MACA;AAAA,QACE,KAAK,OAAO,MAAM,OAAO;AAAA,QACzB,KAAK,OAAO,MAAM,OAAO;AAAA,QACzB,sBAAsB,OAAO,MAAM,wBAAwB;AAAA,QAC3D,mBAAmB,OAAO,MAAM,qBAAqB;AAAA,QACrD,cAAc;AAAA;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,GAAG,sBAAsB,CAAC,QAAe;AAC5C,uBAAiB,IAAI,WAAW,GAAG;AAAA,IACrC,CAAC;AAED,YAAQ,IAAI,WAAW,IAAI;AAAA,EAC7B;AAEA,SAAO;AAAA,IACL,MAAM,QAAQ,IAAI,SAAS;AAAA,IAC3B,oBAAoB,MAAM,iBAAiB,IAAI,SAAS;AAAA,EAC1D;AACF;AAEA,eAAe,oBAAoB,QAAuC;AACxE,MAAI,OAAO,YAAY,SAAS;AAC9B,UAAM,QAAQ,MAAM,aAAa,OAAO;AACxC,WAAO,IAAI,YAAY,OAAO,MAAM;AAAA,EACtC,WAAW,OAAO,YAAY,cAAc;AAC1C,UAAM,KAAK,MAAM,aAAa,IAAI;AAClC,UAAM,gBAAgB,MAAM,aAAa,eAAe;AACxD,WAAO,IAAI,iBAAiB,IAAI,eAAe,MAAM;AAAA,EACvD,OAAO;AAEL,UAAM,UAAU,MAAM,aAAa,SAAS;AAC5C,WAAO,IAAI,YAAY,SAAS,MAAM;AAAA,EACxC;AACF;AAEA,eAAe,aACb,MAC2C;AAC3C,MAAI,QAAQ,IAAI,KAAK,MAAM;AACzB,QAAI,SAAS,SAAS;AACpB,cAAQ,QAAQ,MAAM,OAAO,gBAAgB;AAAA,IAC/C,WAAW,SAAS,MAAM;AACxB,cAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,IAChC,WAAW,SAAS,iBAAiB;AACnC,cAAQ,gBAAgB,MAAM,OAAO,iBAAiB;AAAA,IACxD,OAAO;AACL,cAAQ,UAAU,MAAM,OAAO,SAAS;AAAA,IAC1C;AAAA,EACF;AACA,SAAO,QAAQ,IAAI;AACrB;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -51,7 +51,7 @@ export declare class NodeDbContextExecutor implements DbContextExecutor {
|
|
|
51
51
|
* @returns 쿼리 결과 배열
|
|
52
52
|
* @throws {Error} 연결되지 않은 상태일 때
|
|
53
53
|
*/
|
|
54
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
54
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
55
55
|
/**
|
|
56
56
|
* 대량 데이터 삽입 (네이티브 벌크 API 사용)
|
|
57
57
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-db-context-executor.d.ts","sourceRoot":"","sources":["..\\src\\node-db-context-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,UAAU,EAEV,UAAU,EACV,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI5D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEN,OAAO,EAAE,YAAY;IAIlD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;OAKG;IACG,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;;;;OAOG;IACG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"node-db-context-executor.d.ts","sourceRoot":"","sources":["..\\src\\node-db-context-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,UAAU,EAEV,UAAU,EACV,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI5D;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAIjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEN,OAAO,EAAE,YAAY;IAIlD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;;;;OAKG;IACG,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;;;;OAOG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAKvC;;;;;;;OAOG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,UAAU,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;IAKhB;;;;;;;;;OASG;IACG,WAAW,CAAC,CAAC,GAAG,UAAU,EAC9B,IAAI,EAAE,QAAQ,EAAE,EAChB,WAAW,CAAC,EAAE,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,GACvC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;IAqCjB,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -108,10 +108,7 @@ class NodeDbContextExecutor {
|
|
|
108
108
|
const rawResults = await conn.execute([buildResult.sql]);
|
|
109
109
|
const targetResultSet = buildResult.resultSetIndex != null ? rawResults[buildResult.resultSetIndex] : rawResults[0];
|
|
110
110
|
if (meta != null) {
|
|
111
|
-
const parsed = await parseQueryResult(
|
|
112
|
-
targetResultSet,
|
|
113
|
-
meta
|
|
114
|
-
);
|
|
111
|
+
const parsed = await parseQueryResult(targetResultSet, meta);
|
|
115
112
|
results.push(parsed ?? []);
|
|
116
113
|
} else {
|
|
117
114
|
results.push(targetResultSet);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/node-db-context-executor.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,eAAe;AAUxB,SAAS,oBAAoB,wBAAwB;AAErD,SAAS,gBAAgB,4BAA4B;AACrD,SAAS,oBAAoB;AAOtB,MAAM,sBAAmD;AAAA,EAI9D,YAA6B,SAAuB;AAAvB;AAC3B,SAAK,WAAW,qBAAqB,OAAO;AAAA,EAC9C;AAAA,EALQ;AAAA,EACS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWjB,MAAM,UAAyB;AAC7B,SAAK,QAAQ,MAAM,aAAa,KAAK,OAAO;AAC5C,UAAM,KAAK,MAAM,QAAQ;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAuB;AAC3B,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,MAAM;AACjB,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,iBAAiB,gBAAgD;AACrE,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,iBAAiB,cAAc;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAmC;AACvC,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,kBAAkB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,oBAAoB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,
|
|
4
|
+
"mappings": "AAAA,SAAS,eAAe;AAUxB,SAAS,oBAAoB,wBAAwB;AAErD,SAAS,gBAAgB,4BAA4B;AACrD,SAAS,oBAAoB;AAOtB,MAAM,sBAAmD;AAAA,EAI9D,YAA6B,SAAuB;AAAvB;AAC3B,SAAK,WAAW,qBAAqB,OAAO;AAAA,EAC9C;AAAA,EALQ;AAAA,EACS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWjB,MAAM,UAAyB;AAC7B,SAAK,QAAQ,MAAM,aAAa,KAAK,OAAO;AAC5C,UAAM,KAAK,MAAM,QAAQ;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAuB;AAC3B,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,MAAM;AACjB,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,iBAAiB,gBAAgD;AACrE,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,iBAAiB,cAAc;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAmC;AACvC,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,kBAAkB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,oBAAoB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,oBACJ,OACA,QACsC;AACtC,UAAM,OAAO,KAAK,aAAa;AAC/B,WAAO,KAAK,oBAAoB,OAAO,MAAM;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,WACJ,WACA,aACA,SACe;AACf,UAAM,OAAO,KAAK,aAAa;AAC/B,UAAM,KAAK,WAAW,WAAW,aAAa,OAAO;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,YACJ,MACA,aACgB;AAChB,UAAM,OAAO,KAAK,aAAa;AAE/B,UAAM,UAAU,mBAAmB,KAAK,QAAQ;AAIhD,QAAI,eAAe,QAAQ,YAAY,MAAM,CAAC,SAAS,QAAQ,IAAI,GAAG;AACpE,YAAM,cAAc,KAAK,IAAI,CAAC,QAAQ,QAAQ,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI;AACvE,YAAM,KAAK,QAAQ,CAAC,WAAW,CAAC;AAChC,aAAO,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,IAC1B;AAGA,UAAM,UAAiB,CAAC;AACxB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,MAAM,KAAK,CAAC;AAClB,YAAM,OAAO,cAAc,CAAC;AAC5B,YAAM,cAAc,QAAQ,MAAM,GAAG;AAErC,YAAM,aAAa,MAAM,KAAK,QAAQ,CAAC,YAAY,GAAG,CAAC;AAGvD,YAAM,kBACJ,YAAY,kBAAkB,OAAO,WAAW,YAAY,cAAc,IAAI,WAAW,CAAC;AAE5F,UAAI,QAAQ,MAAM;AAChB,cAAM,SAAS,MAAM,iBAAoB,iBAAiB,IAAI;AAC9D,gBAAQ,KAAK,UAAU,CAAC,CAAC;AAAA,MAC3B,OAAO;AACL,gBAAQ,KAAK,eAAsB;AAAA,MACrC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,eAAuB;AAC7B,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,IAAI,QAAQ,eAAe,aAAa;AAAA,IAChD;AACA,WAAO,KAAK;AAAA,EACd;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/pooled-db-conn.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare class PooledDbConn extends EventEmitter<{
|
|
|
18
18
|
constructor(_pool: Pool<DbConn>, _initialConfig: DbConnConfig, _getLastCreateError?: (() => Error | undefined) | undefined);
|
|
19
19
|
get config(): DbConnConfig;
|
|
20
20
|
get isConnected(): boolean;
|
|
21
|
-
get
|
|
21
|
+
get isInTransaction(): boolean;
|
|
22
22
|
/**
|
|
23
23
|
* 풀에서 DB 연결을 획득한다.
|
|
24
24
|
*
|
|
@@ -56,7 +56,7 @@ export declare class PooledDbConn extends EventEmitter<{
|
|
|
56
56
|
* @returns 각 쿼리의 결과 배열
|
|
57
57
|
* @throws {SdError} 연결이 획득되지 않은 상태일 때
|
|
58
58
|
*/
|
|
59
|
-
execute(queries: string[]): Promise<unknown[][]>;
|
|
59
|
+
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
60
60
|
/**
|
|
61
61
|
* 파라미터화된 SQL 쿼리 실행
|
|
62
62
|
*
|
|
@@ -65,7 +65,7 @@ export declare class PooledDbConn extends EventEmitter<{
|
|
|
65
65
|
* @returns 쿼리 결과 배열
|
|
66
66
|
* @throws {SdError} 연결이 획득되지 않은 상태일 때
|
|
67
67
|
*/
|
|
68
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
68
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
69
69
|
/**
|
|
70
70
|
* 대량 데이터 삽입 (네이티브 벌크 API 사용)
|
|
71
71
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pooled-db-conn.d.ts","sourceRoot":"","sources":["..\\src\\pooled-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAkB,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIjF;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAK7E,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IALvC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAGP,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,cAAc,EAAE,YAAY,EAC5B,mBAAmB,CAAC,GAAE,MAAM,KAAK,GAAG,SAAS,aAAA;IAMhE,IAAI,MAAM,IAAI,YAAY,CAEzB;IAGD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAGD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAK9B;IAIF;;;;;OAKG;IACG,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"pooled-db-conn.d.ts","sourceRoot":"","sources":["..\\src\\pooled-db-conn.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAkB,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIjF;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,MAAM;IAK7E,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IALvC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAGP,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EACnB,cAAc,EAAE,YAAY,EAC5B,mBAAmB,CAAC,GAAE,MAAM,KAAK,GAAG,SAAS,aAAA;IAMhE,IAAI,MAAM,IAAI,YAAY,CAEzB;IAGD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAGD,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAK9B;IAIF;;;;;OAKG;IACG,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtE;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAKtE;;;;;;;OAOG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;IAKvC;;;;;;;OAOG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAKhB,OAAO,CAAC,eAAe;CAMxB"}
|
package/dist/pooled-db-conn.js
CHANGED
|
@@ -19,9 +19,9 @@ class PooledDbConn extends EventEmitter {
|
|
|
19
19
|
get isConnected() {
|
|
20
20
|
return this._rawConn?.isConnected ?? false;
|
|
21
21
|
}
|
|
22
|
-
// [Property]
|
|
23
|
-
get
|
|
24
|
-
return this._rawConn?.
|
|
22
|
+
// [Property] isInTransaction
|
|
23
|
+
get isInTransaction() {
|
|
24
|
+
return this._rawConn?.isInTransaction ?? false;
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* 풀에서 DB 연결을 획득한다.
|
|
@@ -49,7 +49,7 @@ class PooledDbConn extends EventEmitter {
|
|
|
49
49
|
*/
|
|
50
50
|
async close() {
|
|
51
51
|
if (this._rawConn != null) {
|
|
52
|
-
if (this._rawConn.
|
|
52
|
+
if (this._rawConn.isInTransaction) {
|
|
53
53
|
try {
|
|
54
54
|
await this._rawConn.rollbackTransaction();
|
|
55
55
|
} catch (err) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/pooled-db-conn.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO,aAAa;AACpB,SAAS,SAAS,oBAAoB;AAGtC,SAAS,sBAAsD;AAE/D,MAAM,SAAS,QAAQ,QAAQ,gBAAgB;AAQxC,MAAM,qBAAqB,aAAgD;AAAA,EAIhF,YACmB,OACA,gBACA,qBACjB;AACA,UAAM;AAJW;AACA;AACA;AAAA,EAGnB;AAAA;AAAA,EARQ;AAAA;AAAA,EAWR,IAAI,SAAuB;AACzB,WAAO,KAAK,UAAU,UAAU,KAAK;AAAA,EACvC;AAAA;AAAA,EAGA,IAAI,cAAuB;AACzB,WAAO,KAAK,UAAU,eAAe;AAAA,EACvC;AAAA;AAAA,EAGA,IAAI,kBAA2B;AAC7B,WAAO,KAAK,UAAU,mBAAmB;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,UAAyB;AAC7B,QAAI,KAAK,YAAY,MAAM;AACzB,YAAM,IAAI,QAAQ,eAAe,iBAAiB;AAAA,IACpD;AAGA,QAAI;AACF,WAAK,WAAW,MAAM,KAAK,MAAM,QAAQ;AAAA,IAC3C,SAAS,KAAK;AACZ,YAAM,EAAE,SAAS,MAAM,MAAM,SAAS,IAAI,KAAK;AAC/C,YAAM,QAAQ,KAAK,sBAAsB,MAAM,eAAe,QAAQ,MAAM;AAC5E,YAAM,IAAI;AAAA,QACR,GAAI,SAAS,OAAO,CAAC,KAAK,IAAI,CAAC;AAAA,QAC/B,iCAAa,OAAO,MAAM,IAAI,IAAI,QAAQ,EAAE,IAAI,YAAY,EAAE;AAAA,MAChE;AAAA,IACF;AAIA,SAAK,SAAS,GAAG,SAAS,KAAK,eAAe;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAC3B,QAAI,KAAK,YAAY,MAAM;AAEzB,UAAI,KAAK,SAAS,iBAAiB;AACjC,YAAI;AACF,gBAAM,KAAK,SAAS,oBAAoB;AAAA,QAC1C,SAAS,KAAK;AAEZ,iBAAO,KAAK,wDAAgB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,QAC9E;AAAA,MACF;AAGA,WAAK,SAAS,IAAI,SAAS,KAAK,eAAe;AAG/C,YAAM,KAAK,MAAM,QAAQ,KAAK,QAAQ;AACtC,WAAK,WAAW;AAGhB,WAAK,KAAK,OAAO;AAAA,IACnB;AAAA,EACF;AAAA;AAAA,EAGiB,kBAAkB,MAAM;AAEvC,SAAK,WAAW;AAEhB,SAAK,KAAK,OAAO;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,iBAAiB,gBAAgD;AACrE,UAAM,OAAO,KAAK,gBAAgB;AAClC,UAAM,KAAK,iBAAiB,cAAc;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBAAmC;AACvC,UAAM,OAAO,KAAK,gBAAgB;AAClC,UAAM,KAAK,kBAAkB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,sBAAqC;AACzC,UAAM,OAAO,KAAK,gBAAgB;AAClC,UAAM,KAAK,oBAAoB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,QAAQ,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/types/db-conn.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface DbConn extends EventEmitter<{
|
|
|
40
40
|
/**
|
|
41
41
|
* 트랜잭션 진행 여부
|
|
42
42
|
*/
|
|
43
|
-
|
|
43
|
+
isInTransaction: boolean;
|
|
44
44
|
/**
|
|
45
45
|
* DB 연결 수립
|
|
46
46
|
*/
|
|
@@ -69,7 +69,7 @@ export interface DbConn extends EventEmitter<{
|
|
|
69
69
|
* @param queries - 실행할 SQL 문자열 배열
|
|
70
70
|
* @returns 각 쿼리별 결과 배열의 배열
|
|
71
71
|
*/
|
|
72
|
-
execute(queries: string[]): Promise<unknown[][]>;
|
|
72
|
+
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
73
73
|
/**
|
|
74
74
|
* 파라미터화된 쿼리 실행
|
|
75
75
|
*
|
|
@@ -77,7 +77,7 @@ export interface DbConn extends EventEmitter<{
|
|
|
77
77
|
* @param params - 바인딩 파라미터 (선택)
|
|
78
78
|
* @returns 결과 배열의 배열
|
|
79
79
|
*/
|
|
80
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
80
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
81
81
|
/**
|
|
82
82
|
* 대량 INSERT (네이티브 벌크 API 사용)
|
|
83
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\types\\db-conn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMhF;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAY,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAMX;;;;;;;;;;GAUG;AACH,MAAM,WAAW,MAAO,SAAQ,YAAY,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAC;IAC3D;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,gBAAgB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"db-conn.d.ts","sourceRoot":"","sources":["..\\..\\src\\types\\db-conn.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/orm-node",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.47",
|
|
4
4
|
"description": "심플리즘 패키지 - ORM 모듈 (node)",
|
|
5
5
|
"author": "김석래",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"consola": "^3.4.2",
|
|
22
22
|
"generic-pool": "^3.9.0",
|
|
23
|
-
"@simplysm/core-common": "13.0.
|
|
24
|
-
"@simplysm/orm-common": "13.0.
|
|
23
|
+
"@simplysm/core-common": "13.0.47",
|
|
24
|
+
"@simplysm/orm-common": "13.0.47"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/pg": "^8.16.0",
|
|
28
28
|
"@types/pg-copy-streams": "^1.2.5",
|
|
29
|
-
"mysql2": "^3.17.
|
|
29
|
+
"mysql2": "^3.17.4",
|
|
30
30
|
"pg": "^8.18.0",
|
|
31
31
|
"pg-copy-streams": "^7.0.0",
|
|
32
32
|
"tedious": "^19.2.1"
|
|
@@ -36,7 +36,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
36
36
|
private _requests: tediousType.Request[] = [];
|
|
37
37
|
|
|
38
38
|
isConnected = false;
|
|
39
|
-
|
|
39
|
+
isInTransaction = false;
|
|
40
40
|
|
|
41
41
|
constructor(
|
|
42
42
|
private readonly _tedious: typeof import("tedious"),
|
|
@@ -97,7 +97,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
97
97
|
|
|
98
98
|
this._startTimeout();
|
|
99
99
|
this.isConnected = true;
|
|
100
|
-
this.
|
|
100
|
+
this.isInTransaction = false;
|
|
101
101
|
resolve();
|
|
102
102
|
});
|
|
103
103
|
});
|
|
@@ -143,7 +143,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
this.
|
|
146
|
+
this.isInTransaction = true;
|
|
147
147
|
resolve();
|
|
148
148
|
},
|
|
149
149
|
"",
|
|
@@ -167,7 +167,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
167
167
|
return;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
this.
|
|
170
|
+
this.isInTransaction = false;
|
|
171
171
|
resolve();
|
|
172
172
|
});
|
|
173
173
|
});
|
|
@@ -186,14 +186,14 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
186
186
|
return;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
this.
|
|
189
|
+
this.isInTransaction = false;
|
|
190
190
|
resolve();
|
|
191
191
|
});
|
|
192
192
|
});
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
async execute(queries: string[]): Promise<unknown[][]> {
|
|
196
|
-
const results: unknown[][] = [];
|
|
195
|
+
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
196
|
+
const results: Record<string, unknown>[][] = [];
|
|
197
197
|
for (const query of queries.filter((item) => !strIsNullOrEmpty(item))) {
|
|
198
198
|
const resultItems = await this.executeParametrized(query);
|
|
199
199
|
results.push(...resultItems);
|
|
@@ -202,13 +202,16 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
202
202
|
return results;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
async executeParametrized(
|
|
205
|
+
async executeParametrized(
|
|
206
|
+
query: string,
|
|
207
|
+
params?: unknown[],
|
|
208
|
+
): Promise<Record<string, unknown>[][]> {
|
|
206
209
|
this._assertConnected();
|
|
207
210
|
this._startTimeout();
|
|
208
211
|
|
|
209
212
|
const conn = this._conn!;
|
|
210
213
|
|
|
211
|
-
const results: unknown[][] = [];
|
|
214
|
+
const results: Record<string, unknown>[][] = [];
|
|
212
215
|
|
|
213
216
|
logger.debug("쿼리 실행", { queryLength: query.length, params });
|
|
214
217
|
await new Promise<void>((resolve, reject) => {
|
|
@@ -373,7 +376,7 @@ export class MssqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
373
376
|
|
|
374
377
|
private _resetState(): void {
|
|
375
378
|
this.isConnected = false;
|
|
376
|
-
this.
|
|
379
|
+
this.isInTransaction = false;
|
|
377
380
|
this._conn = undefined;
|
|
378
381
|
this._requests = [];
|
|
379
382
|
}
|
|
@@ -37,7 +37,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
37
37
|
private _connTimeout?: ReturnType<typeof setTimeout>;
|
|
38
38
|
|
|
39
39
|
isConnected = false;
|
|
40
|
-
|
|
40
|
+
isInTransaction = false;
|
|
41
41
|
|
|
42
42
|
constructor(
|
|
43
43
|
private readonly _mysql2: typeof import("mysql2/promise"),
|
|
@@ -109,23 +109,23 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
109
109
|
// 그 다음 트랜잭션 시작
|
|
110
110
|
await conn.beginTransaction();
|
|
111
111
|
|
|
112
|
-
this.
|
|
112
|
+
this.isInTransaction = true;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
async commitTransaction(): Promise<void> {
|
|
116
116
|
const conn = this._assertConnected();
|
|
117
117
|
await conn.commit();
|
|
118
|
-
this.
|
|
118
|
+
this.isInTransaction = false;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
async rollbackTransaction(): Promise<void> {
|
|
122
122
|
const conn = this._assertConnected();
|
|
123
123
|
await conn.rollback();
|
|
124
|
-
this.
|
|
124
|
+
this.isInTransaction = false;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
async execute(queries: string[]): Promise<unknown[][]> {
|
|
128
|
-
const results: unknown[][] = [];
|
|
127
|
+
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
128
|
+
const results: Record<string, unknown>[][] = [];
|
|
129
129
|
for (const query of queries.filter((item) => !strIsNullOrEmpty(item))) {
|
|
130
130
|
const resultItems = await this.executeParametrized(query);
|
|
131
131
|
results.push(...resultItems);
|
|
@@ -133,7 +133,10 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
133
133
|
return results;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
async executeParametrized(
|
|
136
|
+
async executeParametrized(
|
|
137
|
+
query: string,
|
|
138
|
+
params?: unknown[],
|
|
139
|
+
): Promise<Record<string, unknown>[][]> {
|
|
137
140
|
const conn = this._assertConnected();
|
|
138
141
|
|
|
139
142
|
logger.debug("쿼리 실행", { queryLength: query.length, params });
|
|
@@ -142,7 +145,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
142
145
|
const [queryResults] = await conn.query({
|
|
143
146
|
sql: query,
|
|
144
147
|
timeout: this._timeout,
|
|
145
|
-
values: params,
|
|
148
|
+
values: params as ({} | null)[] | undefined,
|
|
146
149
|
});
|
|
147
150
|
|
|
148
151
|
this._startTimeout();
|
|
@@ -150,7 +153,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
150
153
|
// MySQL은 INSERT/UPDATE/DELETE 문에 대해 ResultSetHeader를 반환함
|
|
151
154
|
// SELECT 결과만 추출하기 위해 ResultSetHeader 객체를 필터링함
|
|
152
155
|
// ResultSetHeader는 affectedRows, fieldCount 등의 필드를 가지고 있음
|
|
153
|
-
const result: unknown[] = [];
|
|
156
|
+
const result: Record<string, unknown>[] = [];
|
|
154
157
|
if (queryResults instanceof Array) {
|
|
155
158
|
for (const queryResult of queryResults.filter(
|
|
156
159
|
(item: unknown) =>
|
|
@@ -161,7 +164,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
161
164
|
"fieldCount" in item
|
|
162
165
|
),
|
|
163
166
|
)) {
|
|
164
|
-
result.push(queryResult);
|
|
167
|
+
result.push(queryResult as Record<string, unknown>);
|
|
165
168
|
}
|
|
166
169
|
}
|
|
167
170
|
|
|
@@ -264,6 +267,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
264
267
|
// 탭, 줄바꿈, 백슬래시 이스케이프
|
|
265
268
|
return str
|
|
266
269
|
.replace(/\\/g, "\\\\")
|
|
270
|
+
.replace(/\0/g, "\\0")
|
|
267
271
|
.replace(/\t/g, "\\t")
|
|
268
272
|
.replace(/\n/g, "\\n")
|
|
269
273
|
.replace(/\r/g, "\\r");
|
|
@@ -299,7 +303,7 @@ export class MysqlDbConn extends EventEmitter<{ close: void }> implements DbConn
|
|
|
299
303
|
|
|
300
304
|
private _resetState(): void {
|
|
301
305
|
this.isConnected = false;
|
|
302
|
-
this.
|
|
306
|
+
this.isInTransaction = false;
|
|
303
307
|
this._conn = undefined;
|
|
304
308
|
}
|
|
305
309
|
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
type PostgresqlDbConnConfig,
|
|
20
20
|
} from "../types/db-conn";
|
|
21
21
|
import type { Client } from "pg";
|
|
22
|
-
import type { CopyStreamQuery } from "pg-copy-streams";
|
|
23
22
|
|
|
24
23
|
const logger = consola.withTag("postgresql-db-conn");
|
|
25
24
|
|
|
@@ -35,11 +34,11 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
35
34
|
private _connTimeout?: ReturnType<typeof setTimeout>;
|
|
36
35
|
|
|
37
36
|
isConnected = false;
|
|
38
|
-
|
|
37
|
+
isInTransaction = false;
|
|
39
38
|
|
|
40
39
|
constructor(
|
|
41
40
|
private readonly _pg: typeof import("pg"),
|
|
42
|
-
private readonly
|
|
41
|
+
private readonly _pgCopyStreams: typeof import("pg-copy-streams"),
|
|
43
42
|
readonly config: PostgresqlDbConnConfig,
|
|
44
43
|
) {
|
|
45
44
|
super();
|
|
@@ -101,23 +100,23 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
101
100
|
await this._client!.query("BEGIN");
|
|
102
101
|
await this._client!.query(`SET TRANSACTION ISOLATION LEVEL ${level}`);
|
|
103
102
|
|
|
104
|
-
this.
|
|
103
|
+
this.isInTransaction = true;
|
|
105
104
|
}
|
|
106
105
|
|
|
107
106
|
async commitTransaction(): Promise<void> {
|
|
108
107
|
this._assertConnected();
|
|
109
108
|
await this._client!.query("COMMIT");
|
|
110
|
-
this.
|
|
109
|
+
this.isInTransaction = false;
|
|
111
110
|
}
|
|
112
111
|
|
|
113
112
|
async rollbackTransaction(): Promise<void> {
|
|
114
113
|
this._assertConnected();
|
|
115
114
|
await this._client!.query("ROLLBACK");
|
|
116
|
-
this.
|
|
115
|
+
this.isInTransaction = false;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
|
-
async execute(queries: string[]): Promise<unknown[][]> {
|
|
120
|
-
const results: unknown[][] = [];
|
|
118
|
+
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
119
|
+
const results: Record<string, unknown>[][] = [];
|
|
121
120
|
for (const query of queries.filter((item) => !strIsNullOrEmpty(item))) {
|
|
122
121
|
const resultItems = await this.executeParametrized(query);
|
|
123
122
|
results.push(...resultItems);
|
|
@@ -125,7 +124,10 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
125
124
|
return results;
|
|
126
125
|
}
|
|
127
126
|
|
|
128
|
-
async executeParametrized(
|
|
127
|
+
async executeParametrized(
|
|
128
|
+
query: string,
|
|
129
|
+
params?: unknown[],
|
|
130
|
+
): Promise<Record<string, unknown>[][]> {
|
|
129
131
|
this._assertConnected();
|
|
130
132
|
|
|
131
133
|
logger.debug("쿼리 실행", { queryLength: query.length, params });
|
|
@@ -158,7 +160,7 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
158
160
|
|
|
159
161
|
// COPY FROM STDIN 스트림 생성
|
|
160
162
|
const copyQuery = `COPY ${tableName} (${wrappedCols}) FROM STDIN WITH (FORMAT csv, NULL '\\N')`;
|
|
161
|
-
const stream = this._client!.query(this.
|
|
163
|
+
const stream = this._client!.query(this._pgCopyStreams.from(copyQuery));
|
|
162
164
|
|
|
163
165
|
// CSV 데이터 생성
|
|
164
166
|
const csvLines: string[] = [];
|
|
@@ -210,7 +212,13 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
210
212
|
case "text": {
|
|
211
213
|
const str = value as string;
|
|
212
214
|
// CSV 형식: 쌍따옴표로 감싸고, 내부 쌍따옴표는 두 번
|
|
213
|
-
if (
|
|
215
|
+
if (
|
|
216
|
+
str.includes('"') ||
|
|
217
|
+
str.includes(",") ||
|
|
218
|
+
str.includes("\n") ||
|
|
219
|
+
str.includes("\r") ||
|
|
220
|
+
str.includes("\\")
|
|
221
|
+
) {
|
|
214
222
|
return '"' + str.replace(/"/g, '""') + '"';
|
|
215
223
|
}
|
|
216
224
|
return str;
|
|
@@ -245,7 +253,7 @@ export class PostgresqlDbConn extends EventEmitter<{ close: void }> implements D
|
|
|
245
253
|
|
|
246
254
|
private _resetState(): void {
|
|
247
255
|
this.isConnected = false;
|
|
248
|
-
this.
|
|
256
|
+
this.isInTransaction = false;
|
|
249
257
|
this._client = undefined;
|
|
250
258
|
}
|
|
251
259
|
|
package/src/create-db-conn.ts
CHANGED
|
@@ -100,7 +100,7 @@ async function createRawConnection(config: DbConnConfig): Promise<DbConn> {
|
|
|
100
100
|
} else if (config.dialect === "postgresql") {
|
|
101
101
|
const pg = await ensureModule("pg");
|
|
102
102
|
const pgCopyStreams = await ensureModule("pgCopyStreams");
|
|
103
|
-
return new PostgresqlDbConn(pg, pgCopyStreams
|
|
103
|
+
return new PostgresqlDbConn(pg, pgCopyStreams, config);
|
|
104
104
|
} else {
|
|
105
105
|
// mssql, mssql-azure
|
|
106
106
|
const tedious = await ensureModule("tedious");
|
|
@@ -88,7 +88,10 @@ export class NodeDbContextExecutor implements DbContextExecutor {
|
|
|
88
88
|
* @returns 쿼리 결과 배열
|
|
89
89
|
* @throws {Error} 연결되지 않은 상태일 때
|
|
90
90
|
*/
|
|
91
|
-
async executeParametrized(
|
|
91
|
+
async executeParametrized(
|
|
92
|
+
query: string,
|
|
93
|
+
params?: unknown[],
|
|
94
|
+
): Promise<Record<string, unknown>[][]> {
|
|
92
95
|
const conn = this._requireConn();
|
|
93
96
|
return conn.executeParametrized(query, params);
|
|
94
97
|
}
|
|
@@ -150,10 +153,7 @@ export class NodeDbContextExecutor implements DbContextExecutor {
|
|
|
150
153
|
buildResult.resultSetIndex != null ? rawResults[buildResult.resultSetIndex] : rawResults[0];
|
|
151
154
|
|
|
152
155
|
if (meta != null) {
|
|
153
|
-
const parsed = await parseQueryResult<T>(
|
|
154
|
-
targetResultSet as Record<string, unknown>[],
|
|
155
|
-
meta,
|
|
156
|
-
);
|
|
156
|
+
const parsed = await parseQueryResult<T>(targetResultSet, meta);
|
|
157
157
|
results.push(parsed ?? []);
|
|
158
158
|
} else {
|
|
159
159
|
results.push(targetResultSet as T[]);
|
package/src/pooled-db-conn.ts
CHANGED
|
@@ -34,9 +34,9 @@ export class PooledDbConn extends EventEmitter<{ close: void }> implements DbCon
|
|
|
34
34
|
return this._rawConn?.isConnected ?? false;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
// [Property]
|
|
38
|
-
get
|
|
39
|
-
return this._rawConn?.
|
|
37
|
+
// [Property] isInTransaction
|
|
38
|
+
get isInTransaction(): boolean {
|
|
39
|
+
return this._rawConn?.isInTransaction ?? false;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
/**
|
|
@@ -72,7 +72,7 @@ export class PooledDbConn extends EventEmitter<{ close: void }> implements DbCon
|
|
|
72
72
|
async close(): Promise<void> {
|
|
73
73
|
if (this._rawConn != null) {
|
|
74
74
|
// 1. 트랜잭션 진행 중이면 롤백하여 깨끗한 상태로 풀에 반환
|
|
75
|
-
if (this._rawConn.
|
|
75
|
+
if (this._rawConn.isInTransaction) {
|
|
76
76
|
try {
|
|
77
77
|
await this._rawConn.rollbackTransaction();
|
|
78
78
|
} catch (err) {
|
|
@@ -141,7 +141,7 @@ export class PooledDbConn extends EventEmitter<{ close: void }> implements DbCon
|
|
|
141
141
|
* @returns 각 쿼리의 결과 배열
|
|
142
142
|
* @throws {SdError} 연결이 획득되지 않은 상태일 때
|
|
143
143
|
*/
|
|
144
|
-
async execute(queries: string[]): Promise<unknown[][]> {
|
|
144
|
+
async execute(queries: string[]): Promise<Record<string, unknown>[][]> {
|
|
145
145
|
const conn = this._requireRawConn();
|
|
146
146
|
return conn.execute(queries);
|
|
147
147
|
}
|
|
@@ -154,7 +154,10 @@ export class PooledDbConn extends EventEmitter<{ close: void }> implements DbCon
|
|
|
154
154
|
* @returns 쿼리 결과 배열
|
|
155
155
|
* @throws {SdError} 연결이 획득되지 않은 상태일 때
|
|
156
156
|
*/
|
|
157
|
-
async executeParametrized(
|
|
157
|
+
async executeParametrized(
|
|
158
|
+
query: string,
|
|
159
|
+
params?: unknown[],
|
|
160
|
+
): Promise<Record<string, unknown>[][]> {
|
|
158
161
|
const conn = this._requireRawConn();
|
|
159
162
|
return conn.executeParametrized(query, params);
|
|
160
163
|
}
|
package/src/types/db-conn.ts
CHANGED
|
@@ -52,7 +52,7 @@ export interface DbConn extends EventEmitter<{ close: void }> {
|
|
|
52
52
|
/**
|
|
53
53
|
* 트랜잭션 진행 여부
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
isInTransaction: boolean;
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
58
|
* DB 연결 수립
|
|
@@ -87,7 +87,7 @@ export interface DbConn extends EventEmitter<{ close: void }> {
|
|
|
87
87
|
* @param queries - 실행할 SQL 문자열 배열
|
|
88
88
|
* @returns 각 쿼리별 결과 배열의 배열
|
|
89
89
|
*/
|
|
90
|
-
execute(queries: string[]): Promise<unknown[][]>;
|
|
90
|
+
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
93
|
* 파라미터화된 쿼리 실행
|
|
@@ -96,7 +96,7 @@ export interface DbConn extends EventEmitter<{ close: void }> {
|
|
|
96
96
|
* @param params - 바인딩 파라미터 (선택)
|
|
97
97
|
* @returns 결과 배열의 배열
|
|
98
98
|
*/
|
|
99
|
-
executeParametrized(query: string, params?: unknown[]): Promise<unknown[][]>;
|
|
99
|
+
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
100
100
|
|
|
101
101
|
/**
|
|
102
102
|
* 대량 INSERT (네이티브 벌크 API 사용)
|