@simplysm/orm-common 13.0.99 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +312 -276
- package/dist/create-db-context.js.map +1 -6
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/column-ddl.js +41 -35
- package/dist/ddl/column-ddl.js.map +1 -6
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +200 -142
- package/dist/ddl/initialize.js.map +1 -6
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/relation-ddl.js +55 -48
- package/dist/ddl/relation-ddl.js.map +1 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/schema-ddl.js +21 -15
- package/dist/ddl/schema-ddl.js.map +1 -6
- package/dist/ddl/table-ddl.d.ts +20 -20
- package/dist/ddl/table-ddl.js +139 -93
- package/dist/ddl/table-ddl.js.map +1 -6
- package/dist/define-db-context.js +10 -13
- package/dist/define-db-context.js.map +1 -6
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/errors/db-transaction-error.js +53 -19
- package/dist/errors/db-transaction-error.js.map +1 -6
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +94 -40
- package/dist/exec/executable.js.map +1 -6
- package/dist/exec/queryable.d.ts +97 -97
- package/dist/exec/queryable.js +1310 -1204
- package/dist/exec/queryable.js.map +1 -6
- package/dist/exec/search-parser.d.ts +31 -31
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/exec/search-parser.js +158 -59
- package/dist/exec/search-parser.js.map +1 -6
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr-unit.js +24 -18
- package/dist/expr/expr-unit.js.map +1 -6
- package/dist/expr/expr.d.ts +6 -6
- package/dist/expr/expr.js +1872 -1844
- package/dist/expr/expr.js.map +1 -6
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -6
- package/dist/models/system-migration.js +7 -7
- package/dist/models/system-migration.js.map +1 -6
- package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
- package/dist/query-builder/base/expr-renderer-base.js +27 -21
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
- package/dist/query-builder/base/query-builder-base.d.ts +21 -21
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +90 -80
- package/dist/query-builder/base/query-builder-base.js.map +1 -6
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/query-builder/query-builder.js +13 -13
- package/dist/query-builder/query-builder.js.map +1 -6
- package/dist/schema/factory/column-builder.d.ts +84 -84
- package/dist/schema/factory/column-builder.js +248 -185
- package/dist/schema/factory/column-builder.js.map +1 -6
- package/dist/schema/factory/index-builder.d.ts +38 -38
- package/dist/schema/factory/index-builder.js +144 -85
- package/dist/schema/factory/index-builder.js.map +1 -6
- package/dist/schema/factory/relation-builder.d.ts +91 -91
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +274 -136
- package/dist/schema/factory/relation-builder.js.map +1 -6
- package/dist/schema/procedure-builder.d.ts +51 -51
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +205 -131
- package/dist/schema/procedure-builder.js.map +1 -6
- package/dist/schema/table-builder.d.ts +55 -55
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +274 -205
- package/dist/schema/table-builder.js.map +1 -6
- package/dist/schema/view-builder.d.ts +44 -44
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +189 -116
- package/dist/schema/view-builder.js.map +1 -6
- package/dist/types/column.js +60 -30
- package/dist/types/column.js.map +1 -6
- package/dist/types/db-context-def.d.ts +9 -9
- package/dist/types/db-context-def.js +2 -1
- package/dist/types/db-context-def.js.map +1 -6
- package/dist/types/db.d.ts +47 -47
- package/dist/types/db.js +15 -5
- package/dist/types/db.js.map +1 -6
- package/dist/types/expr.d.ts +81 -81
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/expr.js +3 -1
- package/dist/types/expr.js.map +1 -6
- package/dist/types/query-def.d.ts +46 -46
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/types/query-def.js +31 -24
- package/dist/types/query-def.js.map +1 -6
- package/dist/utils/result-parser.js +362 -221
- package/dist/utils/result-parser.js.map +1 -6
- package/package.json +5 -7
- package/src/create-db-context.ts +31 -31
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +38 -38
- package/src/ddl/relation-ddl.ts +6 -6
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +24 -24
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +134 -134
- package/src/exec/search-parser.ts +50 -50
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +13 -13
- package/src/index.ts +8 -8
- package/src/models/system-migration.ts +1 -1
- package/src/query-builder/base/expr-renderer-base.ts +21 -21
- package/src/query-builder/base/query-builder-base.ts +33 -33
- package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -11
- package/src/query-builder/mssql/mssql-query-builder.ts +11 -11
- package/src/query-builder/mysql/mysql-expr-renderer.ts +15 -15
- package/src/query-builder/mysql/mysql-query-builder.ts +3 -3
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +9 -9
- package/src/query-builder/postgresql/postgresql-query-builder.ts +7 -7
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +86 -86
- package/src/schema/factory/index-builder.ts +38 -38
- package/src/schema/factory/relation-builder.ts +93 -93
- package/src/schema/procedure-builder.ts +52 -52
- package/src/schema/table-builder.ts +56 -56
- package/src/schema/view-builder.ts +45 -45
- package/src/types/column.ts +1 -1
- package/src/types/db-context-def.ts +15 -15
- package/src/types/db.ts +50 -50
- package/src/types/expr.ts +103 -103
- package/src/types/query-def.ts +50 -50
- package/src/utils/result-parser.ts +39 -39
- package/README.md +0 -192
- package/docs/core.md +0 -234
- package/docs/expression.md +0 -234
- package/docs/query-builder.md +0 -93
- package/docs/queryable.md +0 -198
- package/docs/schema-builders.md +0 -463
- package/docs/types.md +0 -445
- package/docs/utilities.md +0 -27
- package/tests/db-context/create-db-context.spec.ts +0 -193
- package/tests/db-context/define-db-context.spec.ts +0 -17
- package/tests/ddl/basic.expected.ts +0 -341
- package/tests/ddl/basic.spec.ts +0 -557
- package/tests/ddl/column-builder.expected.ts +0 -310
- package/tests/ddl/column-builder.spec.ts +0 -525
- package/tests/ddl/index-builder.expected.ts +0 -38
- package/tests/ddl/index-builder.spec.ts +0 -148
- package/tests/ddl/procedure-builder.expected.ts +0 -52
- package/tests/ddl/procedure-builder.spec.ts +0 -128
- package/tests/ddl/relation-builder.expected.ts +0 -36
- package/tests/ddl/relation-builder.spec.ts +0 -171
- package/tests/ddl/table-builder.expected.ts +0 -113
- package/tests/ddl/table-builder.spec.ts +0 -399
- package/tests/ddl/view-builder.expected.ts +0 -38
- package/tests/ddl/view-builder.spec.ts +0 -116
- package/tests/dml/delete.expected.ts +0 -96
- package/tests/dml/delete.spec.ts +0 -127
- package/tests/dml/insert.expected.ts +0 -192
- package/tests/dml/insert.spec.ts +0 -210
- package/tests/dml/update.expected.ts +0 -176
- package/tests/dml/update.spec.ts +0 -222
- package/tests/dml/upsert.expected.ts +0 -215
- package/tests/dml/upsert.spec.ts +0 -190
- package/tests/errors/queryable-errors.spec.ts +0 -126
- package/tests/escape.spec.ts +0 -59
- package/tests/examples/pivot.expected.ts +0 -211
- package/tests/examples/pivot.spec.ts +0 -200
- package/tests/examples/sampling.expected.ts +0 -69
- package/tests/examples/sampling.spec.ts +0 -42
- package/tests/examples/unpivot.expected.ts +0 -120
- package/tests/examples/unpivot.spec.ts +0 -161
- package/tests/exec/search-parser.spec.ts +0 -267
- package/tests/executable/basic.expected.ts +0 -18
- package/tests/executable/basic.spec.ts +0 -54
- package/tests/expr/comparison.expected.ts +0 -282
- package/tests/expr/comparison.spec.ts +0 -334
- package/tests/expr/conditional.expected.ts +0 -134
- package/tests/expr/conditional.spec.ts +0 -249
- package/tests/expr/date.expected.ts +0 -332
- package/tests/expr/date.spec.ts +0 -459
- package/tests/expr/math.expected.ts +0 -62
- package/tests/expr/math.spec.ts +0 -59
- package/tests/expr/string.expected.ts +0 -218
- package/tests/expr/string.spec.ts +0 -300
- package/tests/expr/utility.expected.ts +0 -147
- package/tests/expr/utility.spec.ts +0 -155
- package/tests/select/basic.expected.ts +0 -322
- package/tests/select/basic.spec.ts +0 -433
- package/tests/select/filter.expected.ts +0 -357
- package/tests/select/filter.spec.ts +0 -954
- package/tests/select/group.expected.ts +0 -169
- package/tests/select/group.spec.ts +0 -159
- package/tests/select/join.expected.ts +0 -582
- package/tests/select/join.spec.ts +0 -692
- package/tests/select/order.expected.ts +0 -150
- package/tests/select/order.spec.ts +0 -140
- package/tests/select/recursive-cte.expected.ts +0 -244
- package/tests/select/recursive-cte.spec.ts +0 -514
- package/tests/select/result-meta.spec.ts +0 -270
- package/tests/select/subquery.expected.ts +0 -363
- package/tests/select/subquery.spec.ts +0 -441
- package/tests/select/view.expected.ts +0 -155
- package/tests/select/view.spec.ts +0 -235
- package/tests/select/window.expected.ts +0 -345
- package/tests/select/window.spec.ts +0 -433
- package/tests/setup/MockExecutor.ts +0 -18
- package/tests/setup/TestDbContext.ts +0 -59
- package/tests/setup/models/Company.ts +0 -13
- package/tests/setup/models/Employee.ts +0 -10
- package/tests/setup/models/MonthlySales.ts +0 -11
- package/tests/setup/models/Post.ts +0 -16
- package/tests/setup/models/Sales.ts +0 -10
- package/tests/setup/models/User.ts +0 -19
- package/tests/setup/procedure/GetAllUsers.ts +0 -9
- package/tests/setup/procedure/GetUserById.ts +0 -12
- package/tests/setup/test-utils.ts +0 -72
- package/tests/setup/views/ActiveUsers.ts +0 -8
- package/tests/setup/views/UserSummary.ts +0 -11
- package/tests/types/nullable-queryable-record.spec.ts +0 -97
- package/tests/utils/result-parser-perf.spec.ts +0 -143
- package/tests/utils/result-parser.spec.ts +0 -667
package/dist/exec/queryable.d.ts
CHANGED
|
@@ -10,39 +10,39 @@ import { ExprUnit } from "../expr/expr-unit";
|
|
|
10
10
|
/**
|
|
11
11
|
* JOIN query builder
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* join/joinSingle 메서드 내부에서 조인할 table을 지정하는 데 사용
|
|
14
14
|
*/
|
|
15
15
|
declare class JoinQueryable {
|
|
16
16
|
private readonly _db;
|
|
17
17
|
private readonly _joinAlias;
|
|
18
18
|
constructor(_db: DbContextBase, _joinAlias: string);
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* 조인할 table 지정
|
|
21
21
|
*
|
|
22
|
-
* @param table -
|
|
23
|
-
* @returns
|
|
22
|
+
* @param table - 조인할 table
|
|
23
|
+
* @returns 조인된 Queryable
|
|
24
24
|
*/
|
|
25
25
|
from<T extends TableBuilder<any, any>>(table: T): Queryable<T["$inferSelect"], T>;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* 조인 결과의 column을 직접 지정
|
|
28
28
|
*
|
|
29
|
-
* @param columns -
|
|
30
|
-
* @returns
|
|
29
|
+
* @param columns - 커스텀 column 정의
|
|
30
|
+
* @returns 커스텀 column이 적용된 Queryable
|
|
31
31
|
*/
|
|
32
32
|
select<R extends DataRecord>(columns: QueryableRecord<R>): Queryable<R, never>;
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* 여러 Queryable을 UNION으로 결합
|
|
35
35
|
*
|
|
36
|
-
* @param queries -
|
|
37
|
-
* @returns UNION
|
|
38
|
-
* @throws
|
|
36
|
+
* @param queries - UNION할 Queryable 배열 (최소 2개)
|
|
37
|
+
* @returns UNION된 Queryable
|
|
38
|
+
* @throws 2개 미만의 queryable이 전달되면 에러
|
|
39
39
|
*/
|
|
40
40
|
union<TData extends DataRecord>(...queries: Queryable<TData, any>[]): Queryable<TData, never>;
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
*
|
|
43
|
+
* 재귀 CTE (Common Table Expression) builder
|
|
44
44
|
*
|
|
45
|
-
*
|
|
45
|
+
* recursive() 메서드 내부에서 사용되며, 재귀 쿼리의 본문을 정의한다
|
|
46
46
|
*
|
|
47
47
|
* @template TBaseData - Base query data type
|
|
48
48
|
*/
|
|
@@ -51,41 +51,41 @@ declare class RecursiveQueryable<TBaseData extends DataRecord> {
|
|
|
51
51
|
private readonly _cteName;
|
|
52
52
|
constructor(_baseQr: Queryable<TBaseData, any>, _cteName: string);
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* 재귀 query의 대상 table 지정
|
|
55
55
|
*
|
|
56
|
-
* @param table -
|
|
57
|
-
* @returns
|
|
56
|
+
* @param table - 재귀할 대상 table
|
|
57
|
+
* @returns self 속성이 추가된 Queryable (자기 참조용)
|
|
58
58
|
*/
|
|
59
59
|
from<T extends TableBuilder<any, any>>(table: T): Queryable<T["$inferSelect"] & {
|
|
60
60
|
self?: TBaseData[];
|
|
61
61
|
}, T>;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* 재귀 query의 column을 직접 지정
|
|
64
64
|
*
|
|
65
|
-
* @param columns -
|
|
66
|
-
* @returns
|
|
65
|
+
* @param columns - 커스텀 column 정의
|
|
66
|
+
* @returns self 속성이 추가된 Queryable
|
|
67
67
|
*/
|
|
68
68
|
select<R extends DataRecord>(columns: QueryableRecord<R>): Queryable<R & {
|
|
69
69
|
self?: TBaseData[];
|
|
70
70
|
}, never>;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
72
|
+
* 여러 Queryable을 UNION으로 결합 (재귀 query용)
|
|
73
73
|
*
|
|
74
|
-
* @param queries -
|
|
75
|
-
* @returns
|
|
76
|
-
* @throws
|
|
74
|
+
* @param queries - UNION할 Queryable 배열 (최소 2개)
|
|
75
|
+
* @returns self 속성이 추가된 UNION Queryable
|
|
76
|
+
* @throws 2개 미만의 queryable이 전달되면 에러
|
|
77
77
|
*/
|
|
78
78
|
union<TData extends DataRecord>(...queries: Queryable<TData, any>[]): Queryable<TData & {
|
|
79
79
|
self?: TBaseData[];
|
|
80
80
|
}, never>;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
* Query builder
|
|
83
|
+
* Query builder 클래스
|
|
84
84
|
*
|
|
85
|
-
*
|
|
85
|
+
* 체이닝 방식으로 table/view에 대한 SELECT, INSERT, UPDATE, DELETE query를 구성
|
|
86
86
|
*
|
|
87
|
-
* @template TData -
|
|
88
|
-
* @template TFrom -
|
|
87
|
+
* @template TData - Query 결과의 데이터 타입
|
|
88
|
+
* @template TFrom - 소스 table (CUD 연산에 필요)
|
|
89
89
|
*
|
|
90
90
|
* @example
|
|
91
91
|
* ```typescript
|
|
@@ -108,10 +108,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
108
108
|
readonly meta: QueryableMeta<TData>;
|
|
109
109
|
constructor(meta: QueryableMeta<TData>);
|
|
110
110
|
/**
|
|
111
|
-
*
|
|
111
|
+
* SELECT할 column 지정.
|
|
112
112
|
*
|
|
113
|
-
* @param fn - Column
|
|
114
|
-
* @returns
|
|
113
|
+
* @param fn - Column 매핑 함수. 원본 column을 받아 새 column 구조를 반환
|
|
114
|
+
* @returns 새 column 구조가 적용된 Queryable
|
|
115
115
|
*
|
|
116
116
|
* @example
|
|
117
117
|
* ```typescript
|
|
@@ -123,9 +123,9 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
123
123
|
*/
|
|
124
124
|
select<R extends Record<string, any>>(fn: (columns: QueryableRecord<TData>) => R): Queryable<UnwrapQueryableRecord<R>, never>;
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* 중복 행 제거를 위한 DISTINCT 옵션 적용
|
|
127
127
|
*
|
|
128
|
-
* @returns
|
|
128
|
+
* @returns DISTINCT가 적용된 Queryable
|
|
129
129
|
*
|
|
130
130
|
* @example
|
|
131
131
|
* ```typescript
|
|
@@ -136,11 +136,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
136
136
|
*/
|
|
137
137
|
distinct(): Queryable<TData, never>;
|
|
138
138
|
/**
|
|
139
|
-
*
|
|
139
|
+
* 행 잠금 적용 (FOR UPDATE)
|
|
140
140
|
*
|
|
141
|
-
*
|
|
141
|
+
* 트랜잭션 내에서 선택된 행에 대한 배타적 잠금 획득
|
|
142
142
|
*
|
|
143
|
-
* @returns
|
|
143
|
+
* @returns 잠금이 적용된 Queryable
|
|
144
144
|
*
|
|
145
145
|
* @example
|
|
146
146
|
* ```typescript
|
|
@@ -154,10 +154,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
154
154
|
*/
|
|
155
155
|
lock(): Queryable<TData, TFrom>;
|
|
156
156
|
/**
|
|
157
|
-
*
|
|
157
|
+
* 상위 N개 행만 선택 (ORDER BY 없이도 사용 가능)
|
|
158
158
|
*
|
|
159
|
-
* @param count -
|
|
160
|
-
* @returns
|
|
159
|
+
* @param count - 선택할 행 수
|
|
160
|
+
* @returns TOP이 적용된 Queryable
|
|
161
161
|
*
|
|
162
162
|
* @example
|
|
163
163
|
* ```typescript
|
|
@@ -169,13 +169,13 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
169
169
|
*/
|
|
170
170
|
top(count: number): Queryable<TData, TFrom>;
|
|
171
171
|
/**
|
|
172
|
-
*
|
|
173
|
-
*
|
|
172
|
+
* 페이지네이션을 위한 LIMIT/OFFSET 설정.
|
|
173
|
+
* 먼저 orderBy()를 호출해야 함.
|
|
174
174
|
*
|
|
175
|
-
* @param skip -
|
|
176
|
-
* @param take -
|
|
177
|
-
* @returns
|
|
178
|
-
* @throws
|
|
175
|
+
* @param skip - 건너뛸 행 수 (OFFSET)
|
|
176
|
+
* @param take - 가져올 행 수 (LIMIT)
|
|
177
|
+
* @returns 페이지네이션이 적용된 Queryable
|
|
178
|
+
* @throws ORDER BY 절이 없으면 에러
|
|
179
179
|
*
|
|
180
180
|
* @example
|
|
181
181
|
* ```typescript
|
|
@@ -186,11 +186,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
186
186
|
*/
|
|
187
187
|
limit(skip: number, take: number): Queryable<TData, TFrom>;
|
|
188
188
|
/**
|
|
189
|
-
*
|
|
189
|
+
* 정렬 조건 추가. 여러 번 호출 시 순서대로 적용됨.
|
|
190
190
|
*
|
|
191
|
-
* @param fn -
|
|
192
|
-
* @param orderBy -
|
|
193
|
-
* @returns
|
|
191
|
+
* @param fn - 정렬할 column을 반환하는 함수
|
|
192
|
+
* @param orderBy - 정렬 방향 (ASC/DESC). 기본값: ASC
|
|
193
|
+
* @returns 정렬 조건이 추가된 Queryable
|
|
194
194
|
*
|
|
195
195
|
* @example
|
|
196
196
|
* ```typescript
|
|
@@ -201,10 +201,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
201
201
|
*/
|
|
202
202
|
orderBy(fn: (columns: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>, orderBy?: "ASC" | "DESC"): Queryable<TData, TFrom>;
|
|
203
203
|
/**
|
|
204
|
-
*
|
|
204
|
+
* WHERE 조건 추가. 여러 번 호출 시 AND로 결합됨.
|
|
205
205
|
*
|
|
206
|
-
* @param predicate -
|
|
207
|
-
* @returns
|
|
206
|
+
* @param predicate - 조건 배열을 반환하는 함수
|
|
207
|
+
* @returns 조건이 추가된 Queryable
|
|
208
208
|
*
|
|
209
209
|
* @example
|
|
210
210
|
* ```typescript
|
|
@@ -215,16 +215,16 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
215
215
|
*/
|
|
216
216
|
where(predicate: (columns: QueryableRecord<TData>) => WhereExprUnit[]): Queryable<TData, TFrom>;
|
|
217
217
|
/**
|
|
218
|
-
*
|
|
218
|
+
* 텍스트 검색 수행
|
|
219
219
|
*
|
|
220
|
-
*
|
|
221
|
-
* -
|
|
222
|
-
* -
|
|
223
|
-
* -
|
|
220
|
+
* 검색 구문은 {@link parseSearchQuery} 참조
|
|
221
|
+
* - 공백으로 구분된 단어는 OR 조건
|
|
222
|
+
* - `+`로 시작하는 단어는 필수 포함 (AND 조건)
|
|
223
|
+
* - `-`로 시작하는 단어는 제외 (NOT 조건)
|
|
224
224
|
*
|
|
225
|
-
* @param fn -
|
|
226
|
-
* @param searchText -
|
|
227
|
-
* @returns
|
|
225
|
+
* @param fn - 검색 대상 column을 반환하는 함수
|
|
226
|
+
* @param searchText - 검색 텍스트
|
|
227
|
+
* @returns 검색 조건이 추가된 Queryable
|
|
228
228
|
*
|
|
229
229
|
* @example
|
|
230
230
|
* ```typescript
|
|
@@ -234,10 +234,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
234
234
|
*/
|
|
235
235
|
search(fn: (columns: QueryableRecord<TData>) => ExprUnit<string | undefined>[], searchText: string): Queryable<TData, TFrom>;
|
|
236
236
|
/**
|
|
237
|
-
*
|
|
237
|
+
* GROUP BY 절 추가
|
|
238
238
|
*
|
|
239
|
-
* @param fn -
|
|
240
|
-
* @returns
|
|
239
|
+
* @param fn - 그룹화할 column을 반환하는 함수
|
|
240
|
+
* @returns GROUP BY가 적용된 Queryable
|
|
241
241
|
*
|
|
242
242
|
* @example
|
|
243
243
|
* ```typescript
|
|
@@ -251,10 +251,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
251
251
|
*/
|
|
252
252
|
groupBy(fn: (columns: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>[]): Queryable<TData, never>;
|
|
253
253
|
/**
|
|
254
|
-
*
|
|
254
|
+
* HAVING 절 추가 (GROUP BY 이후 필터링)
|
|
255
255
|
*
|
|
256
|
-
* @param predicate -
|
|
257
|
-
* @returns
|
|
256
|
+
* @param predicate - 조건 배열을 반환하는 함수
|
|
257
|
+
* @returns HAVING이 적용된 Queryable
|
|
258
258
|
*
|
|
259
259
|
* @example
|
|
260
260
|
* ```typescript
|
|
@@ -269,11 +269,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
269
269
|
*/
|
|
270
270
|
having(predicate: (columns: QueryableRecord<TData>) => WhereExprUnit[]): Queryable<TData, never>;
|
|
271
271
|
/**
|
|
272
|
-
*
|
|
272
|
+
* 1:N 관계에 대한 LEFT OUTER JOIN 수행 (결과에 배열로 추가)
|
|
273
273
|
*
|
|
274
|
-
* @param as -
|
|
275
|
-
* @param fn -
|
|
276
|
-
* @returns
|
|
274
|
+
* @param as - 결과에 추가할 속성 이름
|
|
275
|
+
* @param fn - 조인 조건을 정의하는 콜백 함수
|
|
276
|
+
* @returns 조인 결과가 배열로 추가된 Queryable
|
|
277
277
|
*
|
|
278
278
|
* @example
|
|
279
279
|
* ```typescript
|
|
@@ -289,11 +289,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
289
289
|
[K in A]?: R[];
|
|
290
290
|
}, TFrom>;
|
|
291
291
|
/**
|
|
292
|
-
*
|
|
292
|
+
* N:1 또는 1:1 관계에 대한 LEFT OUTER JOIN 수행 (결과에 단일 객체로 추가)
|
|
293
293
|
*
|
|
294
|
-
* @param as -
|
|
295
|
-
* @param fn -
|
|
296
|
-
* @returns
|
|
294
|
+
* @param as - 결과에 추가할 속성 이름
|
|
295
|
+
* @param fn - 조인 조건을 정의하는 콜백 함수
|
|
296
|
+
* @returns 조인 결과가 단일 객체로 추가된 Queryable
|
|
297
297
|
*
|
|
298
298
|
* @example
|
|
299
299
|
* ```typescript
|
|
@@ -311,12 +311,12 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
311
311
|
[K in A]?: R;
|
|
312
312
|
}, TFrom>;
|
|
313
313
|
/**
|
|
314
|
-
*
|
|
315
|
-
*
|
|
314
|
+
* 관련 table을 자동으로 JOIN.
|
|
315
|
+
* TableBuilder에 정의된 FK/FKT 관계를 기반으로 동작.
|
|
316
316
|
*
|
|
317
|
-
* @param fn -
|
|
318
|
-
* @returns
|
|
319
|
-
* @throws
|
|
317
|
+
* @param fn - 포함할 관계를 선택하는 함수 (PathProxy를 통해 타입 체크)
|
|
318
|
+
* @returns JOIN이 추가된 Queryable
|
|
319
|
+
* @throws 관계가 정의되지 않은 경우 에러
|
|
320
320
|
*
|
|
321
321
|
* @example
|
|
322
322
|
* ```typescript
|
|
@@ -416,7 +416,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
416
416
|
*/
|
|
417
417
|
single(): Promise<TData | undefined>;
|
|
418
418
|
/**
|
|
419
|
-
*
|
|
419
|
+
* Query 소스 이름 반환 (에러 메시지용)
|
|
420
420
|
*/
|
|
421
421
|
private _getSourceName;
|
|
422
422
|
/**
|
|
@@ -610,7 +610,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
|
|
|
610
610
|
upsert<U extends QueryableWriteRecord<TFrom["$inferUpdate"]>, K extends keyof TFrom["$inferColumns"] & string>(updateFn: (cols: QueryableRecord<TData>) => U, insertFn: (updateRecord: U) => QueryableWriteRecord<TFrom["$inferInsert"]>, outputColumns?: K[]): Promise<Pick<TFrom["$inferColumns"], K>[]>;
|
|
611
611
|
getUpsertQueryDef<U extends QueryableWriteRecord<TFrom["$inferUpdate"]>>(updateRecordFn: (cols: QueryableRecord<TData>) => U, insertRecordFn: (updateRecord: U) => QueryableWriteRecord<TFrom["$inferInsert"]>, outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): UpsertQueryDef;
|
|
612
612
|
/**
|
|
613
|
-
* FK
|
|
613
|
+
* FK 제약조건 활성화/비활성화 (트랜잭션 내에서 사용 가능)
|
|
614
614
|
*/
|
|
615
615
|
switchFk(enabled: boolean): Promise<void>;
|
|
616
616
|
private _getCudOutputDef;
|
|
@@ -659,33 +659,33 @@ export type NullableQueryableRecord<TData extends DataRecord> = {
|
|
|
659
659
|
[K in keyof TData]: TData[K] extends ColumnPrimitive ? ExprUnit<TData[K] | undefined> : TData[K] extends (infer U)[] ? U extends DataRecord ? NullableQueryableRecord<U>[] : never : TData[K] extends (infer U)[] | undefined ? U extends DataRecord ? NullableQueryableRecord<U>[] | undefined : never : TData[K] extends DataRecord ? NullableQueryableRecord<TData[K]> : TData[K] extends DataRecord | undefined ? NullableQueryableRecord<Exclude<TData[K], undefined>> | undefined : never;
|
|
660
660
|
};
|
|
661
661
|
/**
|
|
662
|
-
*
|
|
662
|
+
* QueryableRecord에서 DataRecord로 역변환
|
|
663
663
|
*
|
|
664
|
-
*
|
|
664
|
+
* ExprUnit<T>를 T로 언래핑, 중첩 객체/배열을 재귀적으로 언래핑
|
|
665
665
|
*/
|
|
666
666
|
export type UnwrapQueryableRecord<R> = {
|
|
667
667
|
[K in keyof R]: R[K] extends ExprUnit<infer T> ? T : NonNullable<R[K]> extends (infer U)[] ? U extends Record<string, any> ? UnwrapQueryableRecord<U>[] | Extract<R[K], undefined> : never : NonNullable<R[K]> extends Record<string, any> ? UnwrapQueryableRecord<NonNullable<R[K]>> | Extract<R[K], undefined> : never;
|
|
668
668
|
};
|
|
669
669
|
/**
|
|
670
|
-
*
|
|
671
|
-
*
|
|
670
|
+
* include()에서 타입 안전하게 관계 경로를 지정하기 위한 Proxy 타입
|
|
671
|
+
* non-ColumnPrimitive 필드(FK, FKT 관계)만 접근 가능
|
|
672
672
|
*
|
|
673
673
|
* @example
|
|
674
674
|
* ```typescript
|
|
675
|
-
* //
|
|
675
|
+
* // item.user.company 접근 시 내부적으로 경로 ["user", "company"]를 수집
|
|
676
676
|
* db.post.include(item => item.user.company)
|
|
677
677
|
*
|
|
678
|
-
* // item.title
|
|
679
|
-
* db.post.include(item => item.title) //
|
|
678
|
+
* // item.title은 string(ColumnPrimitive)이므로 컴파일 에러
|
|
679
|
+
* db.post.include(item => item.title) // 컴파일 에러
|
|
680
680
|
* ```
|
|
681
681
|
*/
|
|
682
682
|
/**
|
|
683
|
-
*
|
|
683
|
+
* 배열이면 요소 타입 추출
|
|
684
684
|
*/
|
|
685
685
|
type UnwrapArray<TArray> = TArray extends (infer TElement)[] ? TElement : TArray;
|
|
686
686
|
declare const PATH_SYMBOL: unique symbol;
|
|
687
687
|
/**
|
|
688
|
-
*
|
|
688
|
+
* include()용 타입 안전 path proxy
|
|
689
689
|
*/
|
|
690
690
|
export type PathProxy<TObject> = {
|
|
691
691
|
[K in keyof TObject as TObject[K] extends ColumnPrimitive ? never : K]-?: PathProxy<UnwrapArray<TObject[K]>>;
|
|
@@ -693,22 +693,22 @@ export type PathProxy<TObject> = {
|
|
|
693
693
|
readonly [PATH_SYMBOL]: string[];
|
|
694
694
|
};
|
|
695
695
|
/**
|
|
696
|
-
*
|
|
696
|
+
* Table 또는 View용 Queryable factory 함수 생성
|
|
697
697
|
*
|
|
698
|
-
*
|
|
698
|
+
* DbContext에서 Table/View별 getter를 정의할 때 사용
|
|
699
699
|
*
|
|
700
|
-
* @param db - DbContext
|
|
701
|
-
* @param tableOrView - TableBuilder
|
|
702
|
-
* @param as - Alias
|
|
703
|
-
* @returns
|
|
700
|
+
* @param db - DbContext 인스턴스
|
|
701
|
+
* @param tableOrView - TableBuilder 또는 ViewBuilder 인스턴스
|
|
702
|
+
* @param as - Alias 지정 (선택, 미지정 시 자동 생성)
|
|
703
|
+
* @returns Queryable을 반환하는 factory 함수
|
|
704
704
|
*
|
|
705
705
|
* @example
|
|
706
706
|
* ```typescript
|
|
707
707
|
* class AppDbContext extends DbContext {
|
|
708
|
-
* //
|
|
708
|
+
* // 호출할 때마다 새 alias가 할당됨
|
|
709
709
|
* user = queryable(this, User);
|
|
710
710
|
*
|
|
711
|
-
* //
|
|
711
|
+
* // 사용 예시
|
|
712
712
|
* async getActiveUsers() {
|
|
713
713
|
* return this.user()
|
|
714
714
|
* .where((u) => [expr.eq(u.isActive, true)])
|