@simplysm/orm-common 13.0.69 → 13.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -1447
- package/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +9 -9
- package/dist/create-db-context.js.map +1 -1
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +2 -2
- package/dist/ddl/initialize.js.map +1 -1
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/table-ddl.d.ts +24 -24
- package/dist/ddl/table-ddl.js +4 -4
- package/dist/ddl/table-ddl.js.map +1 -1
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +3 -3
- package/dist/exec/executable.js.map +1 -1
- package/dist/exec/queryable.d.ts +160 -160
- package/dist/exec/queryable.js +119 -119
- package/dist/exec/queryable.js.map +1 -1
- package/dist/exec/search-parser.d.ts +37 -37
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr.d.ts +257 -257
- package/dist/expr/expr.js +265 -265
- package/dist/expr/expr.js.map +1 -1
- package/dist/query-builder/base/expr-renderer-base.d.ts +9 -9
- package/dist/query-builder/base/expr-renderer-base.js +2 -2
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -1
- package/dist/query-builder/base/query-builder-base.d.ts +26 -26
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +22 -22
- package/dist/query-builder/base/query-builder-base.js.map +1 -1
- 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 +18 -18
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +11 -11
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
- 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 +17 -17
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +8 -8
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +5 -5
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
- 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 +17 -17
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +5 -5
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/schema/factory/column-builder.d.ts +79 -79
- package/dist/schema/factory/column-builder.js +42 -42
- package/dist/schema/factory/index-builder.d.ts +39 -39
- package/dist/schema/factory/index-builder.js +26 -26
- package/dist/schema/factory/relation-builder.d.ts +99 -99
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +38 -38
- package/dist/schema/procedure-builder.d.ts +49 -49
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +33 -33
- package/dist/schema/table-builder.d.ts +59 -59
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +43 -43
- package/dist/schema/view-builder.d.ts +49 -49
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +32 -32
- package/dist/types/column.d.ts +22 -22
- package/dist/types/column.js +1 -1
- package/dist/types/column.js.map +1 -1
- package/dist/types/db.d.ts +40 -40
- package/dist/types/expr.d.ts +59 -59
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/query-def.d.ts +44 -44
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/utils/result-parser.d.ts +11 -11
- package/dist/utils/result-parser.js +3 -3
- package/dist/utils/result-parser.js.map +1 -1
- package/package.json +5 -5
- package/src/create-db-context.ts +20 -20
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +259 -259
- package/src/ddl/relation-ddl.ts +89 -89
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +189 -189
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +2033 -2033
- package/src/exec/search-parser.ts +57 -57
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +2140 -2140
- package/src/query-builder/base/expr-renderer-base.ts +237 -237
- package/src/query-builder/base/query-builder-base.ts +213 -213
- package/src/query-builder/mssql/mssql-expr-renderer.ts +607 -607
- package/src/query-builder/mssql/mssql-query-builder.ts +650 -650
- package/src/query-builder/mysql/mysql-expr-renderer.ts +613 -613
- package/src/query-builder/mysql/mysql-query-builder.ts +759 -759
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +611 -611
- package/src/query-builder/postgresql/postgresql-query-builder.ts +686 -686
- package/src/query-builder/query-builder.ts +19 -19
- package/src/schema/factory/column-builder.ts +423 -423
- package/src/schema/factory/index-builder.ts +164 -164
- package/src/schema/factory/relation-builder.ts +453 -453
- package/src/schema/procedure-builder.ts +232 -232
- package/src/schema/table-builder.ts +319 -319
- package/src/schema/view-builder.ts +221 -221
- package/src/types/column.ts +188 -188
- package/src/types/db.ts +208 -208
- package/src/types/expr.ts +697 -697
- package/src/types/query-def.ts +513 -513
- package/src/utils/result-parser.ts +458 -458
- package/tests/db-context/create-db-context.spec.ts +224 -0
- package/tests/db-context/define-db-context.spec.ts +68 -0
- package/tests/ddl/basic.expected.ts +341 -0
- package/tests/ddl/basic.spec.ts +714 -0
- package/tests/ddl/column-builder.expected.ts +310 -0
- package/tests/ddl/column-builder.spec.ts +637 -0
- package/tests/ddl/index-builder.expected.ts +38 -0
- package/tests/ddl/index-builder.spec.ts +202 -0
- package/tests/ddl/procedure-builder.expected.ts +52 -0
- package/tests/ddl/procedure-builder.spec.ts +234 -0
- package/tests/ddl/relation-builder.expected.ts +36 -0
- package/tests/ddl/relation-builder.spec.ts +372 -0
- package/tests/ddl/table-builder.expected.ts +113 -0
- package/tests/ddl/table-builder.spec.ts +433 -0
- package/tests/ddl/view-builder.expected.ts +38 -0
- package/tests/ddl/view-builder.spec.ts +176 -0
- package/tests/dml/delete.expected.ts +96 -0
- package/tests/dml/delete.spec.ts +160 -0
- package/tests/dml/insert.expected.ts +192 -0
- package/tests/dml/insert.spec.ts +288 -0
- package/tests/dml/update.expected.ts +176 -0
- package/tests/dml/update.spec.ts +318 -0
- package/tests/dml/upsert.expected.ts +215 -0
- package/tests/dml/upsert.spec.ts +242 -0
- package/tests/errors/queryable-errors.spec.ts +177 -0
- package/tests/escape.spec.ts +100 -0
- package/tests/examples/pivot.expected.ts +211 -0
- package/tests/examples/pivot.spec.ts +533 -0
- package/tests/examples/sampling.expected.ts +69 -0
- package/tests/examples/sampling.spec.ts +104 -0
- package/tests/examples/unpivot.expected.ts +120 -0
- package/tests/examples/unpivot.spec.ts +226 -0
- package/tests/exec/search-parser.spec.ts +283 -0
- package/tests/executable/basic.expected.ts +18 -0
- package/tests/executable/basic.spec.ts +54 -0
- package/tests/expr/comparison.expected.ts +282 -0
- package/tests/expr/comparison.spec.ts +400 -0
- package/tests/expr/conditional.expected.ts +134 -0
- package/tests/expr/conditional.spec.ts +276 -0
- package/tests/expr/date.expected.ts +332 -0
- package/tests/expr/date.spec.ts +526 -0
- package/tests/expr/math.expected.ts +62 -0
- package/tests/expr/math.spec.ts +106 -0
- package/tests/expr/string.expected.ts +218 -0
- package/tests/expr/string.spec.ts +356 -0
- package/tests/expr/utility.expected.ts +147 -0
- package/tests/expr/utility.spec.ts +182 -0
- package/tests/select/basic.expected.ts +322 -0
- package/tests/select/basic.spec.ts +502 -0
- package/tests/select/filter.expected.ts +357 -0
- package/tests/select/filter.spec.ts +1068 -0
- package/tests/select/group.expected.ts +169 -0
- package/tests/select/group.spec.ts +244 -0
- package/tests/select/join.expected.ts +582 -0
- package/tests/select/join.spec.ts +805 -0
- package/tests/select/order.expected.ts +150 -0
- package/tests/select/order.spec.ts +189 -0
- package/tests/select/recursive-cte.expected.ts +244 -0
- package/tests/select/recursive-cte.spec.ts +514 -0
- package/tests/select/result-meta.spec.ts +270 -0
- package/tests/select/subquery.expected.ts +363 -0
- package/tests/select/subquery.spec.ts +537 -0
- package/tests/select/view.expected.ts +155 -0
- package/tests/select/view.spec.ts +235 -0
- package/tests/select/window.expected.ts +345 -0
- package/tests/select/window.spec.ts +618 -0
- package/tests/setup/MockExecutor.ts +18 -0
- package/tests/setup/TestDbContext.ts +59 -0
- package/tests/setup/models/Company.ts +13 -0
- package/tests/setup/models/Employee.ts +10 -0
- package/tests/setup/models/MonthlySales.ts +11 -0
- package/tests/setup/models/Post.ts +16 -0
- package/tests/setup/models/Sales.ts +10 -0
- package/tests/setup/models/User.ts +19 -0
- package/tests/setup/procedure/GetAllUsers.ts +9 -0
- package/tests/setup/procedure/GetUserById.ts +12 -0
- package/tests/setup/test-utils.ts +72 -0
- package/tests/setup/views/ActiveUsers.ts +8 -0
- package/tests/setup/views/UserSummary.ts +11 -0
- package/tests/types/nullable-queryable-record.spec.ts +145 -0
- package/tests/utils/result-parser-perf.spec.ts +210 -0
- package/tests/utils/result-parser.spec.ts +701 -0
- package/docs/expressions.md +0 -172
- package/docs/queries.md +0 -444
- package/docs/schema.md +0 -245
|
@@ -2,30 +2,30 @@ 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 relationship builder (N:1)
|
|
6
6
|
*
|
|
7
|
-
* 현재
|
|
8
|
-
* DB에 실제 FK
|
|
7
|
+
* 현재 Table에서 참조 Table로의 FK relationship definition
|
|
8
|
+
* DB에 실제 FK constraint Generate
|
|
9
9
|
*
|
|
10
|
-
* @template TOwner - 소유
|
|
11
|
-
* @template TTargetFn - 참조
|
|
10
|
+
* @template TOwner - 소유 Table builder type
|
|
11
|
+
* @template TTargetFn - 참조 Table builder factory type
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
* ```typescript
|
|
15
15
|
* const Post = Table("Post")
|
|
16
16
|
* .columns((c) => ({
|
|
17
17
|
* id: c.bigint().autoIncrement(),
|
|
18
|
-
* authorId: c.bigint(), // FK
|
|
18
|
+
* authorId: c.bigint(), // FK column
|
|
19
19
|
* }))
|
|
20
20
|
* .primaryKey("id")
|
|
21
21
|
* .relations((r) => ({
|
|
22
|
-
* // N:1
|
|
22
|
+
* // N:1 relationship - Post → User
|
|
23
23
|
* author: r.foreignKey(["authorId"], () => User),
|
|
24
24
|
* }));
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
|
-
* @see {@link ForeignKeyTargetBuilder} 역참조
|
|
28
|
-
* @see {@link RelationKeyBuilder} DB FK 없는
|
|
27
|
+
* @see {@link ForeignKeyTargetBuilder} 역참조 builder
|
|
28
|
+
* @see {@link RelationKeyBuilder} DB FK 없는 relationship
|
|
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
|
|
41
|
-
* @param meta.targetFn - 참조
|
|
42
|
-
* @param meta.description -
|
|
38
|
+
* @param meta - FK Metadata
|
|
39
|
+
* @param meta.ownerFn - 소유 Table factory
|
|
40
|
+
* @param meta.columns - FK column명 array
|
|
41
|
+
* @param meta.targetFn - 참조 Table factory
|
|
42
|
+
* @param meta.description - relationship 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
|
+
* relationship set description
|
|
52
52
|
*
|
|
53
|
-
* @param desc -
|
|
54
|
-
* @returns 새 ForeignKeyBuilder
|
|
53
|
+
* @param desc - relationship description
|
|
54
|
+
* @returns 새 ForeignKeyBuilder instance
|
|
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
|
-
* include() 시 배열로 로드 (single() 호출 시 단일
|
|
61
|
+
* 다른 Table에서 현재 Table을 참조하는 FK의 역참조 definition
|
|
62
|
+
* include() 시 배열로 로드 (single() 호출 시 단일 object)
|
|
63
63
|
*
|
|
64
|
-
* @template TTargetTableFn - 참조하는
|
|
65
|
-
* @template TIsSingle - 단일
|
|
64
|
+
* @template TTargetTableFn - 참조하는 Table builder factory type
|
|
65
|
+
* @template TIsSingle - 단일 object 여부
|
|
66
66
|
*
|
|
67
67
|
* @example
|
|
68
68
|
* ```typescript
|
|
@@ -73,15 +73,15 @@ export declare class ForeignKeyBuilder<TOwner extends TableBuilder<any, any>, TT
|
|
|
73
73
|
* }))
|
|
74
74
|
* .primaryKey("id")
|
|
75
75
|
* .relations((r) => ({
|
|
76
|
-
* // 1:N
|
|
76
|
+
* // 1:N relationship - User ← Post.author
|
|
77
77
|
* posts: r.foreignKeyTarget(() => Post, "author"),
|
|
78
78
|
*
|
|
79
|
-
* // 1:1
|
|
79
|
+
* // 1:1 relationship (단일 object)
|
|
80
80
|
* profile: r.foreignKeyTarget(() => Profile, "user").single(),
|
|
81
81
|
* }));
|
|
82
82
|
* ```
|
|
83
83
|
*
|
|
84
|
-
* @see {@link ForeignKeyBuilder} FK
|
|
84
|
+
* @see {@link ForeignKeyBuilder} FK builder
|
|
85
85
|
*/
|
|
86
86
|
export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableBuilder<any, any>, TIsSingle extends boolean> {
|
|
87
87
|
readonly meta: {
|
|
@@ -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 역참조 Metadata
|
|
95
|
+
* @param meta.targetTableFn - 참조하는 Table factory
|
|
96
|
+
* @param meta.relationName - 참조하는 Table의 FK 관계명
|
|
97
|
+
* @param meta.description - relationship description
|
|
98
|
+
* @param meta.isSingle - 단일 object 여부
|
|
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
|
+
* relationship set description
|
|
108
108
|
*
|
|
109
|
-
* @param desc -
|
|
110
|
-
* @returns 새 ForeignKeyTargetBuilder
|
|
109
|
+
* @param desc - relationship description
|
|
110
|
+
* @returns 새 ForeignKeyTargetBuilder instance
|
|
111
111
|
*/
|
|
112
112
|
description(desc: string): ForeignKeyTargetBuilder<TTargetTableFn, TIsSingle>;
|
|
113
113
|
/**
|
|
114
|
-
* 단일
|
|
114
|
+
* 단일 object 관계로 설정 (1:1)
|
|
115
115
|
*
|
|
116
|
-
*
|
|
116
|
+
* Basic은 array (1:N), single() 호출 시 단일 object
|
|
117
117
|
*
|
|
118
|
-
* @returns 새 ForeignKeyTargetBuilder
|
|
118
|
+
* @returns 새 ForeignKeyTargetBuilder instance (isSingle=true)
|
|
119
119
|
*
|
|
120
120
|
* @example
|
|
121
121
|
* ```typescript
|
|
@@ -125,25 +125,25 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
|
|
|
125
125
|
single(): ForeignKeyTargetBuilder<TTargetTableFn, true>;
|
|
126
126
|
}
|
|
127
127
|
/**
|
|
128
|
-
* 논리적
|
|
128
|
+
* 논리적 relationship builder (N:1) - DB FK 미생성
|
|
129
129
|
*
|
|
130
130
|
* ForeignKeyBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
131
|
-
*
|
|
131
|
+
* View(View)에서도 사용 가능
|
|
132
132
|
*
|
|
133
|
-
* @template TOwner - 소유
|
|
134
|
-
* @template TTargetFn - 참조
|
|
133
|
+
* @template TOwner - 소유 Table/View builder type
|
|
134
|
+
* @template TTargetFn - 참조 Table/View builder factory type
|
|
135
135
|
*
|
|
136
136
|
* @example
|
|
137
137
|
* ```typescript
|
|
138
|
-
* //
|
|
138
|
+
* // View에서 Table로 relationship definition
|
|
139
139
|
* const UserSummary = View("UserSummary")
|
|
140
140
|
* .query((db: MyDb) => db.user().select(...))
|
|
141
141
|
* .relations((r) => ({
|
|
142
|
-
* //
|
|
142
|
+
* // View → Table (FK 미생성)
|
|
143
143
|
* company: r.relationKey(["companyId"], () => Company),
|
|
144
144
|
* }));
|
|
145
145
|
*
|
|
146
|
-
* //
|
|
146
|
+
* // Table에서 FK 없이 relationship definition
|
|
147
147
|
* const Report = Table("Report")
|
|
148
148
|
* .columns((c) => ({ userId: c.bigint() }))
|
|
149
149
|
* .relations((r) => ({
|
|
@@ -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 Generate 버전
|
|
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 - relationship Metadata
|
|
165
|
+
* @param meta.ownerFn - 소유 Table/View factory
|
|
166
|
+
* @param meta.columns - relationship column명 array
|
|
167
|
+
* @param meta.targetFn - 참조 Table/View factory
|
|
168
|
+
* @param meta.description - relationship 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
|
+
* relationship set description
|
|
178
178
|
*
|
|
179
|
-
* @param desc -
|
|
180
|
-
* @returns 새 RelationKeyBuilder
|
|
179
|
+
* @param desc - relationship description
|
|
180
|
+
* @returns 새 RelationKeyBuilder instance
|
|
181
181
|
*/
|
|
182
182
|
description(desc: string): RelationKeyBuilder<TOwner, TTargetFn>;
|
|
183
183
|
}
|
|
184
184
|
/**
|
|
185
|
-
* 논리적
|
|
185
|
+
* 논리적 relationship 역참조 builder (1:N) - DB FK 미생성
|
|
186
186
|
*
|
|
187
187
|
* ForeignKeyTargetBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
188
|
-
*
|
|
188
|
+
* View(View)에서도 사용 가능
|
|
189
189
|
*
|
|
190
|
-
* @template TTargetTableFn - 참조하는
|
|
191
|
-
* @template TIsSingle - 단일
|
|
190
|
+
* @template TTargetTableFn - 참조하는 Table/View builder factory type
|
|
191
|
+
* @template TIsSingle - 단일 object 여부
|
|
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 Generate 버전
|
|
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 - relationship 역참조 Metadata
|
|
214
|
+
* @param meta.targetTableFn - 참조하는 Table/View factory
|
|
215
|
+
* @param meta.relationName - 참조하는 Table/View의 관계명
|
|
216
|
+
* @param meta.description - relationship description
|
|
217
|
+
* @param meta.isSingle - 단일 object 여부
|
|
218
218
|
*/
|
|
219
219
|
constructor(meta: {
|
|
220
220
|
targetTableFn: TTargetTableFn;
|
|
@@ -223,69 +223,69 @@ export declare class RelationKeyTargetBuilder<TTargetTableFn extends () => Table
|
|
|
223
223
|
isSingle?: TIsSingle;
|
|
224
224
|
});
|
|
225
225
|
/**
|
|
226
|
-
*
|
|
226
|
+
* relationship set description
|
|
227
227
|
*
|
|
228
|
-
* @param desc -
|
|
229
|
-
* @returns 새 RelationKeyTargetBuilder
|
|
228
|
+
* @param desc - relationship description
|
|
229
|
+
* @returns 새 RelationKeyTargetBuilder instance
|
|
230
230
|
*/
|
|
231
231
|
description(desc: string): RelationKeyTargetBuilder<TTargetTableFn, TIsSingle>;
|
|
232
232
|
/**
|
|
233
|
-
* 단일
|
|
233
|
+
* 단일 object 관계로 설정 (1:1)
|
|
234
234
|
*
|
|
235
|
-
*
|
|
235
|
+
* Basic은 array (1:N), single() 호출 시 단일 object
|
|
236
236
|
*
|
|
237
|
-
* @returns 새 RelationKeyTargetBuilder
|
|
237
|
+
* @returns 새 RelationKeyTargetBuilder instance (isSingle=true)
|
|
238
238
|
*/
|
|
239
239
|
single(): RelationKeyTargetBuilder<TTargetTableFn, true>;
|
|
240
240
|
}
|
|
241
241
|
/**
|
|
242
|
-
* FK
|
|
242
|
+
* FK relationship factory type (table 전용)
|
|
243
243
|
*
|
|
244
|
-
* @template TOwner - 소유
|
|
245
|
-
* @template TColumnKey -
|
|
244
|
+
* @template TOwner - 소유 Table builder type
|
|
245
|
+
* @template TColumnKey - Column key type
|
|
246
246
|
*/
|
|
247
247
|
type RelationFkFactory<TOwner extends TableBuilder<any, any>, TColumnKey extends string> = {
|
|
248
|
-
/** N:1 FK
|
|
248
|
+
/** N:1 FK relationship definition (DB FK Create) */
|
|
249
249
|
foreignKey<TTargetFn extends () => TableBuilder<any, any>>(columns: TColumnKey[], targetFn: TTargetFn): ForeignKeyBuilder<TOwner, TTargetFn>;
|
|
250
|
-
/** 1:N FK 역참조
|
|
250
|
+
/** 1:N FK 역참조 definition */
|
|
251
251
|
foreignKeyTarget<TTargetTableFn extends () => TableBuilder<any, any>>(targetTableFn: TTargetTableFn, relationName: string): ForeignKeyTargetBuilder<TTargetTableFn, false>;
|
|
252
252
|
};
|
|
253
253
|
/**
|
|
254
|
-
* 논리적
|
|
254
|
+
* 논리적 relationship factory type (table/View 공용)
|
|
255
255
|
*
|
|
256
|
-
* @template TOwner - 소유
|
|
257
|
-
* @template TColumnKey -
|
|
256
|
+
* @template TOwner - 소유 Table/View builder type
|
|
257
|
+
* @template TColumnKey - Column key type
|
|
258
258
|
*/
|
|
259
259
|
type RelationRkFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>, TColumnKey extends string> = {
|
|
260
|
-
/** N:1 논리적
|
|
260
|
+
/** N:1 논리적 relationship definition (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 논리적 역참조 definition */
|
|
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
|
+
* relationship builder factory Generate
|
|
267
267
|
*
|
|
268
|
-
* TableBuilder.relations() 및 ViewBuilder.relations()
|
|
269
|
-
*
|
|
268
|
+
* TableBuilder.relations() 및 ViewBuilder.relations()used in
|
|
269
|
+
* Table은 FK + RelationKey 모두 사용 가능, View는 RelationKey만 사용 가능
|
|
270
270
|
*
|
|
271
|
-
* @template TOwner - 소유
|
|
272
|
-
* @template TColumnKey -
|
|
273
|
-
* @param ownerFn - 소유
|
|
274
|
-
* @returns
|
|
271
|
+
* @template TOwner - 소유 Table/View builder type
|
|
272
|
+
* @template TColumnKey - Column key type
|
|
273
|
+
* @param ownerFn - 소유 Table/View factory function
|
|
274
|
+
* @returns relationship builder factory
|
|
275
275
|
*
|
|
276
276
|
* @example
|
|
277
277
|
* ```typescript
|
|
278
|
-
* //
|
|
278
|
+
* // Table - FK, RelationKey 모두 사용 가능
|
|
279
279
|
* const Post = Table("Post")
|
|
280
280
|
* .columns((c) => ({
|
|
281
281
|
* id: c.bigint(),
|
|
282
282
|
* authorId: c.bigint(),
|
|
283
283
|
* }))
|
|
284
284
|
* .relations((r) => ({
|
|
285
|
-
* author: r.foreignKey(["authorId"], () => User), // FK
|
|
285
|
+
* author: r.foreignKey(["authorId"], () => User), // FK Generate
|
|
286
286
|
* }));
|
|
287
287
|
*
|
|
288
|
-
* //
|
|
288
|
+
* // View - RelationKey만 사용 가능
|
|
289
289
|
* const UserSummary = View("UserSummary")
|
|
290
290
|
* .query(...)
|
|
291
291
|
* .relations((r) => ({
|
|
@@ -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
|
+
* relationship builder record type
|
|
299
299
|
*
|
|
300
|
-
* TableBuilder.relations() 및 ViewBuilder.relations()의
|
|
300
|
+
* TableBuilder.relations() 및 ViewBuilder.relations()의 return type
|
|
301
301
|
*/
|
|
302
302
|
export type RelationBuilderRecord = Record<string, ForeignKeyBuilder<any, any> | ForeignKeyTargetBuilder<any, any> | RelationKeyBuilder<any, any> | RelationKeyTargetBuilder<any, any>>;
|
|
303
303
|
/**
|
|
304
|
-
* FK/RelationKey에서 참조 대상
|
|
304
|
+
* FK/RelationKey에서 참조 대상 type 추출 (단일 object)
|
|
305
305
|
*
|
|
306
|
-
* N:1 관계의 참조 대상
|
|
306
|
+
* N:1 관계의 참조 대상 type
|
|
307
307
|
*
|
|
308
|
-
* @template T - FK 또는 RelationKey
|
|
308
|
+
* @template T - FK 또는 RelationKey builder type
|
|
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
|
-
* FKTarget/RelationKeyTarget에서 참조 대상
|
|
312
|
+
* FKTarget/RelationKeyTarget에서 참조 대상 type 추출 (array 또는 단일 object)
|
|
313
313
|
*
|
|
314
|
-
* 1:N 관계의 참조 대상
|
|
314
|
+
* 1:N 관계의 참조 대상 type (single() 호출 시 단일 object)
|
|
315
315
|
* TTargetTableFn: () => Post 형태로 lazy evaluation하여 순환참조 방지
|
|
316
316
|
*
|
|
317
|
-
* @template T - FKTarget 또는 RelationKeyTarget
|
|
317
|
+
* @template T - FKTarget 또는 RelationKeyTarget builder type
|
|
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
|
+
* relationship 정의에서 깊은 relationship Type inference
|
|
322
322
|
*
|
|
323
|
-
* 모든 관계를 optional로 만들어 include() 없이
|
|
323
|
+
* 모든 관계를 optional로 만들어 include() 없이 access 시 undefined processing
|
|
324
324
|
*
|
|
325
|
-
* @template TRelations -
|
|
325
|
+
* @template TRelations - relationship builder record type
|
|
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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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {} from "./column-builder.js";
|
|
2
2
|
class ForeignKeyBuilder {
|
|
3
3
|
/**
|
|
4
|
-
* @param meta - FK
|
|
5
|
-
* @param meta.ownerFn - 소유
|
|
6
|
-
* @param meta.columns - FK
|
|
7
|
-
* @param meta.targetFn - 참조
|
|
8
|
-
* @param meta.description -
|
|
4
|
+
* @param meta - FK Metadata
|
|
5
|
+
* @param meta.ownerFn - 소유 Table factory
|
|
6
|
+
* @param meta.columns - FK column명 array
|
|
7
|
+
* @param meta.targetFn - 참조 Table factory
|
|
8
|
+
* @param meta.description - relationship description
|
|
9
9
|
*/
|
|
10
10
|
constructor(meta) {
|
|
11
11
|
this.meta = meta;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* relationship set description
|
|
15
15
|
*
|
|
16
|
-
* @param desc -
|
|
17
|
-
* @returns 새 ForeignKeyBuilder
|
|
16
|
+
* @param desc - relationship description
|
|
17
|
+
* @returns 새 ForeignKeyBuilder instance
|
|
18
18
|
*/
|
|
19
19
|
description(desc) {
|
|
20
20
|
return new ForeignKeyBuilder({ ...this.meta, description: desc });
|
|
@@ -22,30 +22,30 @@ class ForeignKeyBuilder {
|
|
|
22
22
|
}
|
|
23
23
|
class ForeignKeyTargetBuilder {
|
|
24
24
|
/**
|
|
25
|
-
* @param meta - FK 역참조
|
|
26
|
-
* @param meta.targetTableFn - 참조하는
|
|
27
|
-
* @param meta.relationName - 참조하는
|
|
28
|
-
* @param meta.description -
|
|
29
|
-
* @param meta.isSingle - 단일
|
|
25
|
+
* @param meta - FK 역참조 Metadata
|
|
26
|
+
* @param meta.targetTableFn - 참조하는 Table factory
|
|
27
|
+
* @param meta.relationName - 참조하는 Table의 FK 관계명
|
|
28
|
+
* @param meta.description - relationship description
|
|
29
|
+
* @param meta.isSingle - 단일 object 여부
|
|
30
30
|
*/
|
|
31
31
|
constructor(meta) {
|
|
32
32
|
this.meta = meta;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* relationship set description
|
|
36
36
|
*
|
|
37
|
-
* @param desc -
|
|
38
|
-
* @returns 새 ForeignKeyTargetBuilder
|
|
37
|
+
* @param desc - relationship description
|
|
38
|
+
* @returns 새 ForeignKeyTargetBuilder instance
|
|
39
39
|
*/
|
|
40
40
|
description(desc) {
|
|
41
41
|
return new ForeignKeyTargetBuilder({ ...this.meta, description: desc });
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
44
|
-
* 단일
|
|
44
|
+
* 단일 object 관계로 설정 (1:1)
|
|
45
45
|
*
|
|
46
|
-
*
|
|
46
|
+
* Basic은 array (1:N), single() 호출 시 단일 object
|
|
47
47
|
*
|
|
48
|
-
* @returns 새 ForeignKeyTargetBuilder
|
|
48
|
+
* @returns 새 ForeignKeyTargetBuilder instance (isSingle=true)
|
|
49
49
|
*
|
|
50
50
|
* @example
|
|
51
51
|
* ```typescript
|
|
@@ -58,20 +58,20 @@ class ForeignKeyTargetBuilder {
|
|
|
58
58
|
}
|
|
59
59
|
class RelationKeyBuilder {
|
|
60
60
|
/**
|
|
61
|
-
* @param meta -
|
|
62
|
-
* @param meta.ownerFn - 소유
|
|
63
|
-
* @param meta.columns -
|
|
64
|
-
* @param meta.targetFn - 참조
|
|
65
|
-
* @param meta.description -
|
|
61
|
+
* @param meta - relationship Metadata
|
|
62
|
+
* @param meta.ownerFn - 소유 Table/View factory
|
|
63
|
+
* @param meta.columns - relationship column명 array
|
|
64
|
+
* @param meta.targetFn - 참조 Table/View factory
|
|
65
|
+
* @param meta.description - relationship description
|
|
66
66
|
*/
|
|
67
67
|
constructor(meta) {
|
|
68
68
|
this.meta = meta;
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
|
-
*
|
|
71
|
+
* relationship set description
|
|
72
72
|
*
|
|
73
|
-
* @param desc -
|
|
74
|
-
* @returns 새 RelationKeyBuilder
|
|
73
|
+
* @param desc - relationship description
|
|
74
|
+
* @returns 새 RelationKeyBuilder instance
|
|
75
75
|
*/
|
|
76
76
|
description(desc) {
|
|
77
77
|
return new RelationKeyBuilder({ ...this.meta, description: desc });
|
|
@@ -79,30 +79,30 @@ class RelationKeyBuilder {
|
|
|
79
79
|
}
|
|
80
80
|
class RelationKeyTargetBuilder {
|
|
81
81
|
/**
|
|
82
|
-
* @param meta -
|
|
83
|
-
* @param meta.targetTableFn - 참조하는
|
|
84
|
-
* @param meta.relationName - 참조하는
|
|
85
|
-
* @param meta.description -
|
|
86
|
-
* @param meta.isSingle - 단일
|
|
82
|
+
* @param meta - relationship 역참조 Metadata
|
|
83
|
+
* @param meta.targetTableFn - 참조하는 Table/View factory
|
|
84
|
+
* @param meta.relationName - 참조하는 Table/View의 관계명
|
|
85
|
+
* @param meta.description - relationship description
|
|
86
|
+
* @param meta.isSingle - 단일 object 여부
|
|
87
87
|
*/
|
|
88
88
|
constructor(meta) {
|
|
89
89
|
this.meta = meta;
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
-
*
|
|
92
|
+
* relationship set description
|
|
93
93
|
*
|
|
94
|
-
* @param desc -
|
|
95
|
-
* @returns 새 RelationKeyTargetBuilder
|
|
94
|
+
* @param desc - relationship description
|
|
95
|
+
* @returns 새 RelationKeyTargetBuilder instance
|
|
96
96
|
*/
|
|
97
97
|
description(desc) {
|
|
98
98
|
return new RelationKeyTargetBuilder({ ...this.meta, description: desc });
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
|
-
* 단일
|
|
101
|
+
* 단일 object 관계로 설정 (1:1)
|
|
102
102
|
*
|
|
103
|
-
*
|
|
103
|
+
* Basic은 array (1:N), single() 호출 시 단일 object
|
|
104
104
|
*
|
|
105
|
-
* @returns 새 RelationKeyTargetBuilder
|
|
105
|
+
* @returns 새 RelationKeyTargetBuilder instance (isSingle=true)
|
|
106
106
|
*/
|
|
107
107
|
single() {
|
|
108
108
|
return new RelationKeyTargetBuilder({ ...this.meta, isSingle: true });
|