@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
|
@@ -1,94 +1,153 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
* @param description - Index description (used as DDL Comment)
|
|
64
|
-
* @returns new IndexBuilder instance
|
|
65
|
-
*/
|
|
66
|
-
description(description) {
|
|
67
|
-
return new IndexBuilder({ ...this.meta, description });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function createIndexFactory() {
|
|
71
|
-
return {
|
|
1
|
+
// ============================================
|
|
2
|
+
// IndexBuilder
|
|
3
|
+
// ============================================
|
|
4
|
+
/**
|
|
5
|
+
* Index 정의 builder
|
|
6
|
+
*
|
|
7
|
+
* Fluent API로 index column, 유니크 여부, 정렬 순서를 정의
|
|
8
|
+
* TableBuilder.indexes()에서 사용
|
|
9
|
+
*
|
|
10
|
+
* @template TKeys - Index column key 배열 타입
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* Table("User")
|
|
15
|
+
* .columns((c) => ({
|
|
16
|
+
* id: c.bigint(),
|
|
17
|
+
* email: c.varchar(200),
|
|
18
|
+
* name: c.varchar(100),
|
|
19
|
+
* createdAt: c.datetime(),
|
|
20
|
+
* }))
|
|
21
|
+
* .indexes((i) => [
|
|
22
|
+
* // 유니크 index
|
|
23
|
+
* i.index("email").unique(),
|
|
24
|
+
*
|
|
25
|
+
* // 복합 index + 정렬 순서
|
|
26
|
+
* i.index("name", "createdAt").orderBy("ASC", "DESC"),
|
|
27
|
+
*
|
|
28
|
+
* // 커스텀 이름
|
|
29
|
+
* i.index("createdAt").name("IX_User_CreatedAt"),
|
|
30
|
+
* ]);
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @see {@link createIndexFactory} Index factory
|
|
34
|
+
* @see {@link TableBuilder} Table builder
|
|
35
|
+
*/
|
|
36
|
+
export class IndexBuilder {
|
|
37
|
+
meta;
|
|
38
|
+
/**
|
|
39
|
+
* @param meta - Index 메타데이터
|
|
40
|
+
* @param meta.columns - Index column 배열
|
|
41
|
+
* @param meta.name - Index 이름 (선택)
|
|
42
|
+
* @param meta.unique - 유니크 index 여부
|
|
43
|
+
* @param meta.orderBy - column별 정렬 순서
|
|
44
|
+
* @param meta.description - Index 설명
|
|
45
|
+
*/
|
|
46
|
+
constructor(meta) {
|
|
47
|
+
this.meta = meta;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Index 이름 설정
|
|
51
|
+
*
|
|
52
|
+
* @param name - Index 이름
|
|
53
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* i.index("email").name("IX_User_Email")
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
name(name) {
|
|
61
|
+
return new IndexBuilder({ ...this.meta, name });
|
|
62
|
+
}
|
|
72
63
|
/**
|
|
73
|
-
*
|
|
64
|
+
* 유니크 index 설정
|
|
74
65
|
*
|
|
75
|
-
* @
|
|
76
|
-
* @param columns - Index column names
|
|
77
|
-
* @returns IndexBuilder instance
|
|
66
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
78
67
|
*
|
|
79
68
|
* @example
|
|
80
69
|
* ```typescript
|
|
81
|
-
* i.index("email")
|
|
82
|
-
* i.index("name", "email") // Composite column
|
|
70
|
+
* i.index("email").unique()
|
|
83
71
|
* ```
|
|
84
72
|
*/
|
|
85
|
-
|
|
86
|
-
|
|
73
|
+
unique() {
|
|
74
|
+
return new IndexBuilder({ ...this.meta, unique: true });
|
|
87
75
|
}
|
|
88
|
-
|
|
76
|
+
/**
|
|
77
|
+
* 정렬 순서 설정
|
|
78
|
+
*
|
|
79
|
+
* 각 column에 ASC 또는 DESC를 지정
|
|
80
|
+
*
|
|
81
|
+
* @param orderBy - column별 정렬 순서 (column 수와 일치해야 함)
|
|
82
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* // 단일 column
|
|
87
|
+
* i.index("createdAt").orderBy("DESC")
|
|
88
|
+
*
|
|
89
|
+
* // 복합 column
|
|
90
|
+
* i.index("status", "createdAt").orderBy("ASC", "DESC")
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
orderBy(...orderBy) {
|
|
94
|
+
return new IndexBuilder({ ...this.meta, orderBy });
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Index 설명 설정
|
|
98
|
+
*
|
|
99
|
+
* @param description - Index 설명 (DDL Comment로 사용됨)
|
|
100
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
101
|
+
*/
|
|
102
|
+
description(description) {
|
|
103
|
+
return new IndexBuilder({ ...this.meta, description });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ============================================
|
|
107
|
+
// IndexFactory
|
|
108
|
+
// ============================================
|
|
109
|
+
/**
|
|
110
|
+
* Index builder factory 생성
|
|
111
|
+
*
|
|
112
|
+
* TableBuilder.indexes()에서 사용하는 index factory
|
|
113
|
+
*
|
|
114
|
+
* @template TColumnKey - Table column key 타입
|
|
115
|
+
* @returns Index 생성 메서드를 포함하는 객체
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```typescript
|
|
119
|
+
* Table("User")
|
|
120
|
+
* .columns((c) => ({
|
|
121
|
+
* id: c.bigint(),
|
|
122
|
+
* email: c.varchar(200),
|
|
123
|
+
* name: c.varchar(100),
|
|
124
|
+
* }))
|
|
125
|
+
* .indexes((i) => [
|
|
126
|
+
* i.index("email").unique(),
|
|
127
|
+
* i.index("name"),
|
|
128
|
+
* ]);
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @see {@link IndexBuilder} Index builder 클래스
|
|
132
|
+
*/
|
|
133
|
+
export function createIndexFactory() {
|
|
134
|
+
return {
|
|
135
|
+
/**
|
|
136
|
+
* Index 생성
|
|
137
|
+
*
|
|
138
|
+
* @template TKeys - Index column key 배열 타입
|
|
139
|
+
* @param columns - Index column 이름들
|
|
140
|
+
* @returns IndexBuilder 인스턴스
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* i.index("email") // 단일 column
|
|
145
|
+
* i.index("name", "email") // 복합 column
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
index(...columns) {
|
|
149
|
+
return new IndexBuilder({ columns });
|
|
150
|
+
},
|
|
151
|
+
};
|
|
89
152
|
}
|
|
90
|
-
|
|
91
|
-
IndexBuilder,
|
|
92
|
-
createIndexFactory
|
|
93
|
-
};
|
|
94
|
-
//# sourceMappingURL=index-builder.js.map
|
|
153
|
+
//# sourceMappingURL=index-builder.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/schema/factory/index-builder.ts"],
|
|
4
|
-
"mappings": "AAoCO,MAAM,aAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAShD,YACW,MAOT;AAPS;AAAA,EAOR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaH,KAAK,MAAmC;AACtC,WAAO,IAAI,aAAa,EAAE,GAAG,KAAK,MAAM,KAAK,CAAC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,SAA8B;AAC5B,WAAO,IAAI,aAAa,EAAE,GAAG,KAAK,MAAM,QAAQ,KAAK,CAAC;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,WAAW,SAAsE;AAC/E,WAAO,IAAI,aAAa,EAAE,GAAG,KAAK,MAAM,QAAQ,CAAC;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,aAA0C;AACpD,WAAO,IAAI,aAAa,EAAE,GAAG,KAAK,MAAM,YAAY,CAAC;AAAA,EACvD;AACF;AA8BO,SAAS,qBAAgD;AAC9D,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcL,SAAqC,SAA0C;AAC7E,aAAO,IAAI,aAAa,EAAE,QAAQ,CAAC;AAAA,IACrC;AAAA,EACF;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"index-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\index-builder.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,OAAO,YAAY;IAUZ;IATX;;;;;;;OAOG;IACH,YACW,IAMR;QANQ,SAAI,GAAJ,IAAI,CAMZ;IACA,CAAC;IAEJ;;;;;;;;;;OAUG;IACH,IAAI,CAAC,IAAY;QACf,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM;QACJ,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,GAAG,OAA+C;QACxD,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,WAAmB;QAC7B,OAAO,IAAI,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAED,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL;;;;;;;;;;;;WAYG;QACH,KAAK,CAA6B,GAAG,OAAmB;YACtD,OAAO,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -2,13 +2,13 @@ import { type InferColumns } from "./column-builder";
|
|
|
2
2
|
import type { TableBuilder } from "../table-builder";
|
|
3
3
|
import type { ViewBuilder } from "../view-builder";
|
|
4
4
|
/**
|
|
5
|
-
* Foreign Key
|
|
5
|
+
* Foreign Key 관계 builder (N:1)
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* 현재 Table에서 대상 Table로의 FK 관계를 정의
|
|
8
|
+
* DB에 실제 FK 제약조건을 생성
|
|
9
9
|
*
|
|
10
|
-
* @template TOwner -
|
|
11
|
-
* @template TTargetFn -
|
|
10
|
+
* @template TOwner - 소유 Table builder 타입
|
|
11
|
+
* @template TTargetFn - 대상 Table builder factory 타입
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```typescript
|
|
@@ -24,8 +24,8 @@ import type { ViewBuilder } from "../view-builder";
|
|
|
24
24
|
* }));
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
|
-
* @see {@link ForeignKeyTargetBuilder}
|
|
28
|
-
* @see {@link RelationKeyBuilder}
|
|
27
|
+
* @see {@link ForeignKeyTargetBuilder} 역참조 builder
|
|
28
|
+
* @see {@link RelationKeyBuilder} DB FK 없는 관계
|
|
29
29
|
*/
|
|
30
30
|
export declare class ForeignKeyBuilder<TOwner extends TableBuilder<any, any>, TTargetFn extends () => TableBuilder<any, any>> {
|
|
31
31
|
readonly meta: {
|
|
@@ -35,11 +35,11 @@ export declare class ForeignKeyBuilder<TOwner extends TableBuilder<any, any>, TT
|
|
|
35
35
|
description?: string;
|
|
36
36
|
};
|
|
37
37
|
/**
|
|
38
|
-
* @param meta - FK
|
|
39
|
-
* @param meta.ownerFn -
|
|
40
|
-
* @param meta.columns - FK column
|
|
41
|
-
* @param meta.targetFn -
|
|
42
|
-
* @param meta.description -
|
|
38
|
+
* @param meta - FK 메타데이터
|
|
39
|
+
* @param meta.ownerFn - 소유 Table factory
|
|
40
|
+
* @param meta.columns - FK column 이름 배열
|
|
41
|
+
* @param meta.targetFn - 대상 Table factory
|
|
42
|
+
* @param meta.description - 관계 설명
|
|
43
43
|
*/
|
|
44
44
|
constructor(meta: {
|
|
45
45
|
ownerFn: () => TOwner;
|
|
@@ -48,21 +48,21 @@ export declare class ForeignKeyBuilder<TOwner extends TableBuilder<any, any>, TT
|
|
|
48
48
|
description?: string;
|
|
49
49
|
});
|
|
50
50
|
/**
|
|
51
|
-
*
|
|
51
|
+
* 관계 설명 설정
|
|
52
52
|
*
|
|
53
|
-
* @param desc -
|
|
54
|
-
* @returns
|
|
53
|
+
* @param desc - 관계 설명
|
|
54
|
+
* @returns 새 ForeignKeyBuilder 인스턴스
|
|
55
55
|
*/
|
|
56
56
|
description(desc: string): ForeignKeyBuilder<TOwner, TTargetFn>;
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
* Foreign Key
|
|
59
|
+
* Foreign Key 역참조 builder (1:N)
|
|
60
60
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
61
|
+
* 다른 Table이 현재 Table을 참조하는 FK의 역참조를 정의
|
|
62
|
+
* include() 시 배열로 로드됨 (single() 호출 시 단일 객체)
|
|
63
63
|
*
|
|
64
|
-
* @template TTargetTableFn -
|
|
65
|
-
* @template TIsSingle -
|
|
64
|
+
* @template TTargetTableFn - 참조하는 Table builder factory 타입
|
|
65
|
+
* @template TIsSingle - 단일 객체 여부
|
|
66
66
|
*
|
|
67
67
|
* @example
|
|
68
68
|
* ```typescript
|
|
@@ -91,11 +91,11 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
|
|
|
91
91
|
isSingle?: TIsSingle;
|
|
92
92
|
};
|
|
93
93
|
/**
|
|
94
|
-
* @param meta - FK
|
|
95
|
-
* @param meta.targetTableFn -
|
|
96
|
-
* @param meta.relationName -
|
|
97
|
-
* @param meta.description -
|
|
98
|
-
* @param meta.isSingle -
|
|
94
|
+
* @param meta - FK 역참조 메타데이터
|
|
95
|
+
* @param meta.targetTableFn - 참조하는 Table factory
|
|
96
|
+
* @param meta.relationName - 참조하는 Table의 FK 관계 이름
|
|
97
|
+
* @param meta.description - 관계 설명
|
|
98
|
+
* @param meta.isSingle - 단일 객체 여부
|
|
99
99
|
*/
|
|
100
100
|
constructor(meta: {
|
|
101
101
|
targetTableFn: TTargetTableFn;
|
|
@@ -104,18 +104,18 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
|
|
|
104
104
|
isSingle?: TIsSingle;
|
|
105
105
|
});
|
|
106
106
|
/**
|
|
107
|
-
*
|
|
107
|
+
* 관계 설명 설정
|
|
108
108
|
*
|
|
109
|
-
* @param desc -
|
|
110
|
-
* @returns
|
|
109
|
+
* @param desc - 관계 설명
|
|
110
|
+
* @returns 새 ForeignKeyTargetBuilder 인스턴스
|
|
111
111
|
*/
|
|
112
112
|
description(desc: string): ForeignKeyTargetBuilder<TTargetTableFn, TIsSingle>;
|
|
113
113
|
/**
|
|
114
|
-
*
|
|
114
|
+
* 단일 객체 관계로 설정 (1:1)
|
|
115
115
|
*
|
|
116
|
-
*
|
|
116
|
+
* 기본값은 배열(1:N), single() 호출 시 단일 객체
|
|
117
117
|
*
|
|
118
|
-
* @returns
|
|
118
|
+
* @returns 새 ForeignKeyTargetBuilder 인스턴스 (isSingle=true)
|
|
119
119
|
*
|
|
120
120
|
* @example
|
|
121
121
|
* ```typescript
|
|
@@ -125,13 +125,13 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
|
|
|
125
125
|
single(): ForeignKeyTargetBuilder<TTargetTableFn, true>;
|
|
126
126
|
}
|
|
127
127
|
/**
|
|
128
|
-
*
|
|
128
|
+
* 논리적 관계 builder (N:1) - DB FK 미생성
|
|
129
129
|
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
130
|
+
* ForeignKeyBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
131
|
+
* View에서도 사용 가능
|
|
132
132
|
*
|
|
133
|
-
* @template TOwner -
|
|
134
|
-
* @template TTargetFn -
|
|
133
|
+
* @template TOwner - 소유 Table/View builder 타입
|
|
134
|
+
* @template TTargetFn - 대상 Table/View builder factory 타입
|
|
135
135
|
*
|
|
136
136
|
* @example
|
|
137
137
|
* ```typescript
|
|
@@ -151,7 +151,7 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
|
|
|
151
151
|
* }));
|
|
152
152
|
* ```
|
|
153
153
|
*
|
|
154
|
-
* @see {@link ForeignKeyBuilder} DB FK
|
|
154
|
+
* @see {@link ForeignKeyBuilder} DB FK 생성 버전
|
|
155
155
|
*/
|
|
156
156
|
export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>, TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>> {
|
|
157
157
|
readonly meta: {
|
|
@@ -161,11 +161,11 @@ export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> |
|
|
|
161
161
|
description?: string;
|
|
162
162
|
};
|
|
163
163
|
/**
|
|
164
|
-
* @param meta -
|
|
165
|
-
* @param meta.ownerFn -
|
|
166
|
-
* @param meta.columns -
|
|
167
|
-
* @param meta.targetFn -
|
|
168
|
-
* @param meta.description -
|
|
164
|
+
* @param meta - 관계 메타데이터
|
|
165
|
+
* @param meta.ownerFn - 소유 Table/View factory
|
|
166
|
+
* @param meta.columns - 관계 column 이름 배열
|
|
167
|
+
* @param meta.targetFn - 대상 Table/View factory
|
|
168
|
+
* @param meta.description - 관계 설명
|
|
169
169
|
*/
|
|
170
170
|
constructor(meta: {
|
|
171
171
|
ownerFn: () => TOwner;
|
|
@@ -174,21 +174,21 @@ export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> |
|
|
|
174
174
|
description?: string;
|
|
175
175
|
});
|
|
176
176
|
/**
|
|
177
|
-
*
|
|
177
|
+
* 관계 설명 설정
|
|
178
178
|
*
|
|
179
|
-
* @param desc -
|
|
180
|
-
* @returns
|
|
179
|
+
* @param desc - 관계 설명
|
|
180
|
+
* @returns 새 RelationKeyBuilder 인스턴스
|
|
181
181
|
*/
|
|
182
182
|
description(desc: string): RelationKeyBuilder<TOwner, TTargetFn>;
|
|
183
183
|
}
|
|
184
184
|
/**
|
|
185
|
-
*
|
|
185
|
+
* 논리적 관계 역참조 builder (1:N) - DB FK 미생성
|
|
186
186
|
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
187
|
+
* ForeignKeyTargetBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
188
|
+
* View에서도 사용 가능
|
|
189
189
|
*
|
|
190
|
-
* @template TTargetTableFn -
|
|
191
|
-
* @template TIsSingle -
|
|
190
|
+
* @template TTargetTableFn - 참조하는 Table/View builder factory 타입
|
|
191
|
+
* @template TIsSingle - 단일 객체 여부
|
|
192
192
|
*
|
|
193
193
|
* @example
|
|
194
194
|
* ```typescript
|
|
@@ -200,7 +200,7 @@ export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> |
|
|
|
200
200
|
* }));
|
|
201
201
|
* ```
|
|
202
202
|
*
|
|
203
|
-
* @see {@link ForeignKeyTargetBuilder} DB FK
|
|
203
|
+
* @see {@link ForeignKeyTargetBuilder} DB FK 생성 버전
|
|
204
204
|
*/
|
|
205
205
|
export declare class RelationKeyTargetBuilder<TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>, TIsSingle extends boolean> {
|
|
206
206
|
readonly meta: {
|
|
@@ -210,11 +210,11 @@ export declare class RelationKeyTargetBuilder<TTargetTableFn extends () => Table
|
|
|
210
210
|
isSingle?: TIsSingle;
|
|
211
211
|
};
|
|
212
212
|
/**
|
|
213
|
-
* @param meta -
|
|
214
|
-
* @param meta.targetTableFn -
|
|
215
|
-
* @param meta.relationName -
|
|
216
|
-
* @param meta.description -
|
|
217
|
-
* @param meta.isSingle -
|
|
213
|
+
* @param meta - 관계 역참조 메타데이터
|
|
214
|
+
* @param meta.targetTableFn - 참조하는 Table/View factory
|
|
215
|
+
* @param meta.relationName - 참조하는 Table/View의 관계 이름
|
|
216
|
+
* @param meta.description - 관계 설명
|
|
217
|
+
* @param meta.isSingle - 단일 객체 여부
|
|
218
218
|
*/
|
|
219
219
|
constructor(meta: {
|
|
220
220
|
targetTableFn: TTargetTableFn;
|
|
@@ -223,55 +223,55 @@ export declare class RelationKeyTargetBuilder<TTargetTableFn extends () => Table
|
|
|
223
223
|
isSingle?: TIsSingle;
|
|
224
224
|
});
|
|
225
225
|
/**
|
|
226
|
-
*
|
|
226
|
+
* 관계 설명 설정
|
|
227
227
|
*
|
|
228
|
-
* @param desc -
|
|
229
|
-
* @returns
|
|
228
|
+
* @param desc - 관계 설명
|
|
229
|
+
* @returns 새 RelationKeyTargetBuilder 인스턴스
|
|
230
230
|
*/
|
|
231
231
|
description(desc: string): RelationKeyTargetBuilder<TTargetTableFn, TIsSingle>;
|
|
232
232
|
/**
|
|
233
|
-
*
|
|
233
|
+
* 단일 객체 관계로 설정 (1:1)
|
|
234
234
|
*
|
|
235
|
-
*
|
|
235
|
+
* 기본값은 배열(1:N), single() 호출 시 단일 객체
|
|
236
236
|
*
|
|
237
|
-
* @returns
|
|
237
|
+
* @returns 새 RelationKeyTargetBuilder 인스턴스 (isSingle=true)
|
|
238
238
|
*/
|
|
239
239
|
single(): RelationKeyTargetBuilder<TTargetTableFn, true>;
|
|
240
240
|
}
|
|
241
241
|
/**
|
|
242
|
-
* FK
|
|
242
|
+
* FK 관계 factory 타입 (table 전용)
|
|
243
243
|
*
|
|
244
|
-
* @template TOwner -
|
|
245
|
-
* @template TColumnKey - Column key
|
|
244
|
+
* @template TOwner - 소유 Table builder 타입
|
|
245
|
+
* @template TColumnKey - Column key 타입
|
|
246
246
|
*/
|
|
247
247
|
type RelationFkFactory<TOwner extends TableBuilder<any, any>, TColumnKey extends string> = {
|
|
248
|
-
/** N:1 FK
|
|
248
|
+
/** N:1 FK 관계 정의 (DB FK 생성) */
|
|
249
249
|
foreignKey<TTargetFn extends () => TableBuilder<any, any>>(columns: TColumnKey[], targetFn: TTargetFn): ForeignKeyBuilder<TOwner, TTargetFn>;
|
|
250
|
-
/** 1:N FK
|
|
250
|
+
/** 1:N FK 역참조 정의 */
|
|
251
251
|
foreignKeyTarget<TTargetTableFn extends () => TableBuilder<any, any>>(targetTableFn: TTargetTableFn, relationName: string): ForeignKeyTargetBuilder<TTargetTableFn, false>;
|
|
252
252
|
};
|
|
253
253
|
/**
|
|
254
|
-
*
|
|
254
|
+
* 논리적 관계 factory 타입 (table/View 공용)
|
|
255
255
|
*
|
|
256
|
-
* @template TOwner -
|
|
257
|
-
* @template TColumnKey - Column key
|
|
256
|
+
* @template TOwner - 소유 Table/View builder 타입
|
|
257
|
+
* @template TColumnKey - Column key 타입
|
|
258
258
|
*/
|
|
259
259
|
type RelationRkFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>, TColumnKey extends string> = {
|
|
260
|
-
/** N:1
|
|
260
|
+
/** N:1 논리적 관계 정의 (DB FK 미생성) */
|
|
261
261
|
relationKey<TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>>(columns: TColumnKey[], targetFn: TTargetFn): RelationKeyBuilder<TOwner, TTargetFn>;
|
|
262
|
-
/** 1:N
|
|
262
|
+
/** 1:N 논리적 역참조 정의 */
|
|
263
263
|
relationKeyTarget<TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>>(targetTableFn: TTargetTableFn, relationName: string): RelationKeyTargetBuilder<TTargetTableFn, false>;
|
|
264
264
|
};
|
|
265
265
|
/**
|
|
266
|
-
*
|
|
266
|
+
* 관계 builder factory 생성
|
|
267
267
|
*
|
|
268
|
-
*
|
|
269
|
-
* Table
|
|
268
|
+
* TableBuilder.relations()와 ViewBuilder.relations()에서 사용
|
|
269
|
+
* Table은 FK + RelationKey 모두 사용 가능, View는 RelationKey만 사용 가능
|
|
270
270
|
*
|
|
271
|
-
* @template TOwner -
|
|
272
|
-
* @template TColumnKey - Column key
|
|
273
|
-
* @param ownerFn -
|
|
274
|
-
* @returns
|
|
271
|
+
* @template TOwner - 소유 Table/View builder 타입
|
|
272
|
+
* @template TColumnKey - Column key 타입
|
|
273
|
+
* @param ownerFn - 소유 Table/View factory 함수
|
|
274
|
+
* @returns 관계 builder factory
|
|
275
275
|
*
|
|
276
276
|
* @example
|
|
277
277
|
* ```typescript
|
|
@@ -295,34 +295,34 @@ type RelationRkFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any,
|
|
|
295
295
|
*/
|
|
296
296
|
export declare function createRelationFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>, TColumnKey extends string>(ownerFn: () => TOwner): TOwner extends TableBuilder<any, any> ? RelationFkFactory<TOwner, TColumnKey> & RelationRkFactory<TOwner, TColumnKey> : RelationRkFactory<TOwner, TColumnKey>;
|
|
297
297
|
/**
|
|
298
|
-
*
|
|
298
|
+
* 관계 builder 레코드 타입
|
|
299
299
|
*
|
|
300
|
-
*
|
|
300
|
+
* TableBuilder.relations()와 ViewBuilder.relations()의 반환 타입
|
|
301
301
|
*/
|
|
302
302
|
export type RelationBuilderRecord = Record<string, ForeignKeyBuilder<any, any> | ForeignKeyTargetBuilder<any, any> | RelationKeyBuilder<any, any> | RelationKeyTargetBuilder<any, any>>;
|
|
303
303
|
/**
|
|
304
|
-
*
|
|
304
|
+
* FK/RelationKey에서 대상 타입 추출 (단일 객체)
|
|
305
305
|
*
|
|
306
|
-
*
|
|
306
|
+
* N:1 관계의 대상 타입
|
|
307
307
|
*
|
|
308
|
-
* @template T - FK
|
|
308
|
+
* @template T - FK 또는 RelationKey builder 타입
|
|
309
309
|
*/
|
|
310
310
|
export type ExtractRelationTarget<TRelation> = TRelation extends ForeignKeyBuilder<any, infer TTargetFn> | RelationKeyBuilder<any, infer TTargetFn> ? ReturnType<TTargetFn> extends TableBuilder<infer TCols, infer TRels> ? InferColumns<TCols> & InferDeepRelations<TRels> : ReturnType<TTargetFn> extends ViewBuilder<any, infer TData, infer TRels> ? TData & InferDeepRelations<TRels> : never : never;
|
|
311
311
|
/**
|
|
312
|
-
*
|
|
312
|
+
* FKTarget/RelationKeyTarget에서 대상 타입 추출 (배열 또는 단일 객체)
|
|
313
313
|
*
|
|
314
|
-
*
|
|
315
|
-
* TTargetTableFn:
|
|
314
|
+
* 1:N 관계의 대상 타입 (single() 호출 시 단일 객체)
|
|
315
|
+
* TTargetTableFn: 순환 참조 방지를 위한 지연 평가용 () => Post 형태
|
|
316
316
|
*
|
|
317
|
-
* @template T - FKTarget
|
|
317
|
+
* @template T - FKTarget 또는 RelationKeyTarget builder 타입
|
|
318
318
|
*/
|
|
319
319
|
export type ExtractRelationTargetResult<TRelation> = TRelation extends ForeignKeyTargetBuilder<infer TTargetTableFn, infer TIsSingle> | RelationKeyTargetBuilder<infer TTargetTableFn, infer TIsSingle> ? ReturnType<TTargetTableFn> extends TableBuilder<infer TCols, infer TRels> ? TIsSingle extends true ? InferColumns<TCols> & InferDeepRelations<TRels> : (InferColumns<TCols> & InferDeepRelations<TRels>)[] : ReturnType<TTargetTableFn> extends ViewBuilder<any, infer TData, infer TRels> ? TIsSingle extends true ? TData & InferDeepRelations<TRels> : (TData & InferDeepRelations<TRels>)[] : never : never;
|
|
320
320
|
/**
|
|
321
|
-
*
|
|
321
|
+
* 관계 정의에서 심층 관계 타입 추론
|
|
322
322
|
*
|
|
323
|
-
*
|
|
323
|
+
* include() 없이 접근 시 undefined가 되도록 모든 관계를 optional로 설정
|
|
324
324
|
*
|
|
325
|
-
* @template TRelations -
|
|
325
|
+
* @template TRelations - 관계 builder 레코드 타입
|
|
326
326
|
*
|
|
327
327
|
* @example
|
|
328
328
|
* ```typescript
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relation-builder.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"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"}
|