@simplysm/orm-common 13.0.100 → 14.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +90 -147
- 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 +108 -108
- 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 +5 -5
- 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.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +5 -5
- 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.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- 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 +5 -5
- 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.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- 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 +99 -99
- 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.d.ts +21 -21
- 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.d.ts +11 -11
- package/dist/utils/result-parser.js +362 -221
- package/dist/utils/result-parser.js.map +1 -6
- package/docs/core.md +117 -145
- package/docs/expression.md +186 -203
- package/docs/query-builder.md +75 -42
- package/docs/queryable.md +189 -151
- package/docs/schema-builders.md +172 -283
- package/docs/types.md +229 -173
- package/package.json +7 -5
- 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 +152 -152
- package/src/exec/search-parser.ts +50 -50
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +118 -118
- 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 +28 -28
- package/src/query-builder/mssql/mssql-query-builder.ts +37 -37
- package/src/query-builder/mysql/mysql-expr-renderer.ts +29 -29
- package/src/query-builder/mysql/mysql-query-builder.ts +70 -70
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +22 -22
- package/src/query-builder/postgresql/postgresql-query-builder.ts +54 -54
- 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 +102 -102
- package/src/schema/procedure-builder.ts +52 -52
- package/src/schema/table-builder.ts +56 -56
- package/src/schema/view-builder.ts +47 -47
- package/src/types/column.ts +24 -24
- 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 +88 -88
- 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
|
+
// TypeScript 제네릭 타입 추론 한계로 인해 캐스팅이 불가피
|
|
144
|
+
// TRelations 타입 파라미터와 새로 생성된 관계 타입 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,uCAAuC;QACvC,kDAAkD;QAClD,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.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DateOnly, DateTime, Time, Uuid, type Bytes } from "@simplysm/core-common";
|
|
2
2
|
/**
|
|
3
|
-
* SQL
|
|
3
|
+
* SQL 데이터 타입 정의
|
|
4
4
|
*
|
|
5
|
-
* DBMS
|
|
5
|
+
* DBMS 매핑:
|
|
6
6
|
* - `int`: INT (4 bytes)
|
|
7
7
|
* - `bigint`: BIGINT (8 bytes)
|
|
8
8
|
* - `float`: FLOAT/REAL (4 bytes)
|
|
@@ -59,9 +59,9 @@ export type DataType = {
|
|
|
59
59
|
type: "uuid";
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
|
-
* Column
|
|
62
|
+
* Column 원시 타입 매핑
|
|
63
63
|
*
|
|
64
|
-
* TypeScript
|
|
64
|
+
* TypeScript 타입 이름 (문자열) → 실제 TypeScript 타입 매핑
|
|
65
65
|
*
|
|
66
66
|
* @example
|
|
67
67
|
* ```typescript
|
|
@@ -80,7 +80,7 @@ export type ColumnPrimitiveMap = {
|
|
|
80
80
|
Bytes: Bytes;
|
|
81
81
|
};
|
|
82
82
|
/**
|
|
83
|
-
* Column
|
|
83
|
+
* Column 원시 타입 이름 (문자열)
|
|
84
84
|
*
|
|
85
85
|
* @example
|
|
86
86
|
* ```typescript
|
|
@@ -90,13 +90,13 @@ export type ColumnPrimitiveMap = {
|
|
|
90
90
|
*/
|
|
91
91
|
export type ColumnPrimitiveStr = keyof ColumnPrimitiveMap;
|
|
92
92
|
/**
|
|
93
|
-
*
|
|
93
|
+
* Column에 저장 가능한 모든 원시 타입
|
|
94
94
|
*
|
|
95
|
-
* undefined
|
|
95
|
+
* undefined는 NULL을 나타냄
|
|
96
96
|
*/
|
|
97
97
|
export type ColumnPrimitive = ColumnPrimitiveMap[ColumnPrimitiveStr] | undefined;
|
|
98
98
|
/**
|
|
99
|
-
* SQL DataType → TypeScript
|
|
99
|
+
* SQL DataType → TypeScript 타입 이름 매핑
|
|
100
100
|
*
|
|
101
101
|
* @example
|
|
102
102
|
* ```typescript
|
|
@@ -121,7 +121,7 @@ export declare const dataTypeStrToColumnPrimitiveStr: {
|
|
|
121
121
|
uuid: "Uuid";
|
|
122
122
|
};
|
|
123
123
|
/**
|
|
124
|
-
* TypeScript
|
|
124
|
+
* DataType으로부터 TypeScript 타입 추론
|
|
125
125
|
*
|
|
126
126
|
* @template T - DataType
|
|
127
127
|
*
|
|
@@ -133,11 +133,11 @@ export declare const dataTypeStrToColumnPrimitiveStr: {
|
|
|
133
133
|
*/
|
|
134
134
|
export type InferColumnPrimitiveFromDataType<TDataType extends DataType> = ColumnPrimitiveMap[(typeof dataTypeStrToColumnPrimitiveStr)[TDataType["type"]]];
|
|
135
135
|
/**
|
|
136
|
-
*
|
|
136
|
+
* 런타임 값에서 ColumnPrimitiveStr 추론
|
|
137
137
|
*
|
|
138
|
-
* @param value - Column
|
|
139
|
-
* @returns ColumnPrimitiveStr
|
|
140
|
-
* @throws
|
|
138
|
+
* @param value - Column 값
|
|
139
|
+
* @returns ColumnPrimitiveStr 타입 이름
|
|
140
|
+
* @throws 값 타입이 알 수 없을 때 Error
|
|
141
141
|
*
|
|
142
142
|
* @example
|
|
143
143
|
* ```typescript
|
|
@@ -148,16 +148,16 @@ export type InferColumnPrimitiveFromDataType<TDataType extends DataType> = Colum
|
|
|
148
148
|
*/
|
|
149
149
|
export declare function inferColumnPrimitiveStr(value: ColumnPrimitive): ColumnPrimitiveStr;
|
|
150
150
|
/**
|
|
151
|
-
* Column
|
|
151
|
+
* Column 메타데이터
|
|
152
152
|
*
|
|
153
|
-
*
|
|
153
|
+
* ColumnBuilder에서 생성되어 TableBuilder에 전달됨
|
|
154
154
|
*
|
|
155
|
-
* @property type - TypeScript
|
|
156
|
-
* @property dataType - SQL
|
|
157
|
-
* @property autoIncrement -
|
|
158
|
-
* @property nullable -
|
|
159
|
-
* @property default -
|
|
160
|
-
* @property description - Column
|
|
155
|
+
* @property type - TypeScript 타입 이름 (ColumnPrimitiveStr)
|
|
156
|
+
* @property dataType - SQL 데이터 타입
|
|
157
|
+
* @property autoIncrement - 자동 증가 여부
|
|
158
|
+
* @property nullable - NULL 허용 여부
|
|
159
|
+
* @property default - 기본값
|
|
160
|
+
* @property description - Column 설명 (DDL 코멘트)
|
|
161
161
|
*
|
|
162
162
|
* @see {@link ColumnBuilder} Column builder
|
|
163
163
|
*/
|