@simplysm/orm-common 13.0.99 → 14.0.1
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/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +312 -276
- package/dist/create-db-context.js.map +1 -6
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/column-ddl.js +41 -35
- package/dist/ddl/column-ddl.js.map +1 -6
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +200 -142
- package/dist/ddl/initialize.js.map +1 -6
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/relation-ddl.js +55 -48
- package/dist/ddl/relation-ddl.js.map +1 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/schema-ddl.js +21 -15
- package/dist/ddl/schema-ddl.js.map +1 -6
- package/dist/ddl/table-ddl.d.ts +20 -20
- package/dist/ddl/table-ddl.js +139 -93
- package/dist/ddl/table-ddl.js.map +1 -6
- package/dist/define-db-context.js +10 -13
- package/dist/define-db-context.js.map +1 -6
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/errors/db-transaction-error.js +53 -19
- package/dist/errors/db-transaction-error.js.map +1 -6
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +94 -40
- package/dist/exec/executable.js.map +1 -6
- package/dist/exec/queryable.d.ts +97 -97
- package/dist/exec/queryable.js +1310 -1204
- package/dist/exec/queryable.js.map +1 -6
- package/dist/exec/search-parser.d.ts +31 -31
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/exec/search-parser.js +158 -59
- package/dist/exec/search-parser.js.map +1 -6
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr-unit.js +24 -18
- package/dist/expr/expr-unit.js.map +1 -6
- package/dist/expr/expr.d.ts +6 -6
- package/dist/expr/expr.js +1872 -1844
- package/dist/expr/expr.js.map +1 -6
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -6
- package/dist/models/system-migration.js +7 -7
- package/dist/models/system-migration.js.map +1 -6
- package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
- package/dist/query-builder/base/expr-renderer-base.js +27 -21
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
- package/dist/query-builder/base/query-builder-base.d.ts +21 -21
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +90 -80
- package/dist/query-builder/base/query-builder-base.js.map +1 -6
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/query-builder/query-builder.js +13 -13
- package/dist/query-builder/query-builder.js.map +1 -6
- package/dist/schema/factory/column-builder.d.ts +84 -84
- package/dist/schema/factory/column-builder.js +248 -185
- package/dist/schema/factory/column-builder.js.map +1 -6
- package/dist/schema/factory/index-builder.d.ts +38 -38
- package/dist/schema/factory/index-builder.js +144 -85
- package/dist/schema/factory/index-builder.js.map +1 -6
- package/dist/schema/factory/relation-builder.d.ts +91 -91
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +274 -136
- package/dist/schema/factory/relation-builder.js.map +1 -6
- package/dist/schema/procedure-builder.d.ts +51 -51
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +205 -131
- package/dist/schema/procedure-builder.js.map +1 -6
- package/dist/schema/table-builder.d.ts +55 -55
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +274 -205
- package/dist/schema/table-builder.js.map +1 -6
- package/dist/schema/view-builder.d.ts +44 -44
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +189 -116
- package/dist/schema/view-builder.js.map +1 -6
- package/dist/types/column.js +60 -30
- package/dist/types/column.js.map +1 -6
- package/dist/types/db-context-def.d.ts +9 -9
- package/dist/types/db-context-def.js +2 -1
- package/dist/types/db-context-def.js.map +1 -6
- package/dist/types/db.d.ts +47 -47
- package/dist/types/db.js +15 -5
- package/dist/types/db.js.map +1 -6
- package/dist/types/expr.d.ts +81 -81
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/expr.js +3 -1
- package/dist/types/expr.js.map +1 -6
- package/dist/types/query-def.d.ts +46 -46
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/types/query-def.js +31 -24
- package/dist/types/query-def.js.map +1 -6
- package/dist/utils/result-parser.js +362 -221
- package/dist/utils/result-parser.js.map +1 -6
- package/package.json +5 -7
- package/src/create-db-context.ts +31 -31
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +38 -38
- package/src/ddl/relation-ddl.ts +6 -6
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +24 -24
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +134 -134
- package/src/exec/search-parser.ts +50 -50
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +13 -13
- package/src/index.ts +8 -8
- package/src/models/system-migration.ts +1 -1
- package/src/query-builder/base/expr-renderer-base.ts +21 -21
- package/src/query-builder/base/query-builder-base.ts +33 -33
- package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -11
- package/src/query-builder/mssql/mssql-query-builder.ts +11 -11
- package/src/query-builder/mysql/mysql-expr-renderer.ts +15 -15
- package/src/query-builder/mysql/mysql-query-builder.ts +3 -3
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +9 -9
- package/src/query-builder/postgresql/postgresql-query-builder.ts +7 -7
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +86 -86
- package/src/schema/factory/index-builder.ts +38 -38
- package/src/schema/factory/relation-builder.ts +93 -93
- package/src/schema/procedure-builder.ts +52 -52
- package/src/schema/table-builder.ts +56 -56
- package/src/schema/view-builder.ts +45 -45
- package/src/types/column.ts +1 -1
- package/src/types/db-context-def.ts +15 -15
- package/src/types/db.ts +50 -50
- package/src/types/expr.ts +103 -103
- package/src/types/query-def.ts +50 -50
- package/src/utils/result-parser.ts +39 -39
- package/README.md +0 -192
- package/docs/core.md +0 -234
- package/docs/expression.md +0 -234
- package/docs/query-builder.md +0 -93
- package/docs/queryable.md +0 -198
- package/docs/schema-builders.md +0 -463
- package/docs/types.md +0 -445
- package/docs/utilities.md +0 -27
- package/tests/db-context/create-db-context.spec.ts +0 -193
- package/tests/db-context/define-db-context.spec.ts +0 -17
- package/tests/ddl/basic.expected.ts +0 -341
- package/tests/ddl/basic.spec.ts +0 -557
- package/tests/ddl/column-builder.expected.ts +0 -310
- package/tests/ddl/column-builder.spec.ts +0 -525
- package/tests/ddl/index-builder.expected.ts +0 -38
- package/tests/ddl/index-builder.spec.ts +0 -148
- package/tests/ddl/procedure-builder.expected.ts +0 -52
- package/tests/ddl/procedure-builder.spec.ts +0 -128
- package/tests/ddl/relation-builder.expected.ts +0 -36
- package/tests/ddl/relation-builder.spec.ts +0 -171
- package/tests/ddl/table-builder.expected.ts +0 -113
- package/tests/ddl/table-builder.spec.ts +0 -399
- package/tests/ddl/view-builder.expected.ts +0 -38
- package/tests/ddl/view-builder.spec.ts +0 -116
- package/tests/dml/delete.expected.ts +0 -96
- package/tests/dml/delete.spec.ts +0 -127
- package/tests/dml/insert.expected.ts +0 -192
- package/tests/dml/insert.spec.ts +0 -210
- package/tests/dml/update.expected.ts +0 -176
- package/tests/dml/update.spec.ts +0 -222
- package/tests/dml/upsert.expected.ts +0 -215
- package/tests/dml/upsert.spec.ts +0 -190
- package/tests/errors/queryable-errors.spec.ts +0 -126
- package/tests/escape.spec.ts +0 -59
- package/tests/examples/pivot.expected.ts +0 -211
- package/tests/examples/pivot.spec.ts +0 -200
- package/tests/examples/sampling.expected.ts +0 -69
- package/tests/examples/sampling.spec.ts +0 -42
- package/tests/examples/unpivot.expected.ts +0 -120
- package/tests/examples/unpivot.spec.ts +0 -161
- package/tests/exec/search-parser.spec.ts +0 -267
- package/tests/executable/basic.expected.ts +0 -18
- package/tests/executable/basic.spec.ts +0 -54
- package/tests/expr/comparison.expected.ts +0 -282
- package/tests/expr/comparison.spec.ts +0 -334
- package/tests/expr/conditional.expected.ts +0 -134
- package/tests/expr/conditional.spec.ts +0 -249
- package/tests/expr/date.expected.ts +0 -332
- package/tests/expr/date.spec.ts +0 -459
- package/tests/expr/math.expected.ts +0 -62
- package/tests/expr/math.spec.ts +0 -59
- package/tests/expr/string.expected.ts +0 -218
- package/tests/expr/string.spec.ts +0 -300
- package/tests/expr/utility.expected.ts +0 -147
- package/tests/expr/utility.spec.ts +0 -155
- package/tests/select/basic.expected.ts +0 -322
- package/tests/select/basic.spec.ts +0 -433
- package/tests/select/filter.expected.ts +0 -357
- package/tests/select/filter.spec.ts +0 -954
- package/tests/select/group.expected.ts +0 -169
- package/tests/select/group.spec.ts +0 -159
- package/tests/select/join.expected.ts +0 -582
- package/tests/select/join.spec.ts +0 -692
- package/tests/select/order.expected.ts +0 -150
- package/tests/select/order.spec.ts +0 -140
- package/tests/select/recursive-cte.expected.ts +0 -244
- package/tests/select/recursive-cte.spec.ts +0 -514
- package/tests/select/result-meta.spec.ts +0 -270
- package/tests/select/subquery.expected.ts +0 -363
- package/tests/select/subquery.spec.ts +0 -441
- package/tests/select/view.expected.ts +0 -155
- package/tests/select/view.spec.ts +0 -235
- package/tests/select/window.expected.ts +0 -345
- package/tests/select/window.spec.ts +0 -433
- package/tests/setup/MockExecutor.ts +0 -18
- package/tests/setup/TestDbContext.ts +0 -59
- package/tests/setup/models/Company.ts +0 -13
- package/tests/setup/models/Employee.ts +0 -10
- package/tests/setup/models/MonthlySales.ts +0 -11
- package/tests/setup/models/Post.ts +0 -16
- package/tests/setup/models/Sales.ts +0 -10
- package/tests/setup/models/User.ts +0 -19
- package/tests/setup/procedure/GetAllUsers.ts +0 -9
- package/tests/setup/procedure/GetUserById.ts +0 -12
- package/tests/setup/test-utils.ts +0 -72
- package/tests/setup/views/ActiveUsers.ts +0 -8
- package/tests/setup/views/UserSummary.ts +0 -11
- package/tests/types/nullable-queryable-record.spec.ts +0 -97
- package/tests/utils/result-parser-perf.spec.ts +0 -143
- package/tests/utils/result-parser.spec.ts +0 -667
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 트랜잭션 관련 에러 코드
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* DBMS별 네이티브 에러 코드를 추상화하여 DBMS 독립적인 에러 처리를 지원한다
|
|
5
5
|
*/
|
|
6
6
|
export declare enum DbErrorCode {
|
|
7
|
-
/**
|
|
7
|
+
/** 활성 트랜잭션 없음 (ROLLBACK 시 트랜잭션 없음) */
|
|
8
8
|
NO_ACTIVE_TRANSACTION = "NO_ACTIVE_TRANSACTION",
|
|
9
|
-
/**
|
|
9
|
+
/** 트랜잭션 이미 시작됨 */
|
|
10
10
|
TRANSACTION_ALREADY_STARTED = "TRANSACTION_ALREADY_STARTED",
|
|
11
|
-
/**
|
|
11
|
+
/** 데드락 발생 */
|
|
12
12
|
DEADLOCK = "DEADLOCK",
|
|
13
|
-
/**
|
|
13
|
+
/** 잠금 타임아웃 */
|
|
14
14
|
LOCK_TIMEOUT = "LOCK_TIMEOUT"
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* 데이터베이스 트랜잭션 에러
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
* DBMS
|
|
19
|
+
* DBMS별 네이티브 에러를 표준화된 에러 코드로 래핑하여
|
|
20
|
+
* DBMS 독립적인 에러 처리를 지원한다
|
|
21
21
|
*
|
|
22
22
|
* @example
|
|
23
23
|
* ```typescript
|
|
@@ -26,7 +26,7 @@ export declare enum DbErrorCode {
|
|
|
26
26
|
* } catch (err) {
|
|
27
27
|
* if (err instanceof DbTransactionError) {
|
|
28
28
|
* if (err.code === DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
29
|
-
* //
|
|
29
|
+
* // 이미 롤백된 경우 무시
|
|
30
30
|
* return;
|
|
31
31
|
* }
|
|
32
32
|
* }
|
|
@@ -35,17 +35,17 @@ export declare enum DbErrorCode {
|
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
37
|
export declare class DbTransactionError extends Error {
|
|
38
|
-
/**
|
|
38
|
+
/** 표준화된 에러 코드 */
|
|
39
39
|
readonly code: DbErrorCode;
|
|
40
|
-
/**
|
|
40
|
+
/** 원본 DBMS 에러 (디버깅용) */
|
|
41
41
|
readonly originalError?: unknown | undefined;
|
|
42
42
|
readonly name = "DbTransactionError";
|
|
43
43
|
constructor(
|
|
44
|
-
/**
|
|
44
|
+
/** 표준화된 에러 코드 */
|
|
45
45
|
code: DbErrorCode,
|
|
46
|
-
/**
|
|
46
|
+
/** 에러 메시지 */
|
|
47
47
|
message: string,
|
|
48
|
-
/**
|
|
48
|
+
/** 원본 DBMS 에러 (디버깅용) */
|
|
49
49
|
originalError?: unknown | undefined);
|
|
50
50
|
}
|
|
51
51
|
//# sourceMappingURL=db-transaction-error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-transaction-error.d.ts","sourceRoot":"","sources":["..\\..\\src\\errors\\db-transaction-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,WAAW;IACrB,
|
|
1
|
+
{"version":3,"file":"db-transaction-error.d.ts","sourceRoot":"","sources":["..\\..\\src\\errors\\db-transaction-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,oBAAY,WAAW;IACrB,sCAAsC;IACtC,qBAAqB,0BAA0B;IAE/C,kBAAkB;IAClB,2BAA2B,gCAAgC;IAE3D,aAAa;IACb,QAAQ,aAAa;IAErB,cAAc;IACd,YAAY,iBAAiB;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAIzC,iBAAiB;aACD,IAAI,EAAE,WAAW;IAGjC,wBAAwB;aACR,aAAa,CAAC,EAAE,OAAO;IARzC,SAAkB,IAAI,wBAAwB;;IAG5C,iBAAiB;IACD,IAAI,EAAE,WAAW;IACjC,aAAa;IACb,OAAO,EAAE,MAAM;IACf,wBAAwB;IACR,aAAa,CAAC,EAAE,OAAO,YAAA;CAI1C"}
|
|
@@ -1,20 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
/**
|
|
2
|
+
* 트랜잭션 관련 에러 코드
|
|
3
|
+
*
|
|
4
|
+
* DBMS별 네이티브 에러 코드를 추상화하여 DBMS 독립적인 에러 처리를 지원한다
|
|
5
|
+
*/
|
|
6
|
+
export var DbErrorCode;
|
|
7
|
+
(function (DbErrorCode) {
|
|
8
|
+
/** 활성 트랜잭션 없음 (ROLLBACK 시 트랜잭션 없음) */
|
|
9
|
+
DbErrorCode["NO_ACTIVE_TRANSACTION"] = "NO_ACTIVE_TRANSACTION";
|
|
10
|
+
/** 트랜잭션 이미 시작됨 */
|
|
11
|
+
DbErrorCode["TRANSACTION_ALREADY_STARTED"] = "TRANSACTION_ALREADY_STARTED";
|
|
12
|
+
/** 데드락 발생 */
|
|
13
|
+
DbErrorCode["DEADLOCK"] = "DEADLOCK";
|
|
14
|
+
/** 잠금 타임아웃 */
|
|
15
|
+
DbErrorCode["LOCK_TIMEOUT"] = "LOCK_TIMEOUT";
|
|
16
|
+
})(DbErrorCode || (DbErrorCode = {}));
|
|
17
|
+
/**
|
|
18
|
+
* 데이터베이스 트랜잭션 에러
|
|
19
|
+
*
|
|
20
|
+
* DBMS별 네이티브 에러를 표준화된 에러 코드로 래핑하여
|
|
21
|
+
* DBMS 독립적인 에러 처리를 지원한다
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* try {
|
|
26
|
+
* await db.rollbackTransaction();
|
|
27
|
+
* } catch (err) {
|
|
28
|
+
* if (err instanceof DbTransactionError) {
|
|
29
|
+
* if (err.code === DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
30
|
+
* // 이미 롤백된 경우 무시
|
|
31
|
+
* return;
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* throw err;
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export class DbTransactionError extends Error {
|
|
39
|
+
code;
|
|
40
|
+
originalError;
|
|
41
|
+
name = "DbTransactionError";
|
|
42
|
+
constructor(
|
|
43
|
+
/** 표준화된 에러 코드 */
|
|
44
|
+
code,
|
|
45
|
+
/** 에러 메시지 */
|
|
46
|
+
message,
|
|
47
|
+
/** 원본 DBMS 에러 (디버깅용) */
|
|
48
|
+
originalError) {
|
|
49
|
+
super(message);
|
|
50
|
+
this.code = code;
|
|
51
|
+
this.originalError = originalError;
|
|
52
|
+
}
|
|
15
53
|
}
|
|
16
|
-
|
|
17
|
-
DbErrorCode,
|
|
18
|
-
DbTransactionError
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=db-transaction-error.js.map
|
|
54
|
+
//# sourceMappingURL=db-transaction-error.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/errors/db-transaction-error.ts"],
|
|
4
|
-
"mappings": "AAKO,IAAK,cAAL,kBAAKA,iBAAL;AAEL,EAAAA,aAAA,2BAAwB;AAGxB,EAAAA,aAAA,iCAA8B;AAG9B,EAAAA,aAAA,cAAW;AAGX,EAAAA,aAAA,kBAAe;AAXL,SAAAA;AAAA,GAAA;AAmCL,MAAM,2BAA2B,MAAM;AAAA,EAG5C,YAEkB,MAEhB,SAEgB,eAChB;AACA,UAAM,OAAO;AANG;AAIA;AAAA,EAGlB;AAAA,EAXkB,OAAO;AAY3B;",
|
|
5
|
-
"names": ["DbErrorCode"]
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"db-transaction-error.js","sourceRoot":"","sources":["..\\..\\src\\errors\\db-transaction-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,WAYX;AAZD,WAAY,WAAW;IACrB,sCAAsC;IACtC,8DAA+C,CAAA;IAE/C,kBAAkB;IAClB,0EAA2D,CAAA;IAE3D,aAAa;IACb,oCAAqB,CAAA;IAErB,cAAc;IACd,4CAA6B,CAAA;AAC/B,CAAC,EAZW,WAAW,KAAX,WAAW,QAYtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAKzB;IAIA;IARA,IAAI,GAAG,oBAAoB,CAAC;IAE9C;IACE,iBAAiB;IACD,IAAiB;IACjC,aAAa;IACb,OAAe;IACf,wBAAwB;IACR,aAAuB;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;QANC,SAAI,GAAJ,IAAI,CAAa;QAIjB,kBAAa,GAAb,aAAa,CAAU;IAGzC,CAAC;CACF"}
|
|
@@ -2,29 +2,29 @@ import type { ColumnBuilderRecord, InferColumnExprs } from "../schema/factory/co
|
|
|
2
2
|
import type { ProcedureBuilder } from "../schema/procedure-builder";
|
|
3
3
|
import type { DbContextBase } from "../types/db-context-def";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* 저장 프로시저 실행 래퍼 클래스
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* ProcedureBuilder로 정의된 프로시저를 실행하기 위한 클래스.
|
|
8
|
+
* DbContext에서 executable() 팩토리 함수를 통해 생성 및 사용된다.
|
|
9
9
|
*
|
|
10
|
-
* @template TParams -
|
|
11
|
-
* @template TReturns -
|
|
10
|
+
* @template TParams - 프로시저 파라미터 타입
|
|
11
|
+
* @template TReturns - 프로시저 반환 타입
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```typescript
|
|
15
|
-
* //
|
|
15
|
+
* // 프로시저 실행
|
|
16
16
|
* const result = await db.getUserById().execute({ userId: 1n });
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
|
-
* @see {@link executable}
|
|
20
|
-
* @see {@link ProcedureBuilder}
|
|
19
|
+
* @see {@link executable} 팩토리 함수
|
|
20
|
+
* @see {@link ProcedureBuilder} 프로시저 정의
|
|
21
21
|
*/
|
|
22
22
|
export declare class Executable<TParams extends ColumnBuilderRecord, TReturns extends ColumnBuilderRecord> {
|
|
23
23
|
private readonly _db;
|
|
24
24
|
private readonly _builder;
|
|
25
25
|
constructor(_db: DbContextBase, _builder: ProcedureBuilder<TParams, TReturns>);
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* 프로시저 실행 QueryDef 생성
|
|
28
28
|
*/
|
|
29
29
|
getExecProcQueryDef(params?: InferColumnExprs<TParams>): {
|
|
30
30
|
type: "execProc";
|
|
@@ -38,42 +38,42 @@ export declare class Executable<TParams extends ColumnBuilderRecord, TReturns ex
|
|
|
38
38
|
} | undefined;
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* 프로시저 실행
|
|
42
42
|
*/
|
|
43
43
|
execute(params: InferColumnExprs<TParams>): Promise<InferColumnExprs<TReturns>[][]>;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* Executable 생성 팩토리 함수
|
|
47
47
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
48
|
+
* DbContext에 프로시저를 등록할 때 사용한다.
|
|
49
|
+
* ProcedureBuilder로 정의된 프로시저를 Executable로 래핑하여 반환한다.
|
|
50
50
|
*
|
|
51
|
-
* @template TParams -
|
|
52
|
-
* @template TReturns -
|
|
53
|
-
* @param db - DbContext
|
|
54
|
-
* @param builder - ProcedureBuilder
|
|
55
|
-
* @returns Executable
|
|
51
|
+
* @template TParams - 프로시저 파라미터 타입
|
|
52
|
+
* @template TReturns - 프로시저 반환 타입
|
|
53
|
+
* @param db - DbContext 인스턴스
|
|
54
|
+
* @param builder - ProcedureBuilder 인스턴스
|
|
55
|
+
* @returns Executable 팩토리 함수
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
58
58
|
* ```typescript
|
|
59
|
-
* //
|
|
59
|
+
* // 프로시저 정의
|
|
60
60
|
* const GetUserById = Procedure("GetUserById")
|
|
61
61
|
* .database("mydb")
|
|
62
62
|
* .params((c) => ({ userId: c.bigint() }))
|
|
63
63
|
* .returns((c) => ({ id: c.bigint(), name: c.varchar(100) }))
|
|
64
64
|
* .body("SELECT id, name FROM User WHERE id = userId");
|
|
65
65
|
*
|
|
66
|
-
* //
|
|
66
|
+
* // DbContext에 등록
|
|
67
67
|
* class MyDb extends DbContext {
|
|
68
68
|
* getUserById = executable(this, GetUserById);
|
|
69
69
|
* }
|
|
70
70
|
*
|
|
71
|
-
* //
|
|
71
|
+
* // 사용
|
|
72
72
|
* const result = await db.getUserById().execute({ userId: 1n });
|
|
73
73
|
* ```
|
|
74
74
|
*
|
|
75
|
-
* @see {@link Executable}
|
|
76
|
-
* @see {@link ProcedureBuilder}
|
|
75
|
+
* @see {@link Executable} 실행 클래스
|
|
76
|
+
* @see {@link ProcedureBuilder} 프로시저 정의
|
|
77
77
|
*/
|
|
78
78
|
export declare function executable<TParams extends ColumnBuilderRecord, TReturns extends ColumnBuilderRecord>(db: DbContextBase, builder: ProcedureBuilder<TParams, TReturns>): () => Executable<TParams, TReturns>;
|
|
79
79
|
//# sourceMappingURL=executable.d.ts.map
|
package/dist/exec/executable.js
CHANGED
|
@@ -1,45 +1,99 @@
|
|
|
1
1
|
import { ExprUnit } from "../expr/expr-unit.js";
|
|
2
2
|
import { expr } from "../expr/expr.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
/**
|
|
4
|
+
* 저장 프로시저 실행 래퍼 클래스
|
|
5
|
+
*
|
|
6
|
+
* ProcedureBuilder로 정의된 프로시저를 실행하기 위한 클래스.
|
|
7
|
+
* DbContext에서 executable() 팩토리 함수를 통해 생성 및 사용된다.
|
|
8
|
+
*
|
|
9
|
+
* @template TParams - 프로시저 파라미터 타입
|
|
10
|
+
* @template TReturns - 프로시저 반환 타입
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // 프로시저 실행
|
|
15
|
+
* const result = await db.getUserById().execute({ userId: 1n });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @see {@link executable} 팩토리 함수
|
|
19
|
+
* @see {@link ProcedureBuilder} 프로시저 정의
|
|
20
|
+
*/
|
|
21
|
+
export class Executable {
|
|
22
|
+
_db;
|
|
23
|
+
_builder;
|
|
24
|
+
constructor(_db, _builder) {
|
|
25
|
+
this._db = _db;
|
|
26
|
+
this._builder = _builder;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 프로시저 실행 QueryDef 생성
|
|
30
|
+
*/
|
|
31
|
+
getExecProcQueryDef(params) {
|
|
32
|
+
const meta = this._builder.meta;
|
|
33
|
+
if (params && !meta.params) {
|
|
34
|
+
throw new Error(`Procedure '${meta.name}'에 파라미터가 없습니다.`);
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
type: "execProc",
|
|
38
|
+
procedure: {
|
|
39
|
+
database: meta.database ?? this._db.database,
|
|
40
|
+
schema: meta.schema ?? this._db.schema,
|
|
41
|
+
name: meta.name,
|
|
42
|
+
},
|
|
43
|
+
params: params && meta.params
|
|
44
|
+
? Object.fromEntries(Object.keys(params).map((key) => [
|
|
45
|
+
key,
|
|
46
|
+
params[key] instanceof ExprUnit
|
|
47
|
+
? params[key].expr
|
|
48
|
+
: expr.val(meta.params[key].meta.type, params[key]).expr,
|
|
49
|
+
]))
|
|
50
|
+
: undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 프로시저 실행
|
|
55
|
+
*/
|
|
56
|
+
async execute(params) {
|
|
57
|
+
return this._db.executeDefs([this.getExecProcQueryDef(params)]);
|
|
15
58
|
}
|
|
16
|
-
return {
|
|
17
|
-
type: "execProc",
|
|
18
|
-
procedure: {
|
|
19
|
-
database: meta.database ?? this._db.database,
|
|
20
|
-
schema: meta.schema ?? this._db.schema,
|
|
21
|
-
name: meta.name
|
|
22
|
-
},
|
|
23
|
-
params: params && meta.params ? Object.fromEntries(
|
|
24
|
-
Object.keys(params).map((key) => [
|
|
25
|
-
key,
|
|
26
|
-
params[key] instanceof ExprUnit ? params[key].expr : expr.val(meta.params[key].meta.type, params[key]).expr
|
|
27
|
-
])
|
|
28
|
-
) : void 0
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Execute procedure
|
|
33
|
-
*/
|
|
34
|
-
async execute(params) {
|
|
35
|
-
return this._db.executeDefs([this.getExecProcQueryDef(params)]);
|
|
36
|
-
}
|
|
37
59
|
}
|
|
38
|
-
|
|
39
|
-
|
|
60
|
+
// ============================================
|
|
61
|
+
// executable 함수
|
|
62
|
+
// ============================================
|
|
63
|
+
/**
|
|
64
|
+
* Executable 생성 팩토리 함수
|
|
65
|
+
*
|
|
66
|
+
* DbContext에 프로시저를 등록할 때 사용한다.
|
|
67
|
+
* ProcedureBuilder로 정의된 프로시저를 Executable로 래핑하여 반환한다.
|
|
68
|
+
*
|
|
69
|
+
* @template TParams - 프로시저 파라미터 타입
|
|
70
|
+
* @template TReturns - 프로시저 반환 타입
|
|
71
|
+
* @param db - DbContext 인스턴스
|
|
72
|
+
* @param builder - ProcedureBuilder 인스턴스
|
|
73
|
+
* @returns Executable 팩토리 함수
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* // 프로시저 정의
|
|
78
|
+
* const GetUserById = Procedure("GetUserById")
|
|
79
|
+
* .database("mydb")
|
|
80
|
+
* .params((c) => ({ userId: c.bigint() }))
|
|
81
|
+
* .returns((c) => ({ id: c.bigint(), name: c.varchar(100) }))
|
|
82
|
+
* .body("SELECT id, name FROM User WHERE id = userId");
|
|
83
|
+
*
|
|
84
|
+
* // DbContext에 등록
|
|
85
|
+
* class MyDb extends DbContext {
|
|
86
|
+
* getUserById = executable(this, GetUserById);
|
|
87
|
+
* }
|
|
88
|
+
*
|
|
89
|
+
* // 사용
|
|
90
|
+
* const result = await db.getUserById().execute({ userId: 1n });
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @see {@link Executable} 실행 클래스
|
|
94
|
+
* @see {@link ProcedureBuilder} 프로시저 정의
|
|
95
|
+
*/
|
|
96
|
+
export function executable(db, builder) {
|
|
97
|
+
return () => new Executable(db, builder);
|
|
40
98
|
}
|
|
41
|
-
|
|
42
|
-
Executable,
|
|
43
|
-
executable
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=executable.js.map
|
|
99
|
+
//# sourceMappingURL=executable.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/exec/executable.ts"],
|
|
4
|
-
"mappings": "AAGA,SAAS,gBAAgB;AACzB,SAAS,YAAY;AAoBd,MAAM,WAAsF;AAAA,EACjG,YACmB,KACA,UACjB;AAFiB;AACA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKH,oBAAoB,QAAoC;AACtD,UAAM,OAAO,KAAK,SAAS;AAC3B,QAAI,UAAU,CAAC,KAAK,QAAQ;AAC1B,YAAM,IAAI,MAAM,cAAc,KAAK,IAAI,sBAAsB;AAAA,IAC/D;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,QACT,UAAU,KAAK,YAAY,KAAK,IAAI;AAAA,QACpC,QAAQ,KAAK,UAAU,KAAK,IAAI;AAAA,QAChC,MAAM,KAAK;AAAA,MACb;AAAA,MACA,QACE,UAAU,KAAK,SACX,OAAO;AAAA,QACL,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC,QAAQ;AAAA,UAC/B;AAAA,UACA,OAAO,GAAG,aAAa,WACnB,OAAO,GAAG,EAAE,OACZ,KAAK,IAAI,KAAK,OAAQ,GAAG,EAAE,KAAK,MAAM,OAAO,GAAG,CAAC,EAAE;AAAA,QACzD,CAAC;AAAA,MACH,IACA;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,QAA4E;AACxF,WAAO,KAAK,IAAI,YAAwC,CAAC,KAAK,oBAAoB,MAAM,CAAC,CAAC;AAAA,EAC5F;AACF;AAuCO,SAAS,WAId,IACA,SACqC;AACrC,SAAO,MAAM,IAAI,WAAW,IAAI,OAAO;AACzC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"executable.js","sourceRoot":"","sources":["..\\..\\src\\exec\\executable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAU;IAEF;IACA;IAFnB,YACmB,GAAkB,EAClB,QAA6C;QAD7C,QAAG,GAAH,GAAG,CAAe;QAClB,aAAQ,GAAR,QAAQ,CAAqC;IAC7D,CAAC;IAEJ;;OAEG;IACH,mBAAmB,CAAC,MAAkC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAChC,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO;YACL,IAAI,EAAE,UAAmB;YACzB,SAAS,EAAE;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAC5C,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;gBACtC,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;YACD,MAAM,EACJ,MAAM,IAAI,IAAI,CAAC,MAAM;gBACnB,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC/B,GAAG;oBACH,MAAM,CAAC,GAAG,CAAC,YAAY,QAAQ;wBAC7B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;wBAClB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;iBAC5D,CAAC,CACH;gBACH,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAiC;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF;AAED,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,UAAU,CAIxB,EAAiB,EACjB,OAA4C;IAE5C,OAAO,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC"}
|