@simplysm/orm-common 13.0.100 → 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
package/src/ddl/table-ddl.ts
CHANGED
|
@@ -14,12 +14,12 @@ import type { DbContextBase } from "../types/db-context-def";
|
|
|
14
14
|
import { obj } from "@simplysm/core-common";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Builder를 CREATE QueryDef로 변환
|
|
18
18
|
*
|
|
19
|
-
* @param db - DbContext
|
|
19
|
+
* @param db - DbContext 인스턴스
|
|
20
20
|
* @param builder - Table/View/Procedure builder
|
|
21
21
|
* @returns CREATE TABLE/VIEW/PROCEDURE QueryDef
|
|
22
|
-
* @throws {Error}
|
|
22
|
+
* @throws {Error} 알 수 없는 builder 타입일 때
|
|
23
23
|
*/
|
|
24
24
|
export function getCreateObjectQueryDef(
|
|
25
25
|
db: DbContextBase,
|
|
@@ -33,21 +33,21 @@ export function getCreateObjectQueryDef(
|
|
|
33
33
|
return getCreateProcQueryDef(db, builder);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
throw new Error(
|
|
36
|
+
throw new Error(`알 수 없는 builder 타입: ${typeof builder}`);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
-
* CREATE TABLE QueryDef
|
|
40
|
+
* CREATE TABLE QueryDef 생성
|
|
41
41
|
*
|
|
42
|
-
* @param db - DbContext
|
|
42
|
+
* @param db - DbContext 인스턴스
|
|
43
43
|
* @param table - Table builder
|
|
44
44
|
* @returns CREATE TABLE QueryDef
|
|
45
|
-
* @throws {Error}
|
|
45
|
+
* @throws {Error} 테이블에 column이 없을 때
|
|
46
46
|
*/
|
|
47
47
|
export function getCreateTableQueryDef(db: DbContextBase, table: TableBuilder<any, any>): QueryDef {
|
|
48
48
|
const columns = table.meta.columns as ColumnBuilderRecord | undefined;
|
|
49
49
|
if (columns == null) {
|
|
50
|
-
throw new Error(
|
|
50
|
+
throw new Error(`테이블 '${table.meta.name}'에 column이 없습니다.`);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
return {
|
|
@@ -65,19 +65,19 @@ export function getCreateTableQueryDef(db: DbContextBase, table: TableBuilder<an
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* CREATE VIEW QueryDef
|
|
68
|
+
* CREATE VIEW QueryDef 생성
|
|
69
69
|
*
|
|
70
|
-
* @param db - DbContext
|
|
70
|
+
* @param db - DbContext 인스턴스
|
|
71
71
|
* @param view - View builder
|
|
72
72
|
* @returns CREATE VIEW QueryDef
|
|
73
|
-
* @throws {Error}
|
|
73
|
+
* @throws {Error} View에 viewFn이 없을 때
|
|
74
74
|
*/
|
|
75
75
|
export function getCreateViewQueryDef(
|
|
76
76
|
db: DbContextBase,
|
|
77
77
|
view: ViewBuilder<any, any, any>,
|
|
78
78
|
): QueryDef {
|
|
79
79
|
if (view.meta.viewFn == null) {
|
|
80
|
-
throw new Error(`View '${view.meta.name}'
|
|
80
|
+
throw new Error(`View '${view.meta.name}'에 viewFn이 없습니다.`);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
const qr = view.meta.viewFn(db);
|
|
@@ -95,19 +95,19 @@ export function getCreateViewQueryDef(
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
|
-
* CREATE PROCEDURE QueryDef
|
|
98
|
+
* CREATE PROCEDURE QueryDef 생성
|
|
99
99
|
*
|
|
100
|
-
* @param db - DbContext
|
|
100
|
+
* @param db - DbContext 인스턴스
|
|
101
101
|
* @param procedure - Procedure builder
|
|
102
102
|
* @returns CREATE PROCEDURE QueryDef
|
|
103
|
-
* @throws {Error}
|
|
103
|
+
* @throws {Error} Procedure에 body가 없을 때
|
|
104
104
|
*/
|
|
105
105
|
export function getCreateProcQueryDef(
|
|
106
106
|
db: DbContextBase,
|
|
107
107
|
procedure: ProcedureBuilder<any, any>,
|
|
108
108
|
): QueryDef {
|
|
109
109
|
if (procedure.meta.query == null) {
|
|
110
|
-
throw new Error(`Procedure '${procedure.meta.name}'
|
|
110
|
+
throw new Error(`Procedure '${procedure.meta.name}'에 body가 없습니다.`);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
const params = procedure.meta.params as ColumnBuilderRecord | undefined;
|
|
@@ -140,14 +140,14 @@ export function getCreateProcQueryDef(
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
/**
|
|
143
|
-
* DROP TABLE QueryDef
|
|
143
|
+
* DROP TABLE QueryDef 생성
|
|
144
144
|
*/
|
|
145
145
|
export function getDropTableQueryDef(table: QueryDefObjectName): DropTableQueryDef {
|
|
146
146
|
return { type: "dropTable", table };
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
/**
|
|
150
|
-
* RENAME TABLE QueryDef
|
|
150
|
+
* RENAME TABLE QueryDef 생성
|
|
151
151
|
*/
|
|
152
152
|
export function getRenameTableQueryDef(
|
|
153
153
|
table: QueryDefObjectName,
|
|
@@ -157,25 +157,25 @@ export function getRenameTableQueryDef(
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
/**
|
|
160
|
-
* DROP VIEW QueryDef
|
|
160
|
+
* DROP VIEW QueryDef 생성
|
|
161
161
|
*/
|
|
162
162
|
export function getDropViewQueryDef(view: QueryDefObjectName): DropViewQueryDef {
|
|
163
163
|
return { type: "dropView", view };
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/**
|
|
167
|
-
* DROP PROCEDURE QueryDef
|
|
167
|
+
* DROP PROCEDURE QueryDef 생성
|
|
168
168
|
*/
|
|
169
169
|
export function getDropProcQueryDef(procedure: QueryDefObjectName): DropProcQueryDef {
|
|
170
170
|
return { type: "dropProc", procedure };
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
/**
|
|
174
|
-
*
|
|
174
|
+
* TableBuilder/ViewBuilder를 QueryDefObjectName으로 변환
|
|
175
175
|
*
|
|
176
|
-
* @param db - DbContext
|
|
177
|
-
* @param tableOrView - Table
|
|
178
|
-
* @returns
|
|
176
|
+
* @param db - DbContext 인스턴스
|
|
177
|
+
* @param tableOrView - Table 또는 View builder
|
|
178
|
+
* @returns QueryDef에서 사용할 객체 이름 정보
|
|
179
179
|
*/
|
|
180
180
|
export function getQueryDefObjectName(
|
|
181
181
|
db: DbContextBase,
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 트랜잭션 관련 에러 코드
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* DBMS별 네이티브 에러 코드를 추상화하여 DBMS 독립적인 에러 처리를 지원한다
|
|
5
5
|
*/
|
|
6
6
|
export enum DbErrorCode {
|
|
7
|
-
/**
|
|
7
|
+
/** 활성 트랜잭션 없음 (ROLLBACK 시 트랜잭션 없음) */
|
|
8
8
|
NO_ACTIVE_TRANSACTION = "NO_ACTIVE_TRANSACTION",
|
|
9
9
|
|
|
10
|
-
/**
|
|
10
|
+
/** 트랜잭션 이미 시작됨 */
|
|
11
11
|
TRANSACTION_ALREADY_STARTED = "TRANSACTION_ALREADY_STARTED",
|
|
12
12
|
|
|
13
|
-
/**
|
|
13
|
+
/** 데드락 발생 */
|
|
14
14
|
DEADLOCK = "DEADLOCK",
|
|
15
15
|
|
|
16
|
-
/**
|
|
16
|
+
/** 잠금 타임아웃 */
|
|
17
17
|
LOCK_TIMEOUT = "LOCK_TIMEOUT",
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* 데이터베이스 트랜잭션 에러
|
|
22
22
|
*
|
|
23
|
-
*
|
|
24
|
-
* DBMS
|
|
23
|
+
* DBMS별 네이티브 에러를 표준화된 에러 코드로 래핑하여
|
|
24
|
+
* DBMS 독립적인 에러 처리를 지원한다
|
|
25
25
|
*
|
|
26
26
|
* @example
|
|
27
27
|
* ```typescript
|
|
@@ -30,7 +30,7 @@ export enum DbErrorCode {
|
|
|
30
30
|
* } catch (err) {
|
|
31
31
|
* if (err instanceof DbTransactionError) {
|
|
32
32
|
* if (err.code === DbErrorCode.NO_ACTIVE_TRANSACTION) {
|
|
33
|
-
* //
|
|
33
|
+
* // 이미 롤백된 경우 무시
|
|
34
34
|
* return;
|
|
35
35
|
* }
|
|
36
36
|
* }
|
|
@@ -42,11 +42,11 @@ export class DbTransactionError extends Error {
|
|
|
42
42
|
override readonly name = "DbTransactionError";
|
|
43
43
|
|
|
44
44
|
constructor(
|
|
45
|
-
/**
|
|
45
|
+
/** 표준화된 에러 코드 */
|
|
46
46
|
public readonly code: DbErrorCode,
|
|
47
|
-
/**
|
|
47
|
+
/** 에러 메시지 */
|
|
48
48
|
message: string,
|
|
49
|
-
/**
|
|
49
|
+
/** 원본 DBMS 에러 (디버깅용) */
|
|
50
50
|
public readonly originalError?: unknown,
|
|
51
51
|
) {
|
|
52
52
|
super(message);
|
package/src/exec/executable.ts
CHANGED
|
@@ -5,22 +5,22 @@ import { ExprUnit } from "../expr/expr-unit";
|
|
|
5
5
|
import { expr } from "../expr/expr";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* 저장 프로시저 실행 래퍼 클래스
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* ProcedureBuilder로 정의된 프로시저를 실행하기 위한 클래스.
|
|
11
|
+
* DbContext에서 executable() 팩토리 함수를 통해 생성 및 사용된다.
|
|
12
12
|
*
|
|
13
|
-
* @template TParams -
|
|
14
|
-
* @template TReturns -
|
|
13
|
+
* @template TParams - 프로시저 파라미터 타입
|
|
14
|
+
* @template TReturns - 프로시저 반환 타입
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```typescript
|
|
18
|
-
* //
|
|
18
|
+
* // 프로시저 실행
|
|
19
19
|
* const result = await db.getUserById().execute({ userId: 1n });
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
|
-
* @see {@link executable}
|
|
23
|
-
* @see {@link ProcedureBuilder}
|
|
22
|
+
* @see {@link executable} 팩토리 함수
|
|
23
|
+
* @see {@link ProcedureBuilder} 프로시저 정의
|
|
24
24
|
*/
|
|
25
25
|
export class Executable<TParams extends ColumnBuilderRecord, TReturns extends ColumnBuilderRecord> {
|
|
26
26
|
constructor(
|
|
@@ -29,12 +29,12 @@ export class Executable<TParams extends ColumnBuilderRecord, TReturns extends Co
|
|
|
29
29
|
) {}
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
32
|
+
* 프로시저 실행 QueryDef 생성
|
|
33
33
|
*/
|
|
34
34
|
getExecProcQueryDef(params?: InferColumnExprs<TParams>) {
|
|
35
35
|
const meta = this._builder.meta;
|
|
36
36
|
if (params && !meta.params) {
|
|
37
|
-
throw new Error(`Procedure '${meta.name}'
|
|
37
|
+
throw new Error(`Procedure '${meta.name}'에 파라미터가 없습니다.`);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
return {
|
|
@@ -59,7 +59,7 @@ export class Executable<TParams extends ColumnBuilderRecord, TReturns extends Co
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
62
|
+
* 프로시저 실행
|
|
63
63
|
*/
|
|
64
64
|
async execute(params: InferColumnExprs<TParams>): Promise<InferColumnExprs<TReturns>[][]> {
|
|
65
65
|
return this._db.executeDefs<InferColumnExprs<TReturns>>([this.getExecProcQueryDef(params)]);
|
|
@@ -67,41 +67,41 @@ export class Executable<TParams extends ColumnBuilderRecord, TReturns extends Co
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
// ============================================
|
|
70
|
-
// executable
|
|
70
|
+
// executable 함수
|
|
71
71
|
// ============================================
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
74
|
+
* Executable 생성 팩토리 함수
|
|
75
75
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
76
|
+
* DbContext에 프로시저를 등록할 때 사용한다.
|
|
77
|
+
* ProcedureBuilder로 정의된 프로시저를 Executable로 래핑하여 반환한다.
|
|
78
78
|
*
|
|
79
|
-
* @template TParams -
|
|
80
|
-
* @template TReturns -
|
|
81
|
-
* @param db - DbContext
|
|
82
|
-
* @param builder - ProcedureBuilder
|
|
83
|
-
* @returns Executable
|
|
79
|
+
* @template TParams - 프로시저 파라미터 타입
|
|
80
|
+
* @template TReturns - 프로시저 반환 타입
|
|
81
|
+
* @param db - DbContext 인스턴스
|
|
82
|
+
* @param builder - ProcedureBuilder 인스턴스
|
|
83
|
+
* @returns Executable 팩토리 함수
|
|
84
84
|
*
|
|
85
85
|
* @example
|
|
86
86
|
* ```typescript
|
|
87
|
-
* //
|
|
87
|
+
* // 프로시저 정의
|
|
88
88
|
* const GetUserById = Procedure("GetUserById")
|
|
89
89
|
* .database("mydb")
|
|
90
90
|
* .params((c) => ({ userId: c.bigint() }))
|
|
91
91
|
* .returns((c) => ({ id: c.bigint(), name: c.varchar(100) }))
|
|
92
92
|
* .body("SELECT id, name FROM User WHERE id = userId");
|
|
93
93
|
*
|
|
94
|
-
* //
|
|
94
|
+
* // DbContext에 등록
|
|
95
95
|
* class MyDb extends DbContext {
|
|
96
96
|
* getUserById = executable(this, GetUserById);
|
|
97
97
|
* }
|
|
98
98
|
*
|
|
99
|
-
* //
|
|
99
|
+
* // 사용
|
|
100
100
|
* const result = await db.getUserById().execute({ userId: 1n });
|
|
101
101
|
* ```
|
|
102
102
|
*
|
|
103
|
-
* @see {@link Executable}
|
|
104
|
-
* @see {@link ProcedureBuilder}
|
|
103
|
+
* @see {@link Executable} 실행 클래스
|
|
104
|
+
* @see {@link ProcedureBuilder} 프로시저 정의
|
|
105
105
|
*/
|
|
106
106
|
export function executable<
|
|
107
107
|
TParams extends ColumnBuilderRecord,
|