@simplysm/orm-node 13.0.0-beta.6
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/.cache/typecheck-node.tsbuildinfo +1 -0
- package/README.md +418 -0
- package/dist/connections/mssql-db-conn.js +386 -0
- package/dist/connections/mssql-db-conn.js.map +7 -0
- package/dist/connections/mysql-db-conn.js +227 -0
- package/dist/connections/mysql-db-conn.js.map +7 -0
- package/dist/connections/postgresql-db-conn.js +191 -0
- package/dist/connections/postgresql-db-conn.js.map +7 -0
- package/dist/core-common/src/common.types.d.ts +74 -0
- package/dist/core-common/src/common.types.d.ts.map +1 -0
- package/dist/core-common/src/env.d.ts +6 -0
- package/dist/core-common/src/env.d.ts.map +1 -0
- package/dist/core-common/src/errors/argument-error.d.ts +25 -0
- package/dist/core-common/src/errors/argument-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts +29 -0
- package/dist/core-common/src/errors/not-implemented-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/sd-error.d.ts +27 -0
- package/dist/core-common/src/errors/sd-error.d.ts.map +1 -0
- package/dist/core-common/src/errors/timeout-error.d.ts +31 -0
- package/dist/core-common/src/errors/timeout-error.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts +15 -0
- package/dist/core-common/src/extensions/arr-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts +19 -0
- package/dist/core-common/src/extensions/arr-ext.helpers.d.ts.map +1 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts +215 -0
- package/dist/core-common/src/extensions/arr-ext.types.d.ts.map +1 -0
- package/dist/core-common/src/extensions/map-ext.d.ts +57 -0
- package/dist/core-common/src/extensions/map-ext.d.ts.map +1 -0
- package/dist/core-common/src/extensions/set-ext.d.ts +36 -0
- package/dist/core-common/src/extensions/set-ext.d.ts.map +1 -0
- package/dist/core-common/src/features/debounce-queue.d.ts +53 -0
- package/dist/core-common/src/features/debounce-queue.d.ts.map +1 -0
- package/dist/core-common/src/features/event-emitter.d.ts +66 -0
- package/dist/core-common/src/features/event-emitter.d.ts.map +1 -0
- package/dist/core-common/src/features/serial-queue.d.ts +47 -0
- package/dist/core-common/src/features/serial-queue.d.ts.map +1 -0
- package/dist/core-common/src/index.d.ts +32 -0
- package/dist/core-common/src/index.d.ts.map +1 -0
- package/dist/core-common/src/types/date-only.d.ts +152 -0
- package/dist/core-common/src/types/date-only.d.ts.map +1 -0
- package/dist/core-common/src/types/date-time.d.ts +96 -0
- package/dist/core-common/src/types/date-time.d.ts.map +1 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts +80 -0
- package/dist/core-common/src/types/lazy-gc-map.d.ts.map +1 -0
- package/dist/core-common/src/types/time.d.ts +68 -0
- package/dist/core-common/src/types/time.d.ts.map +1 -0
- package/dist/core-common/src/types/uuid.d.ts +35 -0
- package/dist/core-common/src/types/uuid.d.ts.map +1 -0
- package/dist/core-common/src/utils/bytes.d.ts +51 -0
- package/dist/core-common/src/utils/bytes.d.ts.map +1 -0
- package/dist/core-common/src/utils/date-format.d.ts +90 -0
- package/dist/core-common/src/utils/date-format.d.ts.map +1 -0
- package/dist/core-common/src/utils/json.d.ts +34 -0
- package/dist/core-common/src/utils/json.d.ts.map +1 -0
- package/dist/core-common/src/utils/num.d.ts +60 -0
- package/dist/core-common/src/utils/num.d.ts.map +1 -0
- package/dist/core-common/src/utils/obj.d.ts +258 -0
- package/dist/core-common/src/utils/obj.d.ts.map +1 -0
- package/dist/core-common/src/utils/path.d.ts +23 -0
- package/dist/core-common/src/utils/path.d.ts.map +1 -0
- package/dist/core-common/src/utils/primitive.d.ts +18 -0
- package/dist/core-common/src/utils/primitive.d.ts.map +1 -0
- package/dist/core-common/src/utils/str.d.ts +103 -0
- package/dist/core-common/src/utils/str.d.ts.map +1 -0
- package/dist/core-common/src/utils/template-strings.d.ts +84 -0
- package/dist/core-common/src/utils/template-strings.d.ts.map +1 -0
- package/dist/core-common/src/utils/transferable.d.ts +47 -0
- package/dist/core-common/src/utils/transferable.d.ts.map +1 -0
- package/dist/core-common/src/utils/wait.d.ts +19 -0
- package/dist/core-common/src/utils/wait.d.ts.map +1 -0
- package/dist/core-common/src/utils/xml.d.ts +36 -0
- package/dist/core-common/src/utils/xml.d.ts.map +1 -0
- package/dist/core-common/src/zip/sd-zip.d.ts +80 -0
- package/dist/core-common/src/zip/sd-zip.d.ts.map +1 -0
- package/dist/db-conn-factory.js +88 -0
- package/dist/db-conn-factory.js.map +7 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +7 -0
- package/dist/node-db-context-executor.js +129 -0
- package/dist/node-db-context-executor.js.map +7 -0
- package/dist/orm-common/src/db-context.d.ts +669 -0
- package/dist/orm-common/src/db-context.d.ts.map +1 -0
- package/dist/orm-common/src/errors/db-transaction-error.d.ts +51 -0
- package/dist/orm-common/src/errors/db-transaction-error.d.ts.map +1 -0
- package/dist/orm-common/src/exec/executable.d.ts +79 -0
- package/dist/orm-common/src/exec/executable.d.ts.map +1 -0
- package/dist/orm-common/src/exec/queryable.d.ts +708 -0
- package/dist/orm-common/src/exec/queryable.d.ts.map +1 -0
- package/dist/orm-common/src/exec/search-parser.d.ts +72 -0
- package/dist/orm-common/src/exec/search-parser.d.ts.map +1 -0
- package/dist/orm-common/src/expr/expr-unit.d.ts +25 -0
- package/dist/orm-common/src/expr/expr-unit.d.ts.map +1 -0
- package/dist/orm-common/src/expr/expr.d.ts +1369 -0
- package/dist/orm-common/src/expr/expr.d.ts.map +1 -0
- package/dist/orm-common/src/index.d.ts +32 -0
- package/dist/orm-common/src/index.d.ts.map +1 -0
- package/dist/orm-common/src/models/system-migration.d.ts +10 -0
- package/dist/orm-common/src/models/system-migration.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts +95 -0
- package/dist/orm-common/src/query-builder/base/expr-renderer-base.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts +66 -0
- package/dist/orm-common/src/query-builder/base/query-builder-base.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts +45 -0
- package/dist/orm-common/src/query-builder/mssql/mssql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts +54 -0
- package/dist/orm-common/src/query-builder/mysql/mysql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts +84 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts +52 -0
- package/dist/orm-common/src/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/query-builder/query-builder.d.ts +7 -0
- package/dist/orm-common/src/query-builder/query-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/column-builder.d.ts +394 -0
- package/dist/orm-common/src/schema/factory/column-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/index-builder.d.ts +151 -0
- package/dist/orm-common/src/schema/factory/index-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts +337 -0
- package/dist/orm-common/src/schema/factory/relation-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/procedure-builder.d.ts +202 -0
- package/dist/orm-common/src/schema/procedure-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/table-builder.d.ts +259 -0
- package/dist/orm-common/src/schema/table-builder.d.ts.map +1 -0
- package/dist/orm-common/src/schema/view-builder.d.ts +183 -0
- package/dist/orm-common/src/schema/view-builder.d.ts.map +1 -0
- package/dist/orm-common/src/types/column.d.ts +172 -0
- package/dist/orm-common/src/types/column.d.ts.map +1 -0
- package/dist/orm-common/src/types/db.d.ts +175 -0
- package/dist/orm-common/src/types/db.d.ts.map +1 -0
- package/dist/orm-common/src/types/expr.d.ts +474 -0
- package/dist/orm-common/src/types/expr.d.ts.map +1 -0
- package/dist/orm-common/src/types/query-def.d.ts +351 -0
- package/dist/orm-common/src/types/query-def.d.ts.map +1 -0
- package/dist/orm-common/src/utils/result-parser.d.ts +38 -0
- package/dist/orm-common/src/utils/result-parser.d.ts.map +1 -0
- package/dist/orm-node/src/connections/mssql-db-conn.d.ts +44 -0
- package/dist/orm-node/src/connections/mssql-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/connections/mysql-db-conn.d.ts +38 -0
- package/dist/orm-node/src/connections/mysql-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/connections/postgresql-db-conn.d.ts +39 -0
- package/dist/orm-node/src/connections/postgresql-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/db-conn-factory.d.ts +25 -0
- package/dist/orm-node/src/db-conn-factory.d.ts.map +1 -0
- package/dist/orm-node/src/index.d.ts +9 -0
- package/dist/orm-node/src/index.d.ts.map +1 -0
- package/dist/orm-node/src/node-db-context-executor.d.ts +77 -0
- package/dist/orm-node/src/node-db-context-executor.d.ts.map +1 -0
- package/dist/orm-node/src/pooled-db-conn.d.ts +79 -0
- package/dist/orm-node/src/pooled-db-conn.d.ts.map +1 -0
- package/dist/orm-node/src/sd-orm.d.ts +78 -0
- package/dist/orm-node/src/sd-orm.d.ts.map +1 -0
- package/dist/orm-node/src/types/db-conn.d.ts +159 -0
- package/dist/orm-node/src/types/db-conn.d.ts.map +1 -0
- package/dist/pooled-db-conn.js +134 -0
- package/dist/pooled-db-conn.js.map +7 -0
- package/dist/sd-orm.js +44 -0
- package/dist/sd-orm.js.map +7 -0
- package/dist/types/db-conn.js +17 -0
- package/dist/types/db-conn.js.map +7 -0
- package/package.json +50 -0
- package/src/connections/mssql-db-conn.ts +483 -0
- package/src/connections/mysql-db-conn.ts +299 -0
- package/src/connections/postgresql-db-conn.ts +254 -0
- package/src/db-conn-factory.ts +114 -0
- package/src/index.ts +13 -0
- package/src/node-db-context-executor.ts +162 -0
- package/src/pooled-db-conn.ts +175 -0
- package/src/sd-orm.ts +102 -0
- package/src/types/db-conn.ts +196 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 인덱스 정의 빌더
|
|
3
|
+
*
|
|
4
|
+
* Fluent API를 통해 인덱스의 컬럼, 유니크 여부, 정렬 순서를 정의
|
|
5
|
+
* TableBuilder.indexes()에서 사용
|
|
6
|
+
*
|
|
7
|
+
* @template TKeys - 인덱스 컬럼 키 배열 타입
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* Table("User")
|
|
12
|
+
* .columns((c) => ({
|
|
13
|
+
* id: c.bigint(),
|
|
14
|
+
* email: c.varchar(200),
|
|
15
|
+
* name: c.varchar(100),
|
|
16
|
+
* createdAt: c.datetime(),
|
|
17
|
+
* }))
|
|
18
|
+
* .indexes((i) => [
|
|
19
|
+
* // 유니크 인덱스
|
|
20
|
+
* i.index("email").unique(),
|
|
21
|
+
*
|
|
22
|
+
* // 복합 인덱스 + 정렬 순서
|
|
23
|
+
* i.index("name", "createdAt").orderBy("ASC", "DESC"),
|
|
24
|
+
*
|
|
25
|
+
* // 커스텀 이름
|
|
26
|
+
* i.index("createdAt").name("IX_User_CreatedAt"),
|
|
27
|
+
* ]);
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @see {@link createIndexFactory} 인덱스 팩토리
|
|
31
|
+
* @see {@link TableBuilder} 테이블 빌더
|
|
32
|
+
*/
|
|
33
|
+
export declare class IndexBuilder<TKeys extends string[]> {
|
|
34
|
+
readonly meta: {
|
|
35
|
+
columns: TKeys;
|
|
36
|
+
name?: string;
|
|
37
|
+
unique?: boolean;
|
|
38
|
+
orderBy?: {
|
|
39
|
+
[K in keyof TKeys]: "ASC" | "DESC";
|
|
40
|
+
};
|
|
41
|
+
description?: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @param meta - 인덱스 메타데이터
|
|
45
|
+
* @param meta.columns - 인덱스 컬럼 배열
|
|
46
|
+
* @param meta.name - 인덱스 이름 (선택)
|
|
47
|
+
* @param meta.unique - 유니크 인덱스 여부
|
|
48
|
+
* @param meta.orderBy - 컬럼별 정렬 순서
|
|
49
|
+
* @param meta.description - 인덱스 설명
|
|
50
|
+
*/
|
|
51
|
+
constructor(meta: {
|
|
52
|
+
columns: TKeys;
|
|
53
|
+
name?: string;
|
|
54
|
+
unique?: boolean;
|
|
55
|
+
orderBy?: {
|
|
56
|
+
[K in keyof TKeys]: "ASC" | "DESC";
|
|
57
|
+
};
|
|
58
|
+
description?: string;
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* 인덱스 이름 설정
|
|
62
|
+
*
|
|
63
|
+
* @param name - 인덱스 이름
|
|
64
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* i.index("email").name("IX_User_Email")
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
name(name: string): IndexBuilder<TKeys>;
|
|
72
|
+
/**
|
|
73
|
+
* 유니크 인덱스 설정
|
|
74
|
+
*
|
|
75
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* i.index("email").unique()
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
unique(): IndexBuilder<TKeys>;
|
|
83
|
+
/**
|
|
84
|
+
* 정렬 순서 설정
|
|
85
|
+
*
|
|
86
|
+
* 각 컬럼에 대해 ASC 또는 DESC 지정
|
|
87
|
+
*
|
|
88
|
+
* @param orderBy - 컬럼별 정렬 순서 (컬럼 수와 동일해야 함)
|
|
89
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* // 단일 컬럼
|
|
94
|
+
* i.index("createdAt").orderBy("DESC")
|
|
95
|
+
*
|
|
96
|
+
* // 복합 컬럼
|
|
97
|
+
* i.index("status", "createdAt").orderBy("ASC", "DESC")
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
orderBy(...orderBy: {
|
|
101
|
+
[K in keyof TKeys]: "ASC" | "DESC";
|
|
102
|
+
}): IndexBuilder<TKeys>;
|
|
103
|
+
/**
|
|
104
|
+
* 인덱스 설명 설정
|
|
105
|
+
*
|
|
106
|
+
* @param description - 인덱스 설명 (DDL 주석으로 사용)
|
|
107
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
108
|
+
*/
|
|
109
|
+
description(description: string): IndexBuilder<TKeys>;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* 인덱스 빌더 팩토리 생성
|
|
113
|
+
*
|
|
114
|
+
* TableBuilder.indexes()에서 사용하는 인덱스 팩토리
|
|
115
|
+
*
|
|
116
|
+
* @template TColumnKey - 테이블 컬럼 키 타입
|
|
117
|
+
* @returns 인덱스 생성 메서드를 포함한 객체
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* Table("User")
|
|
122
|
+
* .columns((c) => ({
|
|
123
|
+
* id: c.bigint(),
|
|
124
|
+
* email: c.varchar(200),
|
|
125
|
+
* name: c.varchar(100),
|
|
126
|
+
* }))
|
|
127
|
+
* .indexes((i) => [
|
|
128
|
+
* i.index("email").unique(),
|
|
129
|
+
* i.index("name"),
|
|
130
|
+
* ]);
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @see {@link IndexBuilder} 인덱스 빌더 클래스
|
|
134
|
+
*/
|
|
135
|
+
export declare function createIndexFactory<TColumnKey extends string>(): {
|
|
136
|
+
/**
|
|
137
|
+
* 인덱스 생성
|
|
138
|
+
*
|
|
139
|
+
* @template TKeys - 인덱스 컬럼 키 배열 타입
|
|
140
|
+
* @param columns - 인덱스 컬럼명들
|
|
141
|
+
* @returns IndexBuilder 인스턴스
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* i.index("email") // 단일 컬럼
|
|
146
|
+
* i.index("name", "email") // 복합 컬럼
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
index<TKeys extends TColumnKey[]>(...columns: TKeys): IndexBuilder<TKeys>;
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=index-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-builder.d.ts","sourceRoot":"","sources":["../../../../../../orm-common/src/schema/factory/index-builder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,YAAY,CAAC,KAAK,SAAS,MAAM,EAAE;IAU5C,QAAQ,CAAC,IAAI,EAAE;QACb,OAAO,EAAE,KAAK,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE;aAAG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM;SAAE,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAfH;;;;;;;OAOG;gBAEQ,IAAI,EAAE;QACb,OAAO,EAAE,KAAK,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE;aAAG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM;SAAE,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAGH;;;;;;;;;;OAUG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;IAIvC;;;;;;;;;OASG;IACH,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;IAI7B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,GAAG,OAAO,EAAE;SAAG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM;KAAE,GAAG,YAAY,CAAC,KAAK,CAAC;IAIhF;;;;;OAKG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC;CAGtD;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,SAAS,MAAM;IAExD;;;;;;;;;;;;OAYG;UACG,KAAK,SAAS,UAAU,EAAE,sBAA2B,YAAY,CAAC,KAAK,CAAC;EAIjF"}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
import { type InferColumns } from "./column-builder";
|
|
2
|
+
import type { TableBuilder } from "../table-builder";
|
|
3
|
+
import type { ViewBuilder } from "../view-builder";
|
|
4
|
+
/**
|
|
5
|
+
* Foreign Key 관계 빌더 (N:1)
|
|
6
|
+
*
|
|
7
|
+
* 현재 테이블에서 참조 테이블로의 FK 관계 정의
|
|
8
|
+
* DB에 실제 FK 제약조건 생성
|
|
9
|
+
*
|
|
10
|
+
* @template TOwner - 소유 테이블 빌더 타입
|
|
11
|
+
* @template TTargetFn - 참조 테이블 빌더 팩토리 타입
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const Post = Table("Post")
|
|
16
|
+
* .columns((c) => ({
|
|
17
|
+
* id: c.bigint().autoIncrement(),
|
|
18
|
+
* authorId: c.bigint(), // FK 컬럼
|
|
19
|
+
* }))
|
|
20
|
+
* .primaryKey("id")
|
|
21
|
+
* .relations((r) => ({
|
|
22
|
+
* // N:1 관계 - Post → User
|
|
23
|
+
* author: r.foreignKey(["authorId"], () => User),
|
|
24
|
+
* }));
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @see {@link ForeignKeyTargetBuilder} 역참조 빌더
|
|
28
|
+
* @see {@link RelationKeyBuilder} DB FK 없는 관계
|
|
29
|
+
*/
|
|
30
|
+
export declare class ForeignKeyBuilder<TOwner extends TableBuilder<any, any>, TTargetFn extends () => TableBuilder<any, any>> {
|
|
31
|
+
readonly meta: {
|
|
32
|
+
ownerFn: () => TOwner;
|
|
33
|
+
columns: string[];
|
|
34
|
+
targetFn: TTargetFn;
|
|
35
|
+
description?: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @param meta - FK 메타데이터
|
|
39
|
+
* @param meta.ownerFn - 소유 테이블 팩토리
|
|
40
|
+
* @param meta.columns - FK 컬럼명 배열
|
|
41
|
+
* @param meta.targetFn - 참조 테이블 팩토리
|
|
42
|
+
* @param meta.description - 관계 설명
|
|
43
|
+
*/
|
|
44
|
+
constructor(meta: {
|
|
45
|
+
ownerFn: () => TOwner;
|
|
46
|
+
columns: string[];
|
|
47
|
+
targetFn: TTargetFn;
|
|
48
|
+
description?: string;
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* 관계 설명 설정
|
|
52
|
+
*
|
|
53
|
+
* @param desc - 관계 설명
|
|
54
|
+
* @returns 새 ForeignKeyBuilder 인스턴스
|
|
55
|
+
*/
|
|
56
|
+
description(desc: string): ForeignKeyBuilder<TOwner, TTargetFn>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Foreign Key 역참조 빌더 (1:N)
|
|
60
|
+
*
|
|
61
|
+
* 다른 테이블에서 현재 테이블을 참조하는 FK의 역참조 정의
|
|
62
|
+
* include() 시 배열로 로드 (single() 호출 시 단일 객체)
|
|
63
|
+
*
|
|
64
|
+
* @template TTargetTableFn - 참조하는 테이블 빌더 팩토리 타입
|
|
65
|
+
* @template TIsSingle - 단일 객체 여부
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const User = Table("User")
|
|
70
|
+
* .columns((c) => ({
|
|
71
|
+
* id: c.bigint().autoIncrement(),
|
|
72
|
+
* name: c.varchar(100),
|
|
73
|
+
* }))
|
|
74
|
+
* .primaryKey("id")
|
|
75
|
+
* .relations((r) => ({
|
|
76
|
+
* // 1:N 관계 - User ← Post.author
|
|
77
|
+
* posts: r.foreignKeyTarget(() => Post, "author"),
|
|
78
|
+
*
|
|
79
|
+
* // 1:1 관계 (단일 객체)
|
|
80
|
+
* profile: r.foreignKeyTarget(() => Profile, "user").single(),
|
|
81
|
+
* }));
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @see {@link ForeignKeyBuilder} FK 빌더
|
|
85
|
+
*/
|
|
86
|
+
export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableBuilder<any, any>, TIsSingle extends boolean> {
|
|
87
|
+
readonly meta: {
|
|
88
|
+
targetTableFn: TTargetTableFn;
|
|
89
|
+
relationName: string;
|
|
90
|
+
description?: string;
|
|
91
|
+
isSingle?: TIsSingle;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* @param meta - FK 역참조 메타데이터
|
|
95
|
+
* @param meta.targetTableFn - 참조하는 테이블 팩토리
|
|
96
|
+
* @param meta.relationName - 참조하는 테이블의 FK 관계명
|
|
97
|
+
* @param meta.description - 관계 설명
|
|
98
|
+
* @param meta.isSingle - 단일 객체 여부
|
|
99
|
+
*/
|
|
100
|
+
constructor(meta: {
|
|
101
|
+
targetTableFn: TTargetTableFn;
|
|
102
|
+
relationName: string;
|
|
103
|
+
description?: string;
|
|
104
|
+
isSingle?: TIsSingle;
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* 관계 설명 설정
|
|
108
|
+
*
|
|
109
|
+
* @param desc - 관계 설명
|
|
110
|
+
* @returns 새 ForeignKeyTargetBuilder 인스턴스
|
|
111
|
+
*/
|
|
112
|
+
description(desc: string): ForeignKeyTargetBuilder<TTargetTableFn, TIsSingle>;
|
|
113
|
+
/**
|
|
114
|
+
* 단일 객체 관계로 설정 (1:1)
|
|
115
|
+
*
|
|
116
|
+
* 기본은 배열 (1:N), single() 호출 시 단일 객체
|
|
117
|
+
*
|
|
118
|
+
* @returns 새 ForeignKeyTargetBuilder 인스턴스 (isSingle=true)
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* profile: r.foreignKeyTarget(() => Profile, "user").single()
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
single(): ForeignKeyTargetBuilder<TTargetTableFn, true>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 논리적 관계 빌더 (N:1) - DB FK 미생성
|
|
129
|
+
*
|
|
130
|
+
* ForeignKeyBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
131
|
+
* 뷰(View)에서도 사용 가능
|
|
132
|
+
*
|
|
133
|
+
* @template TOwner - 소유 테이블/뷰 빌더 타입
|
|
134
|
+
* @template TTargetFn - 참조 테이블/뷰 빌더 팩토리 타입
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* // 뷰에서 테이블로 관계 정의
|
|
139
|
+
* const UserSummary = View("UserSummary")
|
|
140
|
+
* .query((db: MyDb) => db.user().select(...))
|
|
141
|
+
* .relations((r) => ({
|
|
142
|
+
* // 뷰 → 테이블 (FK 미생성)
|
|
143
|
+
* company: r.relationKey(["companyId"], () => Company),
|
|
144
|
+
* }));
|
|
145
|
+
*
|
|
146
|
+
* // 테이블에서 FK 없이 관계 정의
|
|
147
|
+
* const Report = Table("Report")
|
|
148
|
+
* .columns((c) => ({ userId: c.bigint() }))
|
|
149
|
+
* .relations((r) => ({
|
|
150
|
+
* user: r.relationKey(["userId"], () => User),
|
|
151
|
+
* }));
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @see {@link ForeignKeyBuilder} DB FK 생성 버전
|
|
155
|
+
*/
|
|
156
|
+
export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>, TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>> {
|
|
157
|
+
readonly meta: {
|
|
158
|
+
ownerFn: () => TOwner;
|
|
159
|
+
columns: string[];
|
|
160
|
+
targetFn: TTargetFn;
|
|
161
|
+
description?: string;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* @param meta - 관계 메타데이터
|
|
165
|
+
* @param meta.ownerFn - 소유 테이블/뷰 팩토리
|
|
166
|
+
* @param meta.columns - 관계 컬럼명 배열
|
|
167
|
+
* @param meta.targetFn - 참조 테이블/뷰 팩토리
|
|
168
|
+
* @param meta.description - 관계 설명
|
|
169
|
+
*/
|
|
170
|
+
constructor(meta: {
|
|
171
|
+
ownerFn: () => TOwner;
|
|
172
|
+
columns: string[];
|
|
173
|
+
targetFn: TTargetFn;
|
|
174
|
+
description?: string;
|
|
175
|
+
});
|
|
176
|
+
/**
|
|
177
|
+
* 관계 설명 설정
|
|
178
|
+
*
|
|
179
|
+
* @param desc - 관계 설명
|
|
180
|
+
* @returns 새 RelationKeyBuilder 인스턴스
|
|
181
|
+
*/
|
|
182
|
+
description(desc: string): RelationKeyBuilder<TOwner, TTargetFn>;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* 논리적 관계 역참조 빌더 (1:N) - DB FK 미생성
|
|
186
|
+
*
|
|
187
|
+
* ForeignKeyTargetBuilder와 동일하지만 DB에 FK 제약조건을 생성하지 않음
|
|
188
|
+
* 뷰(View)에서도 사용 가능
|
|
189
|
+
*
|
|
190
|
+
* @template TTargetTableFn - 참조하는 테이블/뷰 빌더 팩토리 타입
|
|
191
|
+
* @template TIsSingle - 단일 객체 여부
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* const Company = Table("Company")
|
|
196
|
+
* .columns((c) => ({ id: c.bigint() }))
|
|
197
|
+
* .relations((r) => ({
|
|
198
|
+
* // 역참조 (FK 미생성)
|
|
199
|
+
* employees: r.relationKeyTarget(() => UserSummary, "company"),
|
|
200
|
+
* }));
|
|
201
|
+
* ```
|
|
202
|
+
*
|
|
203
|
+
* @see {@link ForeignKeyTargetBuilder} DB FK 생성 버전
|
|
204
|
+
*/
|
|
205
|
+
export declare class RelationKeyTargetBuilder<TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>, TIsSingle extends boolean> {
|
|
206
|
+
readonly meta: {
|
|
207
|
+
targetTableFn: TTargetTableFn;
|
|
208
|
+
relationName: string;
|
|
209
|
+
description?: string;
|
|
210
|
+
isSingle?: TIsSingle;
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* @param meta - 관계 역참조 메타데이터
|
|
214
|
+
* @param meta.targetTableFn - 참조하는 테이블/뷰 팩토리
|
|
215
|
+
* @param meta.relationName - 참조하는 테이블/뷰의 관계명
|
|
216
|
+
* @param meta.description - 관계 설명
|
|
217
|
+
* @param meta.isSingle - 단일 객체 여부
|
|
218
|
+
*/
|
|
219
|
+
constructor(meta: {
|
|
220
|
+
targetTableFn: TTargetTableFn;
|
|
221
|
+
relationName: string;
|
|
222
|
+
description?: string;
|
|
223
|
+
isSingle?: TIsSingle;
|
|
224
|
+
});
|
|
225
|
+
/**
|
|
226
|
+
* 관계 설명 설정
|
|
227
|
+
*
|
|
228
|
+
* @param desc - 관계 설명
|
|
229
|
+
* @returns 새 RelationKeyTargetBuilder 인스턴스
|
|
230
|
+
*/
|
|
231
|
+
description(desc: string): RelationKeyTargetBuilder<TTargetTableFn, TIsSingle>;
|
|
232
|
+
/**
|
|
233
|
+
* 단일 객체 관계로 설정 (1:1)
|
|
234
|
+
*
|
|
235
|
+
* 기본은 배열 (1:N), single() 호출 시 단일 객체
|
|
236
|
+
*
|
|
237
|
+
* @returns 새 RelationKeyTargetBuilder 인스턴스 (isSingle=true)
|
|
238
|
+
*/
|
|
239
|
+
single(): RelationKeyTargetBuilder<TTargetTableFn, true>;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* FK 관계 팩토리 타입 (테이블 전용)
|
|
243
|
+
*
|
|
244
|
+
* @template TOwner - 소유 테이블 빌더 타입
|
|
245
|
+
* @template TColumnKey - 컬럼 키 타입
|
|
246
|
+
*/
|
|
247
|
+
type RelationFkFactory<TOwner extends TableBuilder<any, any>, TColumnKey extends string> = {
|
|
248
|
+
/** N:1 FK 관계 정의 (DB FK 생성) */
|
|
249
|
+
foreignKey<TTargetFn extends () => TableBuilder<any, any>>(columns: TColumnKey[], targetFn: TTargetFn): ForeignKeyBuilder<TOwner, TTargetFn>;
|
|
250
|
+
/** 1:N FK 역참조 정의 */
|
|
251
|
+
foreignKeyTarget<TTargetTableFn extends () => TableBuilder<any, any>>(targetTableFn: TTargetTableFn, relationName: string): ForeignKeyTargetBuilder<TTargetTableFn, false>;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* 논리적 관계 팩토리 타입 (테이블/뷰 공용)
|
|
255
|
+
*
|
|
256
|
+
* @template TOwner - 소유 테이블/뷰 빌더 타입
|
|
257
|
+
* @template TColumnKey - 컬럼 키 타입
|
|
258
|
+
*/
|
|
259
|
+
type RelationRkFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>, TColumnKey extends string> = {
|
|
260
|
+
/** N:1 논리적 관계 정의 (DB FK 미생성) */
|
|
261
|
+
relationKey<TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>>(columns: TColumnKey[], targetFn: TTargetFn): RelationKeyBuilder<TOwner, TTargetFn>;
|
|
262
|
+
/** 1:N 논리적 역참조 정의 */
|
|
263
|
+
relationKeyTarget<TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>>(targetTableFn: TTargetTableFn, relationName: string): RelationKeyTargetBuilder<TTargetTableFn, false>;
|
|
264
|
+
};
|
|
265
|
+
/**
|
|
266
|
+
* 관계 빌더 팩토리 생성
|
|
267
|
+
*
|
|
268
|
+
* TableBuilder.relations() 및 ViewBuilder.relations()에서 사용
|
|
269
|
+
* 테이블은 FK + RelationKey 모두 사용 가능, 뷰는 RelationKey만 사용 가능
|
|
270
|
+
*
|
|
271
|
+
* @template TOwner - 소유 테이블/뷰 빌더 타입
|
|
272
|
+
* @template TColumnKey - 컬럼 키 타입
|
|
273
|
+
* @param ownerFn - 소유 테이블/뷰 팩토리 함수
|
|
274
|
+
* @returns 관계 빌더 팩토리
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* ```typescript
|
|
278
|
+
* // 테이블 - FK, RelationKey 모두 사용 가능
|
|
279
|
+
* const Post = Table("Post")
|
|
280
|
+
* .columns((c) => ({
|
|
281
|
+
* id: c.bigint(),
|
|
282
|
+
* authorId: c.bigint(),
|
|
283
|
+
* }))
|
|
284
|
+
* .relations((r) => ({
|
|
285
|
+
* author: r.foreignKey(["authorId"], () => User), // FK 생성
|
|
286
|
+
* }));
|
|
287
|
+
*
|
|
288
|
+
* // 뷰 - RelationKey만 사용 가능
|
|
289
|
+
* const UserSummary = View("UserSummary")
|
|
290
|
+
* .query(...)
|
|
291
|
+
* .relations((r) => ({
|
|
292
|
+
* posts: r.relationKeyTarget(() => Post, "author"), // FK 미생성
|
|
293
|
+
* }));
|
|
294
|
+
* ```
|
|
295
|
+
*/
|
|
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
|
+
/**
|
|
298
|
+
* 관계 빌더 레코드 타입
|
|
299
|
+
*
|
|
300
|
+
* TableBuilder.relations() 및 ViewBuilder.relations()의 반환 타입
|
|
301
|
+
*/
|
|
302
|
+
export type RelationBuilderRecord = Record<string, ForeignKeyBuilder<any, any> | ForeignKeyTargetBuilder<any, any> | RelationKeyBuilder<any, any> | RelationKeyTargetBuilder<any, any>>;
|
|
303
|
+
/**
|
|
304
|
+
* FK/RelationKey에서 참조 대상 타입 추출 (단일 객체)
|
|
305
|
+
*
|
|
306
|
+
* N:1 관계의 참조 대상 타입
|
|
307
|
+
*
|
|
308
|
+
* @template T - FK 또는 RelationKey 빌더 타입
|
|
309
|
+
*/
|
|
310
|
+
export type ExtractRelationTarget<T> = T 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
|
+
/**
|
|
312
|
+
* FKTarget/RelationKeyTarget에서 참조 대상 타입 추출 (배열 또는 단일 객체)
|
|
313
|
+
*
|
|
314
|
+
* 1:N 관계의 참조 대상 타입 (single() 호출 시 단일 객체)
|
|
315
|
+
* TTargetTableFn: () => Post 형태로 lazy evaluation하여 순환참조 방지
|
|
316
|
+
*
|
|
317
|
+
* @template T - FKTarget 또는 RelationKeyTarget 빌더 타입
|
|
318
|
+
*/
|
|
319
|
+
export type ExtractRelationTargetResult<T> = T 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
|
+
/**
|
|
321
|
+
* 관계 정의에서 깊은 관계 타입 추론
|
|
322
|
+
*
|
|
323
|
+
* 모든 관계를 optional로 만들어 include() 없이 접근 시 undefined 처리
|
|
324
|
+
*
|
|
325
|
+
* @template TRelations - 관계 빌더 레코드 타입
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* ```typescript
|
|
329
|
+
* type UserRelations = InferDeepRelations<typeof User.$relations>;
|
|
330
|
+
* // { posts?: Post[]; profile?: Profile; }
|
|
331
|
+
* ```
|
|
332
|
+
*/
|
|
333
|
+
export type InferDeepRelations<TRelations extends RelationBuilderRecord> = {
|
|
334
|
+
[K in keyof TRelations]?: ExtractRelationTarget<TRelations[K]> | ExtractRelationTargetResult<TRelations[K]>;
|
|
335
|
+
};
|
|
336
|
+
export {};
|
|
337
|
+
//# sourceMappingURL=relation-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation-builder.d.ts","sourceRoot":"","sources":["../../../../../../orm-common/src/schema/factory/relation-builder.ts"],"names":[],"mappings":"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"}
|