@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,142 +1,280 @@
|
|
|
1
1
|
import {} from "./column-builder.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* profile: r.foreignKeyTarget(() => Profile, "user").single()
|
|
53
|
-
* ```
|
|
54
|
-
*/
|
|
55
|
-
single() {
|
|
56
|
-
return new ForeignKeyTargetBuilder({ ...this.meta, isSingle: true });
|
|
57
|
-
}
|
|
2
|
+
// ============================================
|
|
3
|
+
// ForeignKeyBuilder
|
|
4
|
+
// ============================================
|
|
5
|
+
/**
|
|
6
|
+
* Foreign Key 관계 builder (N:1)
|
|
7
|
+
*
|
|
8
|
+
* 현재 Table에서 대상 Table로의 FK 관계를 정의
|
|
9
|
+
* DB에 실제 FK 제약조건을 생성
|
|
10
|
+
*
|
|
11
|
+
* @template TOwner - 소유 Table builder 타입
|
|
12
|
+
* @template TTargetFn - 대상 Table builder factory 타입
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const Post = Table("Post")
|
|
17
|
+
* .columns((c) => ({
|
|
18
|
+
* id: c.bigint().autoIncrement(),
|
|
19
|
+
* authorId: c.bigint(), // FK column
|
|
20
|
+
* }))
|
|
21
|
+
* .primaryKey("id")
|
|
22
|
+
* .relations((r) => ({
|
|
23
|
+
* // N:1 relationship - Post → User
|
|
24
|
+
* author: r.foreignKey(["authorId"], () => User),
|
|
25
|
+
* }));
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @see {@link ForeignKeyTargetBuilder} 역참조 builder
|
|
29
|
+
* @see {@link RelationKeyBuilder} DB FK 없는 관계
|
|
30
|
+
*/
|
|
31
|
+
export class ForeignKeyBuilder {
|
|
32
|
+
meta;
|
|
33
|
+
/**
|
|
34
|
+
* @param meta - FK 메타데이터
|
|
35
|
+
* @param meta.ownerFn - 소유 Table factory
|
|
36
|
+
* @param meta.columns - FK column 이름 배열
|
|
37
|
+
* @param meta.targetFn - 대상 Table factory
|
|
38
|
+
* @param meta.description - 관계 설명
|
|
39
|
+
*/
|
|
40
|
+
constructor(meta) {
|
|
41
|
+
this.meta = meta;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 관계 설명 설정
|
|
45
|
+
*
|
|
46
|
+
* @param desc - 관계 설명
|
|
47
|
+
* @returns 새 ForeignKeyBuilder 인스턴스
|
|
48
|
+
*/
|
|
49
|
+
description(desc) {
|
|
50
|
+
return new ForeignKeyBuilder({ ...this.meta, description: desc });
|
|
51
|
+
}
|
|
58
52
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Foreign Key 역참조 builder (1:N)
|
|
55
|
+
*
|
|
56
|
+
* 다른 Table이 현재 Table을 참조하는 FK의 역참조를 정의
|
|
57
|
+
* include() 시 배열로 로드됨 (single() 호출 시 단일 객체)
|
|
58
|
+
*
|
|
59
|
+
* @template TTargetTableFn - 참조하는 Table builder factory 타입
|
|
60
|
+
* @template TIsSingle - 단일 객체 여부
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const User = Table("User")
|
|
65
|
+
* .columns((c) => ({
|
|
66
|
+
* id: c.bigint().autoIncrement(),
|
|
67
|
+
* name: c.varchar(100),
|
|
68
|
+
* }))
|
|
69
|
+
* .primaryKey("id")
|
|
70
|
+
* .relations((r) => ({
|
|
71
|
+
* // 1:N relationship - User ← Post.author
|
|
72
|
+
* posts: r.foreignKeyTarget(() => Post, "author"),
|
|
73
|
+
*
|
|
74
|
+
* // 1:1 relation (single object)
|
|
75
|
+
* profile: r.foreignKeyTarget(() => Profile, "user").single(),
|
|
76
|
+
* }));
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @see {@link ForeignKeyBuilder} FK builder
|
|
80
|
+
*/
|
|
81
|
+
export class ForeignKeyTargetBuilder {
|
|
82
|
+
meta;
|
|
83
|
+
/**
|
|
84
|
+
* @param meta - FK 역참조 메타데이터
|
|
85
|
+
* @param meta.targetTableFn - 참조하는 Table factory
|
|
86
|
+
* @param meta.relationName - 참조하는 Table의 FK 관계 이름
|
|
87
|
+
* @param meta.description - 관계 설명
|
|
88
|
+
* @param meta.isSingle - 단일 객체 여부
|
|
89
|
+
*/
|
|
90
|
+
constructor(meta) {
|
|
91
|
+
this.meta = meta;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 관계 설명 설정
|
|
95
|
+
*
|
|
96
|
+
* @param desc - 관계 설명
|
|
97
|
+
* @returns 새 ForeignKeyTargetBuilder 인스턴스
|
|
98
|
+
*/
|
|
99
|
+
description(desc) {
|
|
100
|
+
return new ForeignKeyTargetBuilder({ ...this.meta, description: desc });
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 단일 객체 관계로 설정 (1:1)
|
|
104
|
+
*
|
|
105
|
+
* 기본값은 배열(1:N), single() 호출 시 단일 객체
|
|
106
|
+
*
|
|
107
|
+
* @returns 새 ForeignKeyTargetBuilder 인스턴스 (isSingle=true)
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* profile: r.foreignKeyTarget(() => Profile, "user").single()
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
single() {
|
|
115
|
+
return new ForeignKeyTargetBuilder({ ...this.meta, isSingle: true });
|
|
116
|
+
}
|
|
79
117
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
118
|
+
// ============================================
|
|
119
|
+
// RelationKeyBuilder (same as FK but does not register FK in DB)
|
|
120
|
+
// ============================================
|
|
121
|
+
/**
|
|
122
|
+
* 논리적 관계 builder (N:1) - DB FK 미생성
|
|
123
|
+
*
|
|
124
|
+
* ForeignKeyBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
125
|
+
* View에서도 사용 가능
|
|
126
|
+
*
|
|
127
|
+
* @template TOwner - 소유 Table/View builder 타입
|
|
128
|
+
* @template TTargetFn - 대상 Table/View builder factory 타입
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* // Relation definition from View to Table
|
|
133
|
+
* const UserSummary = View("UserSummary")
|
|
134
|
+
* .query((db: MyDb) => db.user().select(...))
|
|
135
|
+
* .relations((r) => ({
|
|
136
|
+
* // View → Table (no FK creation)
|
|
137
|
+
* company: r.relationKey(["companyId"], () => Company),
|
|
138
|
+
* }));
|
|
139
|
+
*
|
|
140
|
+
* // Relation definition from Table without FK
|
|
141
|
+
* const Report = Table("Report")
|
|
142
|
+
* .columns((c) => ({ userId: c.bigint() }))
|
|
143
|
+
* .relations((r) => ({
|
|
144
|
+
* user: r.relationKey(["userId"], () => User),
|
|
145
|
+
* }));
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* @see {@link ForeignKeyBuilder} DB FK 생성 버전
|
|
149
|
+
*/
|
|
150
|
+
export class RelationKeyBuilder {
|
|
151
|
+
meta;
|
|
152
|
+
/**
|
|
153
|
+
* @param meta - 관계 메타데이터
|
|
154
|
+
* @param meta.ownerFn - 소유 Table/View factory
|
|
155
|
+
* @param meta.columns - 관계 column 이름 배열
|
|
156
|
+
* @param meta.targetFn - 대상 Table/View factory
|
|
157
|
+
* @param meta.description - 관계 설명
|
|
158
|
+
*/
|
|
159
|
+
constructor(meta) {
|
|
160
|
+
this.meta = meta;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* 관계 설명 설정
|
|
164
|
+
*
|
|
165
|
+
* @param desc - 관계 설명
|
|
166
|
+
* @returns 새 RelationKeyBuilder 인스턴스
|
|
167
|
+
*/
|
|
168
|
+
description(desc) {
|
|
169
|
+
return new RelationKeyBuilder({ ...this.meta, description: desc });
|
|
170
|
+
}
|
|
110
171
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
172
|
+
/**
|
|
173
|
+
* 논리적 관계 역참조 builder (1:N) - DB FK 미생성
|
|
174
|
+
*
|
|
175
|
+
* ForeignKeyTargetBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
176
|
+
* View에서도 사용 가능
|
|
177
|
+
*
|
|
178
|
+
* @template TTargetTableFn - 참조하는 Table/View builder factory 타입
|
|
179
|
+
* @template TIsSingle - 단일 객체 여부
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* const Company = Table("Company")
|
|
184
|
+
* .columns((c) => ({ id: c.bigint() }))
|
|
185
|
+
* .relations((r) => ({
|
|
186
|
+
* // Reverse-reference (no FK creation)
|
|
187
|
+
* employees: r.relationKeyTarget(() => UserSummary, "company"),
|
|
188
|
+
* }));
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* @see {@link ForeignKeyTargetBuilder} DB FK 생성 버전
|
|
192
|
+
*/
|
|
193
|
+
export class RelationKeyTargetBuilder {
|
|
194
|
+
meta;
|
|
195
|
+
/**
|
|
196
|
+
* @param meta - 관계 역참조 메타데이터
|
|
197
|
+
* @param meta.targetTableFn - 참조하는 Table/View factory
|
|
198
|
+
* @param meta.relationName - 참조하는 Table/View의 관계 이름
|
|
199
|
+
* @param meta.description - 관계 설명
|
|
200
|
+
* @param meta.isSingle - 단일 객체 여부
|
|
201
|
+
*/
|
|
202
|
+
constructor(meta) {
|
|
203
|
+
this.meta = meta;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 관계 설명 설정
|
|
207
|
+
*
|
|
208
|
+
* @param desc - 관계 설명
|
|
209
|
+
* @returns 새 RelationKeyTargetBuilder 인스턴스
|
|
210
|
+
*/
|
|
211
|
+
description(desc) {
|
|
212
|
+
return new RelationKeyTargetBuilder({ ...this.meta, description: desc });
|
|
132
213
|
}
|
|
133
|
-
|
|
214
|
+
/**
|
|
215
|
+
* 단일 객체 관계로 설정 (1:1)
|
|
216
|
+
*
|
|
217
|
+
* 기본값은 배열(1:N), single() 호출 시 단일 객체
|
|
218
|
+
*
|
|
219
|
+
* @returns 새 RelationKeyTargetBuilder 인스턴스 (isSingle=true)
|
|
220
|
+
*/
|
|
221
|
+
single() {
|
|
222
|
+
return new RelationKeyTargetBuilder({ ...this.meta, isSingle: true });
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* 관계 builder factory 생성
|
|
227
|
+
*
|
|
228
|
+
* TableBuilder.relations()와 ViewBuilder.relations()에서 사용
|
|
229
|
+
* Table은 FK + RelationKey 모두 사용 가능, View는 RelationKey만 사용 가능
|
|
230
|
+
*
|
|
231
|
+
* @template TOwner - 소유 Table/View builder 타입
|
|
232
|
+
* @template TColumnKey - Column key 타입
|
|
233
|
+
* @param ownerFn - 소유 Table/View factory 함수
|
|
234
|
+
* @returns 관계 builder factory
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* ```typescript
|
|
238
|
+
* // Table - both FK and RelationKey available
|
|
239
|
+
* const Post = Table("Post")
|
|
240
|
+
* .columns((c) => ({
|
|
241
|
+
* id: c.bigint(),
|
|
242
|
+
* authorId: c.bigint(),
|
|
243
|
+
* }))
|
|
244
|
+
* .relations((r) => ({
|
|
245
|
+
* author: r.foreignKey(["authorId"], () => User), // FK Generate
|
|
246
|
+
* }));
|
|
247
|
+
*
|
|
248
|
+
* // View - only RelationKey available
|
|
249
|
+
* const UserSummary = View("UserSummary")
|
|
250
|
+
* .query(...)
|
|
251
|
+
* .relations((r) => ({
|
|
252
|
+
* posts: r.relationKeyTarget(() => Post, "author"), // No FK creation
|
|
253
|
+
* }));
|
|
254
|
+
* ```
|
|
255
|
+
*/
|
|
256
|
+
export function createRelationFactory(ownerFn) {
|
|
257
|
+
return {
|
|
258
|
+
foreignKey(columns, targetFn) {
|
|
259
|
+
return new ForeignKeyBuilder({
|
|
260
|
+
ownerFn: ownerFn,
|
|
261
|
+
columns,
|
|
262
|
+
targetFn,
|
|
263
|
+
});
|
|
264
|
+
},
|
|
265
|
+
foreignKeyTarget(targetTableFn, relationName) {
|
|
266
|
+
return new ForeignKeyTargetBuilder({ targetTableFn, relationName });
|
|
267
|
+
},
|
|
268
|
+
relationKey(columns, targetFn) {
|
|
269
|
+
return new RelationKeyBuilder({
|
|
270
|
+
ownerFn: ownerFn,
|
|
271
|
+
columns,
|
|
272
|
+
targetFn,
|
|
273
|
+
});
|
|
274
|
+
},
|
|
275
|
+
relationKeyTarget(targetTableFn, relationName) {
|
|
276
|
+
return new RelationKeyTargetBuilder({ targetTableFn, relationName });
|
|
277
|
+
},
|
|
278
|
+
};
|
|
134
279
|
}
|
|
135
|
-
|
|
136
|
-
ForeignKeyBuilder,
|
|
137
|
-
ForeignKeyTargetBuilder,
|
|
138
|
-
RelationKeyBuilder,
|
|
139
|
-
RelationKeyTargetBuilder,
|
|
140
|
-
createRelationFactory
|
|
141
|
-
};
|
|
142
|
-
//# sourceMappingURL=relation-builder.js.map
|
|
280
|
+
//# sourceMappingURL=relation-builder.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/schema/factory/relation-builder.ts"],
|
|
4
|
-
"mappings": "AAAA,eAAkC;AAkC3B,MAAM,kBAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YACW,MAMT;AANS;AAAA,EAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQH,YAAY,MAAoD;AAC9D,WAAO,IAAI,kBAAkB,EAAE,GAAG,KAAK,MAAM,aAAa,KAAK,CAAC;AAAA,EAClE;AACF;AA8BO,MAAM,wBAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YACW,MAMT;AANS;AAAA,EAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQH,YAAY,MAAkE;AAC5E,WAAO,IAAI,wBAAwB,EAAE,GAAG,KAAK,MAAM,aAAa,KAAK,CAAC;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,SAAwD;AACtD,WAAO,IAAI,wBAAwB,EAAE,GAAG,KAAK,MAAM,UAAU,KAAK,CAAC;AAAA,EACrE;AACF;AAmCO,MAAM,mBAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YACW,MAMT;AANS;AAAA,EAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQH,YAAY,MAAqD;AAC/D,WAAO,IAAI,mBAAmB,EAAE,GAAG,KAAK,MAAM,aAAa,KAAK,CAAC;AAAA,EACnE;AACF;AAuBO,MAAM,yBAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YACW,MAMT;AANS;AAAA,EAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQH,YAAY,MAAmE;AAC7E,WAAO,IAAI,yBAAyB,EAAE,GAAG,KAAK,MAAM,aAAa,KAAK,CAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,SAAyD;AACvD,WAAO,IAAI,yBAAyB,EAAE,GAAG,KAAK,MAAM,UAAU,KAAK,CAAC;AAAA,EACtE;AACF;AA4EO,SAAS,sBAId,SAGwC;AACxC,SAAO;AAAA,IACL,WAAW,SAAS,UAAU;AAC5B,aAAO,IAAI,kBAAkB;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,iBAAiB,eAAe,cAAc;AAC5C,aAAO,IAAI,wBAAwB,EAAE,eAAe,aAAa,CAAC;AAAA,IACpE;AAAA,IACA,YAAY,SAAS,UAAU;AAC7B,aAAO,IAAI,mBAAmB;AAAA,QAC5B;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,kBAAkB,eAAe,cAAc;AAC7C,aAAO,IAAI,yBAAyB,EAAE,eAAe,aAAa,CAAC;AAAA,IACrE;AAAA,EACF;AAGF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"relation-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type ColumnBuilderRecord, createColumnFactory } from "./factory/column-builder";
|
|
2
2
|
/**
|
|
3
|
-
* Stored Procedure
|
|
3
|
+
* Stored Procedure 정의 builder
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Fluent API로 Procedure 파라미터, 반환 타입, 본문을 정의
|
|
6
|
+
* DbContext의 executable()과 함께 사용하여 타입 안전한 Procedure 호출
|
|
7
7
|
*
|
|
8
|
-
* @template TParams -
|
|
9
|
-
* @template TReturns -
|
|
8
|
+
* @template TParams - 파라미터 Column 정의 타입
|
|
9
|
+
* @template TReturns - 반환 Column 정의 타입
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```typescript
|
|
@@ -32,8 +32,8 @@ import { type ColumnBuilderRecord, createColumnFactory } from "./factory/column-
|
|
|
32
32
|
* const users = await db.getUserById({ userId: 1n }).execute();
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
|
-
* @see {@link Procedure} factory
|
|
36
|
-
* @see {@link executable} Executable
|
|
35
|
+
* @see {@link Procedure} factory 함수
|
|
36
|
+
* @see {@link executable} Executable 생성
|
|
37
37
|
*/
|
|
38
38
|
export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TReturns extends ColumnBuilderRecord> {
|
|
39
39
|
readonly meta: {
|
|
@@ -45,19 +45,19 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
45
45
|
returns?: TReturns;
|
|
46
46
|
query?: string;
|
|
47
47
|
};
|
|
48
|
-
/**
|
|
48
|
+
/** 파라미터 정의 (타입 추론용) */
|
|
49
49
|
readonly $params: TParams;
|
|
50
|
-
/**
|
|
50
|
+
/** 반환 타입 정의 (타입 추론용) */
|
|
51
51
|
readonly $returns: TReturns;
|
|
52
52
|
/**
|
|
53
|
-
* @param meta - Procedure
|
|
54
|
-
* @param meta.name - Procedure
|
|
55
|
-
* @param meta.description - Procedure
|
|
56
|
-
* @param meta.database - Database
|
|
57
|
-
* @param meta.schema - Schema
|
|
58
|
-
* @param meta.params -
|
|
59
|
-
* @param meta.returns -
|
|
60
|
-
* @param meta.query - Procedure
|
|
53
|
+
* @param meta - Procedure 메타데이터
|
|
54
|
+
* @param meta.name - Procedure 이름
|
|
55
|
+
* @param meta.description - Procedure 설명 (comment)
|
|
56
|
+
* @param meta.database - Database 이름
|
|
57
|
+
* @param meta.schema - Schema 이름 (MSSQL/PostgreSQL)
|
|
58
|
+
* @param meta.params - 파라미터 정의
|
|
59
|
+
* @param meta.returns - 반환 타입 정의
|
|
60
|
+
* @param meta.query - Procedure 본문 SQL
|
|
61
61
|
*/
|
|
62
62
|
constructor(meta: {
|
|
63
63
|
name: string;
|
|
@@ -69,17 +69,17 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
69
69
|
query?: string;
|
|
70
70
|
});
|
|
71
71
|
/**
|
|
72
|
-
* Procedure
|
|
72
|
+
* Procedure 설명 설정
|
|
73
73
|
*
|
|
74
|
-
* @param desc - Procedure
|
|
75
|
-
* @returns
|
|
74
|
+
* @param desc - Procedure 설명 (DDL Comment로 사용됨)
|
|
75
|
+
* @returns 새 ProcedureBuilder 인스턴스
|
|
76
76
|
*/
|
|
77
77
|
description(desc: string): ProcedureBuilder<TParams, TReturns>;
|
|
78
78
|
/**
|
|
79
|
-
* Database
|
|
79
|
+
* Database 이름 설정
|
|
80
80
|
*
|
|
81
|
-
* @param db - Database
|
|
82
|
-
* @returns
|
|
81
|
+
* @param db - Database 이름
|
|
82
|
+
* @returns 새 ProcedureBuilder 인스턴스
|
|
83
83
|
*
|
|
84
84
|
* @example
|
|
85
85
|
* ```typescript
|
|
@@ -88,23 +88,23 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
88
88
|
*/
|
|
89
89
|
database(db: string): ProcedureBuilder<TParams, TReturns>;
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* Schema 이름 설정
|
|
92
92
|
*
|
|
93
|
-
* MSSQL,
|
|
93
|
+
* MSSQL, PostgreSQL에서 사용
|
|
94
94
|
*
|
|
95
|
-
* @param schema - Schema
|
|
96
|
-
* @returns
|
|
95
|
+
* @param schema - Schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
96
|
+
* @returns 새 ProcedureBuilder 인스턴스
|
|
97
97
|
*/
|
|
98
98
|
schema(schema: string): ProcedureBuilder<TParams, TReturns>;
|
|
99
99
|
/**
|
|
100
|
-
*
|
|
100
|
+
* 파라미터 정의
|
|
101
101
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
102
|
+
* Procedure 입력 파라미터를 정의
|
|
103
|
+
* DBMS별 파라미터 구문 차이에 주의 (MSSQL: @param, MySQL/PostgreSQL: param)
|
|
104
104
|
*
|
|
105
|
-
* @template T -
|
|
106
|
-
* @param fn -
|
|
107
|
-
* @returns
|
|
105
|
+
* @template T - 새 파라미터 정의 타입
|
|
106
|
+
* @param fn - Column factory를 받아 파라미터 정의를 반환하는 함수
|
|
107
|
+
* @returns 새 ProcedureBuilder 인스턴스
|
|
108
108
|
*
|
|
109
109
|
* @example
|
|
110
110
|
* ```typescript
|
|
@@ -117,13 +117,13 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
117
117
|
*/
|
|
118
118
|
params<T extends ColumnBuilderRecord>(fn: (c: ReturnType<typeof createColumnFactory>) => T): ProcedureBuilder<T, TReturns>;
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* 반환 타입 정의
|
|
121
121
|
*
|
|
122
|
-
*
|
|
122
|
+
* Procedure 반환 결과 column을 정의
|
|
123
123
|
*
|
|
124
|
-
* @template T -
|
|
125
|
-
* @param fn -
|
|
126
|
-
* @returns
|
|
124
|
+
* @template T - 새 반환 타입 정의
|
|
125
|
+
* @param fn - Column factory를 받아 column 정의를 반환하는 함수
|
|
126
|
+
* @returns 새 ProcedureBuilder 인스턴스
|
|
127
127
|
*
|
|
128
128
|
* @example
|
|
129
129
|
* ```typescript
|
|
@@ -138,15 +138,15 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
138
138
|
*/
|
|
139
139
|
returns<T extends ColumnBuilderRecord>(fn: (c: ReturnType<typeof createColumnFactory>) => T): ProcedureBuilder<TParams, T>;
|
|
140
140
|
/**
|
|
141
|
-
*
|
|
141
|
+
* Procedure 본문 SQL 설정
|
|
142
142
|
*
|
|
143
|
-
*
|
|
144
|
-
* - MySQL:
|
|
145
|
-
* - MSSQL: @
|
|
146
|
-
* - PostgreSQL: RETURN QUERY
|
|
143
|
+
* DBMS별 SQL 구문 차이에 주의:
|
|
144
|
+
* - MySQL: 파라미터 이름 그대로 (userId)
|
|
145
|
+
* - MSSQL: @ 접두사 (@userId)
|
|
146
|
+
* - PostgreSQL: RETURN QUERY 필요
|
|
147
147
|
*
|
|
148
|
-
* @param sql - Procedure
|
|
149
|
-
* @returns
|
|
148
|
+
* @param sql - Procedure 본문 SQL
|
|
149
|
+
* @returns 새 ProcedureBuilder 인스턴스
|
|
150
150
|
*
|
|
151
151
|
* @example
|
|
152
152
|
* ```typescript
|
|
@@ -164,12 +164,12 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
164
164
|
body(sql: string): ProcedureBuilder<TParams, TReturns>;
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
|
-
* Procedure builder factory
|
|
167
|
+
* Procedure builder factory 함수
|
|
168
168
|
*
|
|
169
|
-
*
|
|
169
|
+
* Fluent API로 stored Procedure schema를 정의하기 위한 ProcedureBuilder를 생성
|
|
170
170
|
*
|
|
171
|
-
* @param name - Procedure
|
|
172
|
-
* @returns ProcedureBuilder
|
|
171
|
+
* @param name - Procedure 이름
|
|
172
|
+
* @returns ProcedureBuilder 인스턴스
|
|
173
173
|
*
|
|
174
174
|
* @example
|
|
175
175
|
* ```typescript
|
|
@@ -186,7 +186,7 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
186
186
|
* }))
|
|
187
187
|
* .body("SELECT id, name, email FROM User WHERE id = userId");
|
|
188
188
|
*
|
|
189
|
-
* //
|
|
189
|
+
* // 파라미터 없는 Procedure
|
|
190
190
|
* const GetAllActiveUsers = Procedure("GetAllActiveUsers")
|
|
191
191
|
* .database("mydb")
|
|
192
192
|
* .returns((c) => ({
|
|
@@ -196,7 +196,7 @@ export declare class ProcedureBuilder<TParams extends ColumnBuilderRecord, TRetu
|
|
|
196
196
|
* .body("SELECT id, name FROM User WHERE status = 'active'");
|
|
197
197
|
* ```
|
|
198
198
|
*
|
|
199
|
-
* @see {@link ProcedureBuilder} builder
|
|
199
|
+
* @see {@link ProcedureBuilder} builder 클래스
|
|
200
200
|
*/
|
|
201
201
|
export declare function Procedure(name: string): ProcedureBuilder<never, never>;
|
|
202
202
|
//# sourceMappingURL=procedure-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedure-builder.d.ts","sourceRoot":"","sources":["..\\..\\src\\schema\\procedure-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,gBAAgB,CAC3B,OAAO,SAAS,mBAAmB,EACnC,QAAQ,SAAS,mBAAmB;IAkBlC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAxBH,
|
|
1
|
+
{"version":3,"file":"procedure-builder.d.ts","sourceRoot":"","sources":["..\\..\\src\\schema\\procedure-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAMzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,gBAAgB,CAC3B,OAAO,SAAS,mBAAmB,EACnC,QAAQ,SAAS,mBAAmB;IAkBlC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAxBH,uBAAuB;IACvB,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAC;IAC3B,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAC;IAE7B;;;;;;;;;OASG;gBAEQ,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAGH;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAI9D;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAIzD;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;IAI3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,CAAC,SAAS,mBAAmB,EAClC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,GACnD,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC;IAIhC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,CAAC,SAAS,mBAAmB,EACnC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,KAAK,CAAC,GACnD,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IAI/B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;CAGvD;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAEtE"}
|