@simplysm/orm-node 13.0.100 → 14.0.4
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 +195 -168
- package/dist/connections/mssql-db-conn.d.ts +5 -5
- package/dist/connections/mssql-db-conn.js +356 -369
- package/dist/connections/mssql-db-conn.js.map +1 -6
- package/dist/connections/mysql-db-conn.d.ts +3 -3
- package/dist/connections/mysql-db-conn.js +227 -215
- package/dist/connections/mysql-db-conn.js.map +1 -6
- package/dist/connections/postgresql-db-conn.d.ts +3 -3
- package/dist/connections/postgresql-db-conn.js +185 -183
- package/dist/connections/postgresql-db-conn.js.map +1 -6
- package/dist/create-db-conn.d.ts +3 -3
- package/dist/create-db-conn.js +43 -27
- package/dist/create-db-conn.js.map +1 -6
- package/dist/create-orm.d.ts +18 -18
- package/dist/create-orm.js +62 -31
- package/dist/create-orm.js.map +1 -6
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -6
- package/dist/node-db-context-executor.d.ts +28 -28
- package/dist/node-db-context-executor.js +125 -117
- package/dist/node-db-context-executor.js.map +1 -6
- package/dist/types/db-conn.d.ts +37 -37
- package/dist/types/db-conn.js +26 -17
- package/dist/types/db-conn.js.map +1 -6
- package/package.json +9 -9
- package/src/connections/mssql-db-conn.ts +22 -22
- package/src/connections/mysql-db-conn.ts +27 -27
- package/src/connections/postgresql-db-conn.ts +16 -16
- package/src/create-db-conn.ts +7 -7
- package/src/create-orm.ts +21 -21
- package/src/index.ts +3 -3
- package/src/node-db-context-executor.ts +32 -32
- package/src/types/db-conn.ts +40 -40
package/dist/create-orm.js
CHANGED
|
@@ -1,34 +1,65 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createDbContext
|
|
3
|
-
} from "@simplysm/orm-common";
|
|
1
|
+
import { createDbContext, } from "@simplysm/orm-common";
|
|
4
2
|
import { NodeDbContextExecutor } from "./node-db-context-executor.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Node.js ORM 팩토리 함수
|
|
5
|
+
*
|
|
6
|
+
* DbContext와 DB 연결을 관리하는 인스턴스를 생성한다.
|
|
7
|
+
* DbContext 정의와 연결 설정을 받아 트랜잭션을 관리한다.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const MyDb = defineDbContext({
|
|
12
|
+
* user: (db) => queryable(db, User),
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* const orm = createOrm(MyDb, {
|
|
16
|
+
* dialect: "mysql",
|
|
17
|
+
* host: "localhost",
|
|
18
|
+
* port: 3306,
|
|
19
|
+
* username: "root",
|
|
20
|
+
* password: "password",
|
|
21
|
+
* database: "mydb",
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // 트랜잭션 내에서 실행
|
|
25
|
+
* await orm.connect(async (db) => {
|
|
26
|
+
* const users = await db.user().execute();
|
|
27
|
+
* return users;
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* // 트랜잭션 없이 실행
|
|
31
|
+
* await orm.connectWithoutTransaction(async (db) => {
|
|
32
|
+
* const users = await db.user().execute();
|
|
33
|
+
* return users;
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function createOrm(dbContextDef, config, options) {
|
|
38
|
+
function _createDbContext() {
|
|
39
|
+
// options의 database를 우선 사용, 없으면 config에서
|
|
40
|
+
const database = options?.database ?? ("database" in config ? config.database : undefined);
|
|
41
|
+
if (database == null || database === "") {
|
|
42
|
+
throw new Error("database는 필수입니다");
|
|
43
|
+
}
|
|
44
|
+
// options의 schema를 우선 사용, 없으면 config에서
|
|
45
|
+
const schema = options?.schema ?? ("schema" in config ? config.schema : undefined);
|
|
46
|
+
return createDbContext(dbContextDef, new NodeDbContextExecutor(config), {
|
|
47
|
+
database,
|
|
48
|
+
schema,
|
|
49
|
+
});
|
|
10
50
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
async connectWithoutTransaction(callback) {
|
|
26
|
-
const db = _createDbContext();
|
|
27
|
-
return db.connectWithoutTransaction(async () => callback(db));
|
|
28
|
-
}
|
|
29
|
-
};
|
|
51
|
+
return {
|
|
52
|
+
dbContextDef,
|
|
53
|
+
config,
|
|
54
|
+
options,
|
|
55
|
+
async connect(callback, isolationLevel) {
|
|
56
|
+
const db = _createDbContext();
|
|
57
|
+
return db.connect(async () => callback(db), isolationLevel);
|
|
58
|
+
},
|
|
59
|
+
async connectWithoutTransaction(callback) {
|
|
60
|
+
const db = _createDbContext();
|
|
61
|
+
return db.connectWithoutTransaction(async () => callback(db));
|
|
62
|
+
},
|
|
63
|
+
};
|
|
30
64
|
}
|
|
31
|
-
|
|
32
|
-
createOrm
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=create-orm.js.map
|
|
65
|
+
//# sourceMappingURL=create-orm.js.map
|
package/dist/create-orm.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/create-orm.ts"],
|
|
4
|
-
"mappings": "AAAA;AAAA,EACE;AAAA,OAIK;AAEP,SAAS,6BAA6B;AAoF/B,SAAS,UACd,cACA,QACA,SACW;AACX,WAAS,mBAA4C;AAEnD,UAAM,WAAW,SAAS,aAAa,cAAc,SAAS,OAAO,WAAW;AAChF,QAAI,YAAY,QAAQ,aAAa,IAAI;AACvC,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAGA,UAAM,SAAS,SAAS,WAAW,YAAY,SAAS,OAAO,SAAS;AAExE,WAAO,gBAAgB,cAAc,IAAI,sBAAsB,MAAM,GAAG;AAAA,MACtE;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,QAAQ,UAAU,gBAAiB;AACvC,YAAM,KAAK,iBAAiB;AAC5B,aAAO,GAAG,QAAQ,YAAY,SAAS,EAAE,GAAG,cAAc;AAAA,IAC5D;AAAA,IACA,MAAM,0BAA0B,UAAU;AACxC,YAAM,KAAK,iBAAiB;AAC5B,aAAO,GAAG,0BAA0B,YAAY,SAAS,EAAE,CAAC;AAAA,IAC9D;AAAA,EACF;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"create-orm.js","sourceRoot":"","sources":["..\\src\\create-orm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAkDnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,SAAS,CACvB,YAAkB,EAClB,MAAoB,EACpB,OAAoB;IAEpB,SAAS,gBAAgB;QACvB,yCAAyC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3F,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QAED,uCAAuC;QACvC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEnF,OAAO,eAAe,CAAC,YAAY,EAAE,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE;YACtE,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,YAAY;QACZ,MAAM;QACN,OAAO;QACP,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAe;YACrC,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,CAAC,yBAAyB,CAAC,QAAQ;YACtC,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC,yBAAyB,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
// 타입
|
|
1
2
|
export * from "./types/db-conn.js";
|
|
3
|
+
// 연결
|
|
2
4
|
export * from "./connections/mssql-db-conn.js";
|
|
3
5
|
export * from "./connections/mysql-db-conn.js";
|
|
4
6
|
export * from "./connections/postgresql-db-conn.js";
|
|
7
|
+
// 코어
|
|
5
8
|
export * from "./create-db-conn.js";
|
|
6
9
|
export * from "./node-db-context-executor.js";
|
|
7
10
|
export * from "./create-orm.js";
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts"],
|
|
4
|
-
"mappings": "AACA,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["..\\src\\index.ts"],"names":[],"mappings":"AAAA,KAAK;AACL,cAAc,iBAAiB,CAAC;AAEhC,KAAK;AACL,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AAEjD,KAAK;AACL,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DbContextExecutor, IsolationLevel, QueryDef, ResultMeta, ColumnMeta, DataRecord } from "@simplysm/orm-common";
|
|
2
2
|
import type { DbConnConfig } from "./types/db-conn";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Node.js 환경용 DbContextExecutor
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* DbContext에서 사용하는 실제 DB 연결을 처리하는 실행자.
|
|
7
7
|
*/
|
|
8
8
|
export declare class NodeDbContextExecutor implements DbContextExecutor {
|
|
9
9
|
private readonly _config;
|
|
@@ -11,61 +11,61 @@ export declare class NodeDbContextExecutor implements DbContextExecutor {
|
|
|
11
11
|
private readonly _dialect;
|
|
12
12
|
constructor(_config: DbConnConfig);
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* DB 연결을 수립한다
|
|
15
15
|
*/
|
|
16
16
|
connect(): Promise<void>;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* DB 연결을 종료한다
|
|
19
19
|
*
|
|
20
|
-
* @throws {Error}
|
|
20
|
+
* @throws {Error} 연결되지 않은 경우
|
|
21
21
|
*/
|
|
22
22
|
close(): Promise<void>;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* 트랜잭션을 시작한다
|
|
25
25
|
*
|
|
26
|
-
* @param isolationLevel -
|
|
27
|
-
* @throws {Error}
|
|
26
|
+
* @param isolationLevel - 트랜잭션 격리 수준
|
|
27
|
+
* @throws {Error} 연결되지 않은 경우
|
|
28
28
|
*/
|
|
29
29
|
beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* 트랜잭션을 커밋한다
|
|
32
32
|
*
|
|
33
|
-
* @throws {Error}
|
|
33
|
+
* @throws {Error} 연결되지 않은 경우
|
|
34
34
|
*/
|
|
35
35
|
commitTransaction(): Promise<void>;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* 트랜잭션을 롤백한다
|
|
38
38
|
*
|
|
39
|
-
* @throws {Error}
|
|
39
|
+
* @throws {Error} 연결되지 않은 경우
|
|
40
40
|
*/
|
|
41
41
|
rollbackTransaction(): Promise<void>;
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
43
|
+
* 파라미터화된 쿼리를 실행한다
|
|
44
44
|
*
|
|
45
|
-
* @param query - SQL
|
|
46
|
-
* @param params -
|
|
47
|
-
* @returns
|
|
48
|
-
* @throws {Error}
|
|
45
|
+
* @param query - SQL 쿼리 문자열
|
|
46
|
+
* @param params - 쿼리 파라미터 배열
|
|
47
|
+
* @returns 쿼리 결과 배열
|
|
48
|
+
* @throws {Error} 연결되지 않은 경우
|
|
49
49
|
*/
|
|
50
50
|
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
51
51
|
/**
|
|
52
|
-
*
|
|
52
|
+
* 대량 데이터 삽입 (네이티브 bulk API 사용)
|
|
53
53
|
*
|
|
54
|
-
* @param tableName -
|
|
55
|
-
* @param columnMetas -
|
|
56
|
-
* @param records -
|
|
57
|
-
* @throws {Error}
|
|
54
|
+
* @param tableName - 대상 테이블 이름
|
|
55
|
+
* @param columnMetas - 컬럼 메타데이터
|
|
56
|
+
* @param records - 삽입할 레코드 배열
|
|
57
|
+
* @throws {Error} 연결되지 않은 경우
|
|
58
58
|
*/
|
|
59
59
|
bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: DataRecord[]): Promise<void>;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
61
|
+
* QueryDef 배열을 실행한다
|
|
62
62
|
*
|
|
63
|
-
*
|
|
63
|
+
* QueryDef를 SQL로 변환하여 실행하고, ResultMeta를 사용하여 결과를 파싱한다.
|
|
64
64
|
*
|
|
65
|
-
* @param defs - QueryDef
|
|
66
|
-
* @param resultMetas -
|
|
67
|
-
* @returns
|
|
68
|
-
* @throws {Error}
|
|
65
|
+
* @param defs - 실행할 QueryDef 배열
|
|
66
|
+
* @param resultMetas - 결과 파싱 메타데이터 배열 (타입 변환에 사용)
|
|
67
|
+
* @returns 각 QueryDef의 실행 결과 배열
|
|
68
|
+
* @throws {Error} 연결되지 않은 경우
|
|
69
69
|
*/
|
|
70
70
|
executeDefs<T = DataRecord>(defs: QueryDef[], resultMetas?: (ResultMeta | undefined)[]): Promise<T[][]>;
|
|
71
71
|
private _requireConn;
|
|
@@ -2,124 +2,132 @@ import { SdError } from "@simplysm/core-common";
|
|
|
2
2
|
import { createQueryBuilder, parseQueryResult } from "@simplysm/orm-common";
|
|
3
3
|
import { DB_CONN_ERRORS, getDialectFromConfig } from "./types/db-conn.js";
|
|
4
4
|
import { createDbConn } from "./create-db-conn.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
await this._conn.connect();
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Close DB connection
|
|
21
|
-
*
|
|
22
|
-
* @throws {Error} When not connected
|
|
23
|
-
*/
|
|
24
|
-
async close() {
|
|
25
|
-
const conn = this._requireConn();
|
|
26
|
-
await conn.close();
|
|
27
|
-
this._conn = void 0;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Begin transaction
|
|
31
|
-
*
|
|
32
|
-
* @param isolationLevel - Transaction isolation level
|
|
33
|
-
* @throws {Error} When not connected
|
|
34
|
-
*/
|
|
35
|
-
async beginTransaction(isolationLevel) {
|
|
36
|
-
const conn = this._requireConn();
|
|
37
|
-
await conn.beginTransaction(isolationLevel);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Commit transaction
|
|
41
|
-
*
|
|
42
|
-
* @throws {Error} When not connected
|
|
43
|
-
*/
|
|
44
|
-
async commitTransaction() {
|
|
45
|
-
const conn = this._requireConn();
|
|
46
|
-
await conn.commitTransaction();
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Rollback transaction
|
|
50
|
-
*
|
|
51
|
-
* @throws {Error} When not connected
|
|
52
|
-
*/
|
|
53
|
-
async rollbackTransaction() {
|
|
54
|
-
const conn = this._requireConn();
|
|
55
|
-
await conn.rollbackTransaction();
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Execute parameterized query
|
|
59
|
-
*
|
|
60
|
-
* @param query - SQL query string
|
|
61
|
-
* @param params - Query parameter array
|
|
62
|
-
* @returns Query result array
|
|
63
|
-
* @throws {Error} When not connected
|
|
64
|
-
*/
|
|
65
|
-
async executeParametrized(query, params) {
|
|
66
|
-
const conn = this._requireConn();
|
|
67
|
-
return conn.executeParametrized(query, params);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Bulk insert data (using native bulk API)
|
|
71
|
-
*
|
|
72
|
-
* @param tableName - Target table name
|
|
73
|
-
* @param columnMetas - Column metadata
|
|
74
|
-
* @param records - Record array to insert
|
|
75
|
-
* @throws {Error} When not connected
|
|
76
|
-
*/
|
|
77
|
-
async bulkInsert(tableName, columnMetas, records) {
|
|
78
|
-
const conn = this._requireConn();
|
|
79
|
-
await conn.bulkInsert(tableName, columnMetas, records);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Execute QueryDef array
|
|
83
|
-
*
|
|
84
|
-
* Converts QueryDef to SQL and executes, parses results using ResultMeta.
|
|
85
|
-
*
|
|
86
|
-
* @param defs - QueryDef array to execute
|
|
87
|
-
* @param resultMetas - Result parsing metadata array (used for type conversion)
|
|
88
|
-
* @returns Array of execution results for each QueryDef
|
|
89
|
-
* @throws {Error} When not connected
|
|
90
|
-
*/
|
|
91
|
-
async executeDefs(defs, resultMetas) {
|
|
92
|
-
const conn = this._requireConn();
|
|
93
|
-
const builder = createQueryBuilder(this._dialect);
|
|
94
|
-
if (resultMetas != null && resultMetas.every((item) => item == null)) {
|
|
95
|
-
const combinedSql = defs.map((def) => builder.build(def).sql).join("\n");
|
|
96
|
-
await conn.execute([combinedSql]);
|
|
97
|
-
return defs.map(() => []);
|
|
5
|
+
/**
|
|
6
|
+
* Node.js 환경용 DbContextExecutor
|
|
7
|
+
*
|
|
8
|
+
* DbContext에서 사용하는 실제 DB 연결을 처리하는 실행자.
|
|
9
|
+
*/
|
|
10
|
+
export class NodeDbContextExecutor {
|
|
11
|
+
_config;
|
|
12
|
+
_conn;
|
|
13
|
+
_dialect;
|
|
14
|
+
constructor(_config) {
|
|
15
|
+
this._config = _config;
|
|
16
|
+
this._dialect = getDialectFromConfig(_config);
|
|
98
17
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const targetResultSet = buildResult.resultSetIndex != null ? rawResults[buildResult.resultSetIndex] : rawResults[0];
|
|
106
|
-
if (meta != null) {
|
|
107
|
-
const parsed = await parseQueryResult(targetResultSet, meta);
|
|
108
|
-
results.push(parsed ?? []);
|
|
109
|
-
} else {
|
|
110
|
-
results.push(targetResultSet);
|
|
111
|
-
}
|
|
18
|
+
/**
|
|
19
|
+
* DB 연결을 수립한다
|
|
20
|
+
*/
|
|
21
|
+
async connect() {
|
|
22
|
+
this._conn = await createDbConn(this._config);
|
|
23
|
+
await this._conn.connect();
|
|
112
24
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
25
|
+
/**
|
|
26
|
+
* DB 연결을 종료한다
|
|
27
|
+
*
|
|
28
|
+
* @throws {Error} 연결되지 않은 경우
|
|
29
|
+
*/
|
|
30
|
+
async close() {
|
|
31
|
+
const conn = this._requireConn();
|
|
32
|
+
await conn.close();
|
|
33
|
+
this._conn = undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 트랜잭션을 시작한다
|
|
37
|
+
*
|
|
38
|
+
* @param isolationLevel - 트랜잭션 격리 수준
|
|
39
|
+
* @throws {Error} 연결되지 않은 경우
|
|
40
|
+
*/
|
|
41
|
+
async beginTransaction(isolationLevel) {
|
|
42
|
+
const conn = this._requireConn();
|
|
43
|
+
await conn.beginTransaction(isolationLevel);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 트랜잭션을 커밋한다
|
|
47
|
+
*
|
|
48
|
+
* @throws {Error} 연결되지 않은 경우
|
|
49
|
+
*/
|
|
50
|
+
async commitTransaction() {
|
|
51
|
+
const conn = this._requireConn();
|
|
52
|
+
await conn.commitTransaction();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 트랜잭션을 롤백한다
|
|
56
|
+
*
|
|
57
|
+
* @throws {Error} 연결되지 않은 경우
|
|
58
|
+
*/
|
|
59
|
+
async rollbackTransaction() {
|
|
60
|
+
const conn = this._requireConn();
|
|
61
|
+
await conn.rollbackTransaction();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 파라미터화된 쿼리를 실행한다
|
|
65
|
+
*
|
|
66
|
+
* @param query - SQL 쿼리 문자열
|
|
67
|
+
* @param params - 쿼리 파라미터 배열
|
|
68
|
+
* @returns 쿼리 결과 배열
|
|
69
|
+
* @throws {Error} 연결되지 않은 경우
|
|
70
|
+
*/
|
|
71
|
+
async executeParametrized(query, params) {
|
|
72
|
+
const conn = this._requireConn();
|
|
73
|
+
return conn.executeParametrized(query, params);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 대량 데이터 삽입 (네이티브 bulk API 사용)
|
|
77
|
+
*
|
|
78
|
+
* @param tableName - 대상 테이블 이름
|
|
79
|
+
* @param columnMetas - 컬럼 메타데이터
|
|
80
|
+
* @param records - 삽입할 레코드 배열
|
|
81
|
+
* @throws {Error} 연결되지 않은 경우
|
|
82
|
+
*/
|
|
83
|
+
async bulkInsert(tableName, columnMetas, records) {
|
|
84
|
+
const conn = this._requireConn();
|
|
85
|
+
await conn.bulkInsert(tableName, columnMetas, records);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* QueryDef 배열을 실행한다
|
|
89
|
+
*
|
|
90
|
+
* QueryDef를 SQL로 변환하여 실행하고, ResultMeta를 사용하여 결과를 파싱한다.
|
|
91
|
+
*
|
|
92
|
+
* @param defs - 실행할 QueryDef 배열
|
|
93
|
+
* @param resultMetas - 결과 파싱 메타데이터 배열 (타입 변환에 사용)
|
|
94
|
+
* @returns 각 QueryDef의 실행 결과 배열
|
|
95
|
+
* @throws {Error} 연결되지 않은 경우
|
|
96
|
+
*/
|
|
97
|
+
async executeDefs(defs, resultMetas) {
|
|
98
|
+
const conn = this._requireConn();
|
|
99
|
+
const builder = createQueryBuilder(this._dialect);
|
|
100
|
+
// 데이터를 가져올 필요가 없도록 설정된 경우, 단일 쿼리로 한 번의 요청을 보낸다
|
|
101
|
+
// 결과가 필요 없으므로 인터페이스 계약을 유지하기 위해 defs.length에 맞는 빈 배열을 반환
|
|
102
|
+
if (resultMetas != null && resultMetas.every((item) => item == null)) {
|
|
103
|
+
const combinedSql = defs.map((def) => builder.build(def).sql).join("\n");
|
|
104
|
+
await conn.execute([combinedSql]);
|
|
105
|
+
return defs.map(() => []);
|
|
106
|
+
}
|
|
107
|
+
// 각 def를 개별적으로 실행
|
|
108
|
+
const results = [];
|
|
109
|
+
for (let i = 0; i < defs.length; i++) {
|
|
110
|
+
const def = defs[i];
|
|
111
|
+
const meta = resultMetas?.[i];
|
|
112
|
+
const buildResult = builder.build(def);
|
|
113
|
+
const rawResults = await conn.execute([buildResult.sql]);
|
|
114
|
+
// resultSetIndex가 지정된 경우 해당 인덱스의 결과 집합을 사용
|
|
115
|
+
const targetResultSet = buildResult.resultSetIndex != null ? rawResults[buildResult.resultSetIndex] : rawResults[0];
|
|
116
|
+
if (meta != null) {
|
|
117
|
+
const parsed = await parseQueryResult(targetResultSet, meta);
|
|
118
|
+
results.push(parsed ?? []);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
results.push(targetResultSet);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return results;
|
|
125
|
+
}
|
|
126
|
+
_requireConn() {
|
|
127
|
+
if (this._conn == null) {
|
|
128
|
+
throw new SdError(DB_CONN_ERRORS.NOT_CONNECTED);
|
|
129
|
+
}
|
|
130
|
+
return this._conn;
|
|
118
131
|
}
|
|
119
|
-
return this._conn;
|
|
120
|
-
}
|
|
121
132
|
}
|
|
122
|
-
|
|
123
|
-
NodeDbContextExecutor
|
|
124
|
-
};
|
|
125
|
-
//# sourceMappingURL=node-db-context-executor.js.map
|
|
133
|
+
//# sourceMappingURL=node-db-context-executor.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 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,EASjB,MAAM,UAAyB;AAC7B,SAAK,QAAQ,MAAM,aAAa,KAAK,OAAO;AAC5C,UAAM,KAAK,MAAM,QAAQ;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,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
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"node-db-context-executor.js","sourceRoot":"","sources":["..\\src\\node-db-context-executor.ts"],"names":[],"mappings":"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"}
|
package/dist/types/db-conn.d.ts
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
1
|
import type { EventEmitter } from "@simplysm/core-common";
|
|
2
2
|
import type { ColumnMeta, Dialect, IsolationLevel } from "@simplysm/orm-common";
|
|
3
3
|
/**
|
|
4
|
-
* DB
|
|
4
|
+
* DB 연결 수립 타임아웃 (10초)
|
|
5
5
|
*/
|
|
6
6
|
export declare const DB_CONN_CONNECT_TIMEOUT: number;
|
|
7
7
|
/**
|
|
8
|
-
* DB
|
|
8
|
+
* DB 쿼리 기본 타임아웃 (10분)
|
|
9
9
|
*/
|
|
10
10
|
export declare const DB_CONN_DEFAULT_TIMEOUT: number;
|
|
11
11
|
/**
|
|
12
|
-
* DB
|
|
12
|
+
* DB 연결 오류 메시지
|
|
13
13
|
*/
|
|
14
14
|
export declare const DB_CONN_ERRORS: {
|
|
15
|
-
readonly NOT_CONNECTED: "'Connection'
|
|
16
|
-
readonly ALREADY_CONNECTED: "'Connection'
|
|
15
|
+
readonly NOT_CONNECTED: "'Connection'이 연결되어 있지 않습니다.";
|
|
16
|
+
readonly ALREADY_CONNECTED: "'Connection'이 이미 연결되어 있습니다.";
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* 저수준 DB 연결 인터페이스
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
* - {@link MysqlDbConn} - MySQL
|
|
23
|
-
* - {@link MssqlDbConn} - MSSQL
|
|
24
|
-
* - {@link PostgresqlDbConn} - PostgreSQL
|
|
21
|
+
* 각 DBMS 구현체가 이 인터페이스를 구현한다.
|
|
22
|
+
* - {@link MysqlDbConn} - MySQL 연결
|
|
23
|
+
* - {@link MssqlDbConn} - MSSQL 연결
|
|
24
|
+
* - {@link PostgresqlDbConn} - PostgreSQL 연결
|
|
25
25
|
*
|
|
26
26
|
* @remarks
|
|
27
|
-
*
|
|
27
|
+
* EventEmitter를 상속하며 'close' 이벤트를 발생시킨다.
|
|
28
28
|
*/
|
|
29
29
|
export interface DbConn extends EventEmitter<{
|
|
30
30
|
close: void;
|
|
31
31
|
}> {
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* 연결 설정
|
|
34
34
|
*/
|
|
35
35
|
config: DbConnConfig;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* 연결 여부
|
|
38
38
|
*/
|
|
39
39
|
isConnected: boolean;
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* 트랜잭션 진행 여부
|
|
42
42
|
*/
|
|
43
43
|
isInTransaction: boolean;
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
45
|
+
* DB 연결을 수립한다
|
|
46
46
|
*/
|
|
47
47
|
connect(): Promise<void>;
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* DB 연결을 종료한다
|
|
50
50
|
*/
|
|
51
51
|
close(): Promise<void>;
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
53
|
+
* 트랜잭션을 시작한다
|
|
54
54
|
*
|
|
55
|
-
* @param isolationLevel -
|
|
55
|
+
* @param isolationLevel - 격리 수준 (선택사항)
|
|
56
56
|
*/
|
|
57
57
|
beginTransaction(isolationLevel?: IsolationLevel): Promise<void>;
|
|
58
58
|
/**
|
|
59
|
-
*
|
|
59
|
+
* 트랜잭션을 커밋한다
|
|
60
60
|
*/
|
|
61
61
|
commitTransaction(): Promise<void>;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* 트랜잭션을 롤백한다
|
|
64
64
|
*/
|
|
65
65
|
rollbackTransaction(): Promise<void>;
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* SQL 쿼리 배열을 실행한다
|
|
68
68
|
*
|
|
69
|
-
* @param queries - SQL
|
|
70
|
-
* @returns
|
|
69
|
+
* @param queries - 실행할 SQL 문자열 배열
|
|
70
|
+
* @returns 각 쿼리의 결과 배열
|
|
71
71
|
*/
|
|
72
72
|
execute(queries: string[]): Promise<Record<string, unknown>[][]>;
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
74
|
+
* 파라미터화된 쿼리를 실행한다
|
|
75
75
|
*
|
|
76
|
-
* @param query - SQL
|
|
77
|
-
* @param params -
|
|
78
|
-
* @returns
|
|
76
|
+
* @param query - SQL 쿼리 문자열
|
|
77
|
+
* @param params - 바인딩 파라미터 (선택사항)
|
|
78
|
+
* @returns 결과 배열
|
|
79
79
|
*/
|
|
80
80
|
executeParametrized(query: string, params?: unknown[]): Promise<Record<string, unknown>[][]>;
|
|
81
81
|
/**
|
|
82
|
-
* Bulk INSERT (
|
|
82
|
+
* Bulk INSERT (네이티브 bulk API 사용)
|
|
83
83
|
*
|
|
84
84
|
* - MSSQL: tedious BulkLoad
|
|
85
|
-
* - MySQL: LOAD DATA LOCAL INFILE (
|
|
85
|
+
* - MySQL: LOAD DATA LOCAL INFILE (임시 파일)
|
|
86
86
|
* - PostgreSQL: COPY FROM STDIN
|
|
87
87
|
*
|
|
88
|
-
* @param tableName -
|
|
89
|
-
* @param columnMetas -
|
|
90
|
-
* @param records -
|
|
88
|
+
* @param tableName - 테이블 이름 (database.table 또는 database.schema.table)
|
|
89
|
+
* @param columnMetas - 컬럼 이름 → ColumnMeta 매핑
|
|
90
|
+
* @param records - 삽입할 레코드 배열
|
|
91
91
|
*/
|
|
92
92
|
bulkInsert(tableName: string, columnMetas: Record<string, ColumnMeta>, records: Record<string, unknown>[]): Promise<void>;
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
|
-
* DB
|
|
95
|
+
* DB 연결 설정 타입 (dialect별 분기)
|
|
96
96
|
*/
|
|
97
97
|
export type DbConnConfig = MysqlDbConnConfig | MssqlDbConnConfig | PostgresqlDbConnConfig;
|
|
98
98
|
/**
|
|
99
|
-
* MySQL
|
|
99
|
+
* MySQL 연결 설정
|
|
100
100
|
*/
|
|
101
101
|
export interface MysqlDbConnConfig {
|
|
102
102
|
dialect: "mysql";
|
|
@@ -108,7 +108,7 @@ export interface MysqlDbConnConfig {
|
|
|
108
108
|
defaultIsolationLevel?: IsolationLevel;
|
|
109
109
|
}
|
|
110
110
|
/**
|
|
111
|
-
* MSSQL
|
|
111
|
+
* MSSQL 연결 설정
|
|
112
112
|
*/
|
|
113
113
|
export interface MssqlDbConnConfig {
|
|
114
114
|
dialect: "mssql" | "mssql-azure";
|
|
@@ -121,7 +121,7 @@ export interface MssqlDbConnConfig {
|
|
|
121
121
|
defaultIsolationLevel?: IsolationLevel;
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
|
-
* PostgreSQL
|
|
124
|
+
* PostgreSQL 연결 설정
|
|
125
125
|
*/
|
|
126
126
|
export interface PostgresqlDbConnConfig {
|
|
127
127
|
dialect: "postgresql";
|
|
@@ -134,7 +134,7 @@ export interface PostgresqlDbConnConfig {
|
|
|
134
134
|
defaultIsolationLevel?: IsolationLevel;
|
|
135
135
|
}
|
|
136
136
|
/**
|
|
137
|
-
*
|
|
137
|
+
* DbConnConfig에서 Dialect를 추출한다
|
|
138
138
|
*/
|
|
139
139
|
export declare function getDialectFromConfig(config: DbConnConfig): Dialect;
|
|
140
140
|
//# sourceMappingURL=db-conn.d.ts.map
|