@simplysm/orm-common 13.0.100 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +312 -276
- package/dist/create-db-context.js.map +1 -6
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/column-ddl.js +41 -35
- package/dist/ddl/column-ddl.js.map +1 -6
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +200 -142
- package/dist/ddl/initialize.js.map +1 -6
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/relation-ddl.js +55 -48
- package/dist/ddl/relation-ddl.js.map +1 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/schema-ddl.js +21 -15
- package/dist/ddl/schema-ddl.js.map +1 -6
- package/dist/ddl/table-ddl.d.ts +20 -20
- package/dist/ddl/table-ddl.js +139 -93
- package/dist/ddl/table-ddl.js.map +1 -6
- package/dist/define-db-context.js +10 -13
- package/dist/define-db-context.js.map +1 -6
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/errors/db-transaction-error.js +53 -19
- package/dist/errors/db-transaction-error.js.map +1 -6
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +94 -40
- package/dist/exec/executable.js.map +1 -6
- package/dist/exec/queryable.d.ts +97 -97
- package/dist/exec/queryable.js +1310 -1204
- package/dist/exec/queryable.js.map +1 -6
- package/dist/exec/search-parser.d.ts +31 -31
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/exec/search-parser.js +158 -59
- package/dist/exec/search-parser.js.map +1 -6
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr-unit.js +24 -18
- package/dist/expr/expr-unit.js.map +1 -6
- package/dist/expr/expr.d.ts +6 -6
- package/dist/expr/expr.js +1872 -1844
- package/dist/expr/expr.js.map +1 -6
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -6
- package/dist/models/system-migration.js +7 -7
- package/dist/models/system-migration.js.map +1 -6
- package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
- package/dist/query-builder/base/expr-renderer-base.js +27 -21
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
- package/dist/query-builder/base/query-builder-base.d.ts +21 -21
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +90 -80
- package/dist/query-builder/base/query-builder-base.js.map +1 -6
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/query-builder/query-builder.js +13 -13
- package/dist/query-builder/query-builder.js.map +1 -6
- package/dist/schema/factory/column-builder.d.ts +84 -84
- package/dist/schema/factory/column-builder.js +248 -185
- package/dist/schema/factory/column-builder.js.map +1 -6
- package/dist/schema/factory/index-builder.d.ts +38 -38
- package/dist/schema/factory/index-builder.js +144 -85
- package/dist/schema/factory/index-builder.js.map +1 -6
- package/dist/schema/factory/relation-builder.d.ts +91 -91
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +274 -136
- package/dist/schema/factory/relation-builder.js.map +1 -6
- package/dist/schema/procedure-builder.d.ts +51 -51
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +205 -131
- package/dist/schema/procedure-builder.js.map +1 -6
- package/dist/schema/table-builder.d.ts +55 -55
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +274 -205
- package/dist/schema/table-builder.js.map +1 -6
- package/dist/schema/view-builder.d.ts +44 -44
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +189 -116
- package/dist/schema/view-builder.js.map +1 -6
- package/dist/types/column.js +60 -30
- package/dist/types/column.js.map +1 -6
- package/dist/types/db-context-def.d.ts +9 -9
- package/dist/types/db-context-def.js +2 -1
- package/dist/types/db-context-def.js.map +1 -6
- package/dist/types/db.d.ts +47 -47
- package/dist/types/db.js +15 -5
- package/dist/types/db.js.map +1 -6
- package/dist/types/expr.d.ts +81 -81
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/expr.js +3 -1
- package/dist/types/expr.js.map +1 -6
- package/dist/types/query-def.d.ts +46 -46
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/types/query-def.js +31 -24
- package/dist/types/query-def.js.map +1 -6
- package/dist/utils/result-parser.js +362 -221
- package/dist/utils/result-parser.js.map +1 -6
- package/package.json +5 -7
- package/src/create-db-context.ts +31 -31
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +38 -38
- package/src/ddl/relation-ddl.ts +6 -6
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +24 -24
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +134 -134
- package/src/exec/search-parser.ts +50 -50
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +13 -13
- package/src/index.ts +8 -8
- package/src/models/system-migration.ts +1 -1
- package/src/query-builder/base/expr-renderer-base.ts +21 -21
- package/src/query-builder/base/query-builder-base.ts +33 -33
- package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -11
- package/src/query-builder/mssql/mssql-query-builder.ts +11 -11
- package/src/query-builder/mysql/mysql-expr-renderer.ts +15 -15
- package/src/query-builder/mysql/mysql-query-builder.ts +3 -3
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +9 -9
- package/src/query-builder/postgresql/postgresql-query-builder.ts +7 -7
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +86 -86
- package/src/schema/factory/index-builder.ts +38 -38
- package/src/schema/factory/relation-builder.ts +93 -93
- package/src/schema/procedure-builder.ts +52 -52
- package/src/schema/table-builder.ts +56 -56
- package/src/schema/view-builder.ts +45 -45
- package/src/types/column.ts +1 -1
- package/src/types/db-context-def.ts +15 -15
- package/src/types/db.ts +50 -50
- package/src/types/expr.ts +103 -103
- package/src/types/query-def.ts +50 -50
- package/src/utils/result-parser.ts +39 -39
- package/README.md +0 -192
- package/docs/core.md +0 -234
- package/docs/expression.md +0 -234
- package/docs/query-builder.md +0 -93
- package/docs/queryable.md +0 -198
- package/docs/schema-builders.md +0 -463
- package/docs/types.md +0 -445
- package/docs/utilities.md +0 -27
- package/tests/db-context/create-db-context.spec.ts +0 -193
- package/tests/db-context/define-db-context.spec.ts +0 -17
- package/tests/ddl/basic.expected.ts +0 -341
- package/tests/ddl/basic.spec.ts +0 -557
- package/tests/ddl/column-builder.expected.ts +0 -310
- package/tests/ddl/column-builder.spec.ts +0 -525
- package/tests/ddl/index-builder.expected.ts +0 -38
- package/tests/ddl/index-builder.spec.ts +0 -148
- package/tests/ddl/procedure-builder.expected.ts +0 -52
- package/tests/ddl/procedure-builder.spec.ts +0 -128
- package/tests/ddl/relation-builder.expected.ts +0 -36
- package/tests/ddl/relation-builder.spec.ts +0 -171
- package/tests/ddl/table-builder.expected.ts +0 -113
- package/tests/ddl/table-builder.spec.ts +0 -399
- package/tests/ddl/view-builder.expected.ts +0 -38
- package/tests/ddl/view-builder.spec.ts +0 -116
- package/tests/dml/delete.expected.ts +0 -96
- package/tests/dml/delete.spec.ts +0 -127
- package/tests/dml/insert.expected.ts +0 -192
- package/tests/dml/insert.spec.ts +0 -210
- package/tests/dml/update.expected.ts +0 -176
- package/tests/dml/update.spec.ts +0 -222
- package/tests/dml/upsert.expected.ts +0 -215
- package/tests/dml/upsert.spec.ts +0 -190
- package/tests/errors/queryable-errors.spec.ts +0 -126
- package/tests/escape.spec.ts +0 -59
- package/tests/examples/pivot.expected.ts +0 -211
- package/tests/examples/pivot.spec.ts +0 -200
- package/tests/examples/sampling.expected.ts +0 -69
- package/tests/examples/sampling.spec.ts +0 -42
- package/tests/examples/unpivot.expected.ts +0 -120
- package/tests/examples/unpivot.spec.ts +0 -161
- package/tests/exec/search-parser.spec.ts +0 -267
- package/tests/executable/basic.expected.ts +0 -18
- package/tests/executable/basic.spec.ts +0 -54
- package/tests/expr/comparison.expected.ts +0 -282
- package/tests/expr/comparison.spec.ts +0 -334
- package/tests/expr/conditional.expected.ts +0 -134
- package/tests/expr/conditional.spec.ts +0 -249
- package/tests/expr/date.expected.ts +0 -332
- package/tests/expr/date.spec.ts +0 -459
- package/tests/expr/math.expected.ts +0 -62
- package/tests/expr/math.spec.ts +0 -59
- package/tests/expr/string.expected.ts +0 -218
- package/tests/expr/string.spec.ts +0 -300
- package/tests/expr/utility.expected.ts +0 -147
- package/tests/expr/utility.spec.ts +0 -155
- package/tests/select/basic.expected.ts +0 -322
- package/tests/select/basic.spec.ts +0 -433
- package/tests/select/filter.expected.ts +0 -357
- package/tests/select/filter.spec.ts +0 -954
- package/tests/select/group.expected.ts +0 -169
- package/tests/select/group.spec.ts +0 -159
- package/tests/select/join.expected.ts +0 -582
- package/tests/select/join.spec.ts +0 -692
- package/tests/select/order.expected.ts +0 -150
- package/tests/select/order.spec.ts +0 -140
- package/tests/select/recursive-cte.expected.ts +0 -244
- package/tests/select/recursive-cte.spec.ts +0 -514
- package/tests/select/result-meta.spec.ts +0 -270
- package/tests/select/subquery.expected.ts +0 -363
- package/tests/select/subquery.spec.ts +0 -441
- package/tests/select/view.expected.ts +0 -155
- package/tests/select/view.spec.ts +0 -235
- package/tests/select/window.expected.ts +0 -345
- package/tests/select/window.spec.ts +0 -433
- package/tests/setup/MockExecutor.ts +0 -18
- package/tests/setup/TestDbContext.ts +0 -59
- package/tests/setup/models/Company.ts +0 -13
- package/tests/setup/models/Employee.ts +0 -10
- package/tests/setup/models/MonthlySales.ts +0 -11
- package/tests/setup/models/Post.ts +0 -16
- package/tests/setup/models/Sales.ts +0 -10
- package/tests/setup/models/User.ts +0 -19
- package/tests/setup/procedure/GetAllUsers.ts +0 -9
- package/tests/setup/procedure/GetUserById.ts +0 -12
- package/tests/setup/test-utils.ts +0 -72
- package/tests/setup/views/ActiveUsers.ts +0 -8
- package/tests/setup/views/UserSummary.ts +0 -11
- package/tests/types/nullable-queryable-record.spec.ts +0 -97
- package/tests/utils/result-parser-perf.spec.ts +0 -143
- package/tests/utils/result-parser.spec.ts +0 -667
|
@@ -3,14 +3,14 @@ import type { Queryable } from "../exec/queryable";
|
|
|
3
3
|
import type { DataRecord } from "../types/db";
|
|
4
4
|
import { createRelationFactory, type InferDeepRelations, type RelationBuilderRecord } from "./factory/relation-builder";
|
|
5
5
|
/**
|
|
6
|
-
* Database View
|
|
6
|
+
* Database View 정의 builder
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Fluent API로 View query와 관계를 정의
|
|
9
|
+
* DbContext의 queryable()과 함께 사용하여 타입 안전한 query 구성
|
|
10
10
|
*
|
|
11
|
-
* @template TDbContext - DbContext
|
|
12
|
-
* @template TData - View
|
|
13
|
-
* @template TRelations -
|
|
11
|
+
* @template TDbContext - DbContext 타입
|
|
12
|
+
* @template TData - View 데이터 레코드 타입
|
|
13
|
+
* @template TRelations - 관계 정의 레코드 타입
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```typescript
|
|
@@ -35,8 +35,8 @@ import { createRelationFactory, type InferDeepRelations, type RelationBuilderRec
|
|
|
35
35
|
* }
|
|
36
36
|
* ```
|
|
37
37
|
*
|
|
38
|
-
* @see {@link View} factory
|
|
39
|
-
* @see {@link queryable} Queryable
|
|
38
|
+
* @see {@link View} factory 함수
|
|
39
|
+
* @see {@link queryable} Queryable 생성
|
|
40
40
|
*/
|
|
41
41
|
export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends DataRecord, TRelations extends RelationBuilderRecord> {
|
|
42
42
|
readonly meta: {
|
|
@@ -47,18 +47,18 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
47
47
|
viewFn?: (db: TDbContext) => Queryable<TData, any>;
|
|
48
48
|
relations?: TRelations;
|
|
49
49
|
};
|
|
50
|
-
/**
|
|
50
|
+
/** 관계 정의 (타입 추론용) */
|
|
51
51
|
readonly $relations: TRelations;
|
|
52
|
-
/**
|
|
52
|
+
/** 전체 타입 추론 */
|
|
53
53
|
readonly $inferSelect: TData;
|
|
54
54
|
/**
|
|
55
|
-
* @param meta - View
|
|
56
|
-
* @param meta.name - View
|
|
57
|
-
* @param meta.description - View
|
|
58
|
-
* @param meta.database - Database
|
|
59
|
-
* @param meta.schema - Schema
|
|
60
|
-
* @param meta.viewFn - View
|
|
61
|
-
* @param meta.relations -
|
|
55
|
+
* @param meta - View 메타데이터
|
|
56
|
+
* @param meta.name - View 이름
|
|
57
|
+
* @param meta.description - View 설명 (comment)
|
|
58
|
+
* @param meta.database - Database 이름
|
|
59
|
+
* @param meta.schema - Schema 이름 (MSSQL/PostgreSQL)
|
|
60
|
+
* @param meta.viewFn - View query 정의 함수
|
|
61
|
+
* @param meta.relations - 관계 정의
|
|
62
62
|
*/
|
|
63
63
|
constructor(meta: {
|
|
64
64
|
name: string;
|
|
@@ -69,17 +69,17 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
69
69
|
relations?: TRelations;
|
|
70
70
|
});
|
|
71
71
|
/**
|
|
72
|
-
* View
|
|
72
|
+
* View 설명 설정
|
|
73
73
|
*
|
|
74
|
-
* @param desc - View
|
|
75
|
-
* @returns
|
|
74
|
+
* @param desc - View 설명 (DDL Comment로 사용됨)
|
|
75
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
76
76
|
*/
|
|
77
77
|
description(desc: string): ViewBuilder<TDbContext, TData, TRelations>;
|
|
78
78
|
/**
|
|
79
|
-
* Database
|
|
79
|
+
* Database 이름 설정
|
|
80
80
|
*
|
|
81
|
-
* @param db - Database
|
|
82
|
-
* @returns
|
|
81
|
+
* @param db - Database 이름
|
|
82
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
83
83
|
*
|
|
84
84
|
* @example
|
|
85
85
|
* ```typescript
|
|
@@ -88,23 +88,23 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
88
88
|
*/
|
|
89
89
|
database(db: string): ViewBuilder<TDbContext, TData, TRelations>;
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* Schema 이름 설정
|
|
92
92
|
*
|
|
93
|
-
*
|
|
93
|
+
* MSSQL, PostgreSQL에서 사용
|
|
94
94
|
*
|
|
95
|
-
* @param schema - Schema
|
|
96
|
-
* @returns
|
|
95
|
+
* @param schema - Schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
96
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
97
97
|
*/
|
|
98
98
|
schema(schema: string): ViewBuilder<TDbContext, TData, TRelations>;
|
|
99
99
|
/**
|
|
100
|
-
* View
|
|
100
|
+
* View query 정의
|
|
101
101
|
*
|
|
102
|
-
*
|
|
102
|
+
* SELECT query를 통해 View의 데이터 소스를 정의
|
|
103
103
|
*
|
|
104
|
-
* @template TViewData - View
|
|
105
|
-
* @template TDb - DbContext
|
|
106
|
-
* @param viewFn -
|
|
107
|
-
* @returns
|
|
104
|
+
* @template TViewData - View 데이터 타입
|
|
105
|
+
* @template TDb - DbContext 타입
|
|
106
|
+
* @param viewFn - DbContext를 받아 Queryable을 반환하는 함수
|
|
107
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
108
108
|
*
|
|
109
109
|
* @example
|
|
110
110
|
* ```typescript
|
|
@@ -123,13 +123,13 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
123
123
|
*/
|
|
124
124
|
query<TViewData extends DataRecord, TDb extends DbContextBase>(viewFn: (db: TDb) => Queryable<TViewData, any>): ViewBuilder<TDb, TViewData, TRelations>;
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* 관계 정의
|
|
127
127
|
*
|
|
128
|
-
*
|
|
128
|
+
* 다른 Table/View와의 관계를 설정
|
|
129
129
|
*
|
|
130
|
-
* @template T -
|
|
131
|
-
* @param fn -
|
|
132
|
-
* @returns
|
|
130
|
+
* @template T - 관계 정의 타입
|
|
131
|
+
* @param fn - 관계 factory를 받아 관계 정의를 반환하는 함수
|
|
132
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
133
133
|
*
|
|
134
134
|
* @example
|
|
135
135
|
* ```typescript
|
|
@@ -146,12 +146,12 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
146
146
|
relations<T extends RelationBuilderRecord>(fn: (r: ReturnType<typeof createRelationFactory<this, keyof TData & string>>) => T): ViewBuilder<TDbContext, TData & InferDeepRelations<T>, TRelations>;
|
|
147
147
|
}
|
|
148
148
|
/**
|
|
149
|
-
* View builder factory
|
|
149
|
+
* View builder factory 함수
|
|
150
150
|
*
|
|
151
|
-
*
|
|
151
|
+
* Fluent API로 View schema를 정의하기 위한 ViewBuilder를 생성
|
|
152
152
|
*
|
|
153
|
-
* @param name - View
|
|
154
|
-
* @returns ViewBuilder
|
|
153
|
+
* @param name - View 이름
|
|
154
|
+
* @returns ViewBuilder 인스턴스
|
|
155
155
|
*
|
|
156
156
|
* @example
|
|
157
157
|
* ```typescript
|
|
@@ -164,7 +164,7 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
164
164
|
* .select(u => ({ id: u.id, name: u.name }))
|
|
165
165
|
* );
|
|
166
166
|
*
|
|
167
|
-
* //
|
|
167
|
+
* // 집계 View
|
|
168
168
|
* const UserStats = View("UserStats")
|
|
169
169
|
* .database("mydb")
|
|
170
170
|
* .query((db: MyDb) =>
|
|
@@ -177,7 +177,7 @@ export declare class ViewBuilder<TDbContext extends DbContextBase, TData extends
|
|
|
177
177
|
* );
|
|
178
178
|
* ```
|
|
179
179
|
*
|
|
180
|
-
* @see {@link ViewBuilder} builder
|
|
180
|
+
* @see {@link ViewBuilder} builder 클래스
|
|
181
181
|
*/
|
|
182
182
|
export declare function View(name: string): ViewBuilder<DbContextBase, DataRecord, RelationBuilderRecord>;
|
|
183
183
|
//# sourceMappingURL=view-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,WAAW,CACtB,UAAU,SAAS,aAAa,EAChC,KAAK,SAAS,UAAU,EACxB,UAAU,SAAS,qBAAqB;IAiBtC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAtBH
|
|
1
|
+
{"version":3,"file":"view-builder.d.ts","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAMpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,WAAW,CACtB,UAAU,SAAS,aAAa,EAChC,KAAK,SAAS,UAAU,EACxB,UAAU,SAAS,qBAAqB;IAiBtC,QAAQ,CAAC,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAtBH,qBAAqB;IACrB,QAAQ,CAAC,UAAU,EAAG,UAAU,CAAC;IACjC,eAAe;IACf,QAAQ,CAAC,YAAY,EAAG,KAAK,CAAC;IAE9B;;;;;;;;OAQG;gBAEQ,IAAI,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;IAGH;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIrE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIhE;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;IAIlE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,SAAS,SAAS,UAAU,EAAE,GAAG,SAAS,aAAa,EAC3D,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,GAC7C,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC;IAI1C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,CAAC,SAAS,qBAAqB,EACvC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,GACjF,WAAW,CAAC,UAAU,EAAE,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;CAQtE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,iEAEhC"}
|
|
@@ -1,118 +1,191 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
1
|
+
import { createRelationFactory, } from "./factory/relation-builder.js";
|
|
2
|
+
// ============================================
|
|
3
|
+
// ViewBuilder
|
|
4
|
+
// ============================================
|
|
5
|
+
/**
|
|
6
|
+
* Database View 정의 builder
|
|
7
|
+
*
|
|
8
|
+
* Fluent API로 View query와 관계를 정의
|
|
9
|
+
* DbContext의 queryable()과 함께 사용하여 타입 안전한 query 구성
|
|
10
|
+
*
|
|
11
|
+
* @template TDbContext - DbContext 타입
|
|
12
|
+
* @template TData - View 데이터 레코드 타입
|
|
13
|
+
* @template TRelations - 관계 정의 레코드 타입
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* // View definition
|
|
18
|
+
* const UserSummary = View("UserSummary")
|
|
19
|
+
* .database("mydb")
|
|
20
|
+
* .query((db: MyDb) =>
|
|
21
|
+
* db.user()
|
|
22
|
+
* .select(u => ({
|
|
23
|
+
* id: u.id,
|
|
24
|
+
* name: u.name,
|
|
25
|
+
* postCount: expr.subquery(
|
|
26
|
+
* db.post().where(p => [expr.eq(p.authorId, u.id)]),
|
|
27
|
+
* q => expr.count(q.id)
|
|
28
|
+
* ),
|
|
29
|
+
* }))
|
|
30
|
+
* );
|
|
31
|
+
*
|
|
32
|
+
* // Used in DbContext
|
|
33
|
+
* class MyDb extends DbContext {
|
|
34
|
+
* readonly userSummary = queryable(this, UserSummary);
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @see {@link View} factory 함수
|
|
39
|
+
* @see {@link queryable} Queryable 생성
|
|
40
|
+
*/
|
|
41
|
+
export class ViewBuilder {
|
|
42
|
+
meta;
|
|
43
|
+
/** 관계 정의 (타입 추론용) */
|
|
44
|
+
$relations;
|
|
45
|
+
/** 전체 타입 추론 */
|
|
46
|
+
$inferSelect;
|
|
47
|
+
/**
|
|
48
|
+
* @param meta - View 메타데이터
|
|
49
|
+
* @param meta.name - View 이름
|
|
50
|
+
* @param meta.description - View 설명 (comment)
|
|
51
|
+
* @param meta.database - Database 이름
|
|
52
|
+
* @param meta.schema - Schema 이름 (MSSQL/PostgreSQL)
|
|
53
|
+
* @param meta.viewFn - View query 정의 함수
|
|
54
|
+
* @param meta.relations - 관계 정의
|
|
55
|
+
*/
|
|
56
|
+
constructor(meta) {
|
|
57
|
+
this.meta = meta;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* View 설명 설정
|
|
61
|
+
*
|
|
62
|
+
* @param desc - View 설명 (DDL Comment로 사용됨)
|
|
63
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
64
|
+
*/
|
|
65
|
+
description(desc) {
|
|
66
|
+
return new ViewBuilder({ ...this.meta, description: desc });
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Database 이름 설정
|
|
70
|
+
*
|
|
71
|
+
* @param db - Database 이름
|
|
72
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const UserSummary = View("UserSummary").database("mydb");
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
database(db) {
|
|
80
|
+
return new ViewBuilder({ ...this.meta, database: db });
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Schema 이름 설정
|
|
84
|
+
*
|
|
85
|
+
* MSSQL, PostgreSQL에서 사용
|
|
86
|
+
*
|
|
87
|
+
* @param schema - Schema 이름 (MSSQL: dbo, PostgreSQL: public)
|
|
88
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
89
|
+
*/
|
|
90
|
+
schema(schema) {
|
|
91
|
+
return new ViewBuilder({ ...this.meta, schema });
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* View query 정의
|
|
95
|
+
*
|
|
96
|
+
* SELECT query를 통해 View의 데이터 소스를 정의
|
|
97
|
+
*
|
|
98
|
+
* @template TViewData - View 데이터 타입
|
|
99
|
+
* @template TDb - DbContext 타입
|
|
100
|
+
* @param viewFn - DbContext를 받아 Queryable을 반환하는 함수
|
|
101
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const ActiveUsers = View("ActiveUsers")
|
|
106
|
+
* .database("mydb")
|
|
107
|
+
* .query((db: MyDb) =>
|
|
108
|
+
* db.user()
|
|
109
|
+
* .where(u => [expr.eq(u.status, "active")])
|
|
110
|
+
* .select(u => ({
|
|
111
|
+
* id: u.id,
|
|
112
|
+
* name: u.name,
|
|
113
|
+
* email: u.email,
|
|
114
|
+
* }))
|
|
115
|
+
* );
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
query(viewFn) {
|
|
119
|
+
return new ViewBuilder({ ...this.meta, viewFn });
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 관계 정의
|
|
123
|
+
*
|
|
124
|
+
* 다른 Table/View와의 관계를 설정
|
|
125
|
+
*
|
|
126
|
+
* @template T - 관계 정의 타입
|
|
127
|
+
* @param fn - 관계 factory를 받아 관계 정의를 반환하는 함수
|
|
128
|
+
* @returns 새 ViewBuilder 인스턴스
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* const UserSummary = View("UserSummary")
|
|
133
|
+
* .query((db: MyDb) => db.user().select(...))
|
|
134
|
+
* .relations((r) => ({
|
|
135
|
+
* posts: r.foreignKeyTarget(Post, "author"),
|
|
136
|
+
* }));
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* @see {@link ForeignKeyBuilder} FK builder
|
|
140
|
+
* @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
|
|
141
|
+
*/
|
|
142
|
+
relations(fn) {
|
|
143
|
+
// Casting is unavoidable due to TypeScript generic type inference limitations
|
|
144
|
+
// Resolves type mismatch between TRelations type parameter and newly created relation type T
|
|
145
|
+
return new ViewBuilder({
|
|
146
|
+
...this.meta,
|
|
147
|
+
relations: fn(createRelationFactory(() => this)),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
110
150
|
}
|
|
111
|
-
|
|
112
|
-
|
|
151
|
+
// ============================================
|
|
152
|
+
// View 함수
|
|
153
|
+
// ============================================
|
|
154
|
+
/**
|
|
155
|
+
* View builder factory 함수
|
|
156
|
+
*
|
|
157
|
+
* Fluent API로 View schema를 정의하기 위한 ViewBuilder를 생성
|
|
158
|
+
*
|
|
159
|
+
* @param name - View 이름
|
|
160
|
+
* @returns ViewBuilder 인스턴스
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* // Basic usage
|
|
165
|
+
* const ActiveUsers = View("ActiveUsers")
|
|
166
|
+
* .database("mydb")
|
|
167
|
+
* .query((db: MyDb) =>
|
|
168
|
+
* db.user()
|
|
169
|
+
* .where(u => [expr.eq(u.status, "active")])
|
|
170
|
+
* .select(u => ({ id: u.id, name: u.name }))
|
|
171
|
+
* );
|
|
172
|
+
*
|
|
173
|
+
* // 집계 View
|
|
174
|
+
* const UserStats = View("UserStats")
|
|
175
|
+
* .database("mydb")
|
|
176
|
+
* .query((db: MyDb) =>
|
|
177
|
+
* db.user()
|
|
178
|
+
* .groupBy(u => ({ status: u.status }))
|
|
179
|
+
* .select(u => ({
|
|
180
|
+
* status: u.status,
|
|
181
|
+
* count: expr.count(u.id),
|
|
182
|
+
* }))
|
|
183
|
+
* );
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @see {@link ViewBuilder} builder 클래스
|
|
187
|
+
*/
|
|
188
|
+
export function View(name) {
|
|
189
|
+
return new ViewBuilder({ name });
|
|
113
190
|
}
|
|
114
|
-
|
|
115
|
-
View,
|
|
116
|
-
ViewBuilder
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=view-builder.js.map
|
|
191
|
+
//# sourceMappingURL=view-builder.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/schema/view-builder.ts"],
|
|
4
|
-
"mappings": "AAGA;AAAA,EACE;AAAA,OAGK;AA0CA,MAAM,YAIX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,YACW,MAQT;AARS;AAAA,EAQR;AAAA;AAAA,EAtBM;AAAA;AAAA,EAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BT,YAAY,MAA0D;AACpE,WAAO,IAAI,YAAY,EAAE,GAAG,KAAK,MAAM,aAAa,KAAK,CAAC;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,SAAS,IAAwD;AAC/D,WAAO,IAAI,YAAY,EAAE,GAAG,KAAK,MAAM,UAAU,GAAG,CAAC;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,QAA4D;AACjE,WAAO,IAAI,YAAY,EAAE,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BA,MACE,QACyC;AACzC,WAAO,IAAI,YAAY,EAAE,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,UACE,IACoE;AAGpE,WAAO,IAAI,YAAY;AAAA,MACrB,GAAG,KAAK;AAAA,MACR,WAAW,GAAG,sBAAkD,MAAM,IAAI,CAAC;AAAA,IAC7E,CAAC;AAAA,EACH;AACF;AAwCO,SAAS,KAAK,MAAc;AACjC,SAAO,IAAI,YAAY,EAAE,KAAK,CAAC;AACjC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"view-builder.js","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,WAAW;IAoBX;IAfX,qBAAqB;IACZ,UAAU,CAAc;IACjC,eAAe;IACN,YAAY,CAAS;IAE9B;;;;;;;;OAQG;IACH,YACW,IAOR;QAPQ,SAAI,GAAJ,IAAI,CAOZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CACH,MAA8C;QAE9C,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CACP,EAAkF;QAElF,8EAA8E;QAC9E,6FAA6F;QAC7F,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAA6B,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAC7E,CAAQ,CAAC;IACZ,CAAC;CACF;AAED,+CAA+C;AAC/C,UAAU;AACV,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/types/column.js
CHANGED
|
@@ -1,33 +1,63 @@
|
|
|
1
1
|
import { DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
// ============================================
|
|
3
|
+
// DataType ↔ ColumnPrimitive Mapping
|
|
4
|
+
// ============================================
|
|
5
|
+
/**
|
|
6
|
+
* SQL DataType → TypeScript type name mapping
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* const tsType = dataTypeStrToColumnPrimitiveStr["int"]; // "number"
|
|
11
|
+
* const tsType2 = dataTypeStrToColumnPrimitiveStr["datetime"]; // "DateTime"
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export const dataTypeStrToColumnPrimitiveStr = {
|
|
15
|
+
int: "number",
|
|
16
|
+
bigint: "number",
|
|
17
|
+
float: "number",
|
|
18
|
+
double: "number",
|
|
19
|
+
decimal: "number",
|
|
20
|
+
varchar: "string",
|
|
21
|
+
char: "string",
|
|
22
|
+
text: "string",
|
|
23
|
+
binary: "Bytes",
|
|
24
|
+
boolean: "boolean",
|
|
25
|
+
datetime: "DateTime",
|
|
26
|
+
date: "DateOnly",
|
|
27
|
+
time: "Time",
|
|
28
|
+
uuid: "Uuid",
|
|
17
29
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Infer ColumnPrimitiveStr from runtime value
|
|
32
|
+
*
|
|
33
|
+
* @param value - Column value
|
|
34
|
+
* @returns ColumnPrimitiveStr type name
|
|
35
|
+
* @throws Error if value type is unknown
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* inferColumnPrimitiveStr("hello"); // "string"
|
|
40
|
+
* inferColumnPrimitiveStr(123); // "number"
|
|
41
|
+
* inferColumnPrimitiveStr(new DateTime()); // "DateTime"
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function inferColumnPrimitiveStr(value) {
|
|
45
|
+
if (typeof value === "string")
|
|
46
|
+
return "string";
|
|
47
|
+
if (typeof value === "number")
|
|
48
|
+
return "number";
|
|
49
|
+
if (typeof value === "boolean")
|
|
50
|
+
return "boolean";
|
|
51
|
+
if (value instanceof DateTime)
|
|
52
|
+
return "DateTime";
|
|
53
|
+
if (value instanceof DateOnly)
|
|
54
|
+
return "DateOnly";
|
|
55
|
+
if (value instanceof Time)
|
|
56
|
+
return "Time";
|
|
57
|
+
if (value instanceof Uuid)
|
|
58
|
+
return "Uuid";
|
|
59
|
+
if (value instanceof Uint8Array)
|
|
60
|
+
return "Bytes";
|
|
61
|
+
throw new Error(`알 수 없는 값 타입: ${typeof value}`);
|
|
28
62
|
}
|
|
29
|
-
|
|
30
|
-
dataTypeStrToColumnPrimitiveStr,
|
|
31
|
-
inferColumnPrimitiveStr
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=column.js.map
|
|
63
|
+
//# sourceMappingURL=column.js.map
|
package/dist/types/column.js.map
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/types/column.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,UAAU,UAAU,MAAM,YAAwB;AAyGpD,MAAM,kCAAkC;AAAA,EAC7C,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR;AA8BO,SAAS,wBAAwB,OAA4C;AAClF,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,UAAW,QAAO;AACvC,MAAI,iBAAiB,SAAU,QAAO;AACtC,MAAI,iBAAiB,SAAU,QAAO;AACtC,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,iBAAiB,KAAM,QAAO;AAClC,MAAI,iBAAiB,WAAY,QAAO;AACxC,QAAM,IAAI,MAAM,uBAAuB,OAAO,KAAK,EAAE;AACvD;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"column.js","sourceRoot":"","sources":["..\\..\\src\\types\\column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAc,MAAM,uBAAuB,CAAC;AA4FnF,+CAA+C;AAC/C,qCAAqC;AACrC,+CAA+C;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,GAAG,EAAE,QAAiB;IACtB,MAAM,EAAE,QAAiB;IACzB,KAAK,EAAE,QAAiB;IACxB,MAAM,EAAE,QAAiB;IACzB,OAAO,EAAE,QAAiB;IAC1B,OAAO,EAAE,QAAiB;IAC1B,IAAI,EAAE,QAAiB;IACvB,IAAI,EAAE,QAAiB;IACvB,MAAM,EAAE,OAAgB;IACxB,OAAO,EAAE,SAAkB;IAC3B,QAAQ,EAAE,UAAmB;IAC7B,IAAI,EAAE,UAAmB;IACzB,IAAI,EAAE,MAAe;IACrB,IAAI,EAAE,MAAe;CACtB,CAAC;AAgBF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAsB;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,UAAU,CAAC;IACjD,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,UAAU,CAAC;IACjD,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,OAAO,CAAC;IAChD,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -7,11 +7,11 @@ import type { IndexBuilder } from "../schema/factory/index-builder";
|
|
|
7
7
|
import type { DataRecord, IsolationLevel, Migration, ResultMeta } from "./db";
|
|
8
8
|
import type { QueryDef, QueryDefObjectName } from "./query-def";
|
|
9
9
|
/**
|
|
10
|
-
* DbContext
|
|
10
|
+
* DbContext 핵심 인터페이스
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Queryable, Executable, ViewBuilder에서 사용하는 내부 인터페이스.
|
|
13
|
+
* 기존 DbContext 클래스와 새로운 createDbContext 반환 객체 모두
|
|
14
|
+
* 이 인터페이스를 만족함.
|
|
15
15
|
*/
|
|
16
16
|
export interface DbContextBase {
|
|
17
17
|
status: DbContextStatus;
|
|
@@ -25,9 +25,9 @@ export interface DbContextBase {
|
|
|
25
25
|
}
|
|
26
26
|
export type DbContextStatus = "ready" | "connect" | "transact";
|
|
27
27
|
/**
|
|
28
|
-
* DbContext
|
|
28
|
+
* DbContext 정의 (blueprint)
|
|
29
29
|
*
|
|
30
|
-
*
|
|
30
|
+
* defineDbContext()로 생성됨. Schema 메타데이터만 포함하며 런타임 상태는 없음.
|
|
31
31
|
*/
|
|
32
32
|
export interface DbContextDef<TTables extends Record<string, TableBuilder<any, any>>, TViews extends Record<string, ViewBuilder<any, any, any>>, TProcedures extends Record<string, ProcedureBuilder<any, any>> = {}> {
|
|
33
33
|
readonly meta: {
|
|
@@ -38,10 +38,10 @@ export interface DbContextDef<TTables extends Record<string, TableBuilder<any, a
|
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
41
|
+
* 전체 DbContext 인스턴스 타입 (createDbContext로 생성)
|
|
42
42
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
43
|
+
* DbContextBase를 queryable 접근자, DDL 메서드,
|
|
44
|
+
* 연결/트랜잭션 관리로 확장.
|
|
45
45
|
*/
|
|
46
46
|
export type DbContextInstance<TDef extends DbContextDef<any, any, any>> = DbContextBase & DbContextConnectionMethods & DbContextDdlMethods & {
|
|
47
47
|
[K in keyof TDef["meta"]["tables"]]: () => import("../exec/queryable").Queryable<TDef["meta"]["tables"][K]["$inferSelect"], TDef["meta"]["tables"][K]>;
|