@simplysm/orm-common 13.0.68 → 13.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -1447
- package/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +9 -9
- package/dist/create-db-context.js.map +1 -1
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +2 -2
- package/dist/ddl/initialize.js.map +1 -1
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/table-ddl.d.ts +24 -24
- package/dist/ddl/table-ddl.js +4 -4
- package/dist/ddl/table-ddl.js.map +1 -1
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +3 -3
- package/dist/exec/executable.js.map +1 -1
- package/dist/exec/queryable.d.ts +160 -160
- package/dist/exec/queryable.js +119 -119
- package/dist/exec/queryable.js.map +1 -1
- package/dist/exec/search-parser.d.ts +37 -37
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr.d.ts +257 -257
- package/dist/expr/expr.js +265 -265
- package/dist/expr/expr.js.map +1 -1
- package/dist/query-builder/base/expr-renderer-base.d.ts +9 -9
- package/dist/query-builder/base/expr-renderer-base.js +2 -2
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -1
- package/dist/query-builder/base/query-builder-base.d.ts +26 -26
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +22 -22
- package/dist/query-builder/base/query-builder-base.js.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +18 -18
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +11 -11
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +17 -17
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +8 -8
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +5 -5
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +17 -17
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +5 -5
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/schema/factory/column-builder.d.ts +79 -79
- package/dist/schema/factory/column-builder.js +42 -42
- package/dist/schema/factory/index-builder.d.ts +39 -39
- package/dist/schema/factory/index-builder.js +26 -26
- package/dist/schema/factory/relation-builder.d.ts +99 -99
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +38 -38
- package/dist/schema/procedure-builder.d.ts +49 -49
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +33 -33
- package/dist/schema/table-builder.d.ts +59 -59
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +43 -43
- package/dist/schema/view-builder.d.ts +49 -49
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +32 -32
- package/dist/types/column.d.ts +22 -22
- package/dist/types/column.js +1 -1
- package/dist/types/column.js.map +1 -1
- package/dist/types/db.d.ts +40 -40
- package/dist/types/expr.d.ts +59 -59
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/query-def.d.ts +44 -44
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/utils/result-parser.d.ts +11 -11
- package/dist/utils/result-parser.js +3 -3
- package/dist/utils/result-parser.js.map +1 -1
- package/package.json +5 -5
- package/src/create-db-context.ts +20 -20
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +259 -259
- package/src/ddl/relation-ddl.ts +89 -89
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +189 -189
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +2033 -2033
- package/src/exec/search-parser.ts +57 -57
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +2140 -2140
- package/src/query-builder/base/expr-renderer-base.ts +237 -237
- package/src/query-builder/base/query-builder-base.ts +213 -213
- package/src/query-builder/mssql/mssql-expr-renderer.ts +607 -607
- package/src/query-builder/mssql/mssql-query-builder.ts +650 -650
- package/src/query-builder/mysql/mysql-expr-renderer.ts +613 -613
- package/src/query-builder/mysql/mysql-query-builder.ts +759 -759
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +611 -611
- package/src/query-builder/postgresql/postgresql-query-builder.ts +686 -686
- package/src/query-builder/query-builder.ts +19 -19
- package/src/schema/factory/column-builder.ts +423 -423
- package/src/schema/factory/index-builder.ts +164 -164
- package/src/schema/factory/relation-builder.ts +453 -453
- package/src/schema/procedure-builder.ts +232 -232
- package/src/schema/table-builder.ts +319 -319
- package/src/schema/view-builder.ts +221 -221
- package/src/types/column.ts +188 -188
- package/src/types/db.ts +208 -208
- package/src/types/expr.ts +697 -697
- package/src/types/query-def.ts +513 -513
- package/src/utils/result-parser.ts +458 -458
- package/tests/db-context/create-db-context.spec.ts +224 -0
- package/tests/db-context/define-db-context.spec.ts +68 -0
- package/tests/ddl/basic.expected.ts +341 -0
- package/tests/ddl/basic.spec.ts +714 -0
- package/tests/ddl/column-builder.expected.ts +310 -0
- package/tests/ddl/column-builder.spec.ts +637 -0
- package/tests/ddl/index-builder.expected.ts +38 -0
- package/tests/ddl/index-builder.spec.ts +202 -0
- package/tests/ddl/procedure-builder.expected.ts +52 -0
- package/tests/ddl/procedure-builder.spec.ts +234 -0
- package/tests/ddl/relation-builder.expected.ts +36 -0
- package/tests/ddl/relation-builder.spec.ts +372 -0
- package/tests/ddl/table-builder.expected.ts +113 -0
- package/tests/ddl/table-builder.spec.ts +433 -0
- package/tests/ddl/view-builder.expected.ts +38 -0
- package/tests/ddl/view-builder.spec.ts +176 -0
- package/tests/dml/delete.expected.ts +96 -0
- package/tests/dml/delete.spec.ts +160 -0
- package/tests/dml/insert.expected.ts +192 -0
- package/tests/dml/insert.spec.ts +288 -0
- package/tests/dml/update.expected.ts +176 -0
- package/tests/dml/update.spec.ts +318 -0
- package/tests/dml/upsert.expected.ts +215 -0
- package/tests/dml/upsert.spec.ts +242 -0
- package/tests/errors/queryable-errors.spec.ts +177 -0
- package/tests/escape.spec.ts +100 -0
- package/tests/examples/pivot.expected.ts +211 -0
- package/tests/examples/pivot.spec.ts +533 -0
- package/tests/examples/sampling.expected.ts +69 -0
- package/tests/examples/sampling.spec.ts +104 -0
- package/tests/examples/unpivot.expected.ts +120 -0
- package/tests/examples/unpivot.spec.ts +226 -0
- package/tests/exec/search-parser.spec.ts +283 -0
- package/tests/executable/basic.expected.ts +18 -0
- package/tests/executable/basic.spec.ts +54 -0
- package/tests/expr/comparison.expected.ts +282 -0
- package/tests/expr/comparison.spec.ts +400 -0
- package/tests/expr/conditional.expected.ts +134 -0
- package/tests/expr/conditional.spec.ts +276 -0
- package/tests/expr/date.expected.ts +332 -0
- package/tests/expr/date.spec.ts +526 -0
- package/tests/expr/math.expected.ts +62 -0
- package/tests/expr/math.spec.ts +106 -0
- package/tests/expr/string.expected.ts +218 -0
- package/tests/expr/string.spec.ts +356 -0
- package/tests/expr/utility.expected.ts +147 -0
- package/tests/expr/utility.spec.ts +182 -0
- package/tests/select/basic.expected.ts +322 -0
- package/tests/select/basic.spec.ts +502 -0
- package/tests/select/filter.expected.ts +357 -0
- package/tests/select/filter.spec.ts +1068 -0
- package/tests/select/group.expected.ts +169 -0
- package/tests/select/group.spec.ts +244 -0
- package/tests/select/join.expected.ts +582 -0
- package/tests/select/join.spec.ts +805 -0
- package/tests/select/order.expected.ts +150 -0
- package/tests/select/order.spec.ts +189 -0
- package/tests/select/recursive-cte.expected.ts +244 -0
- package/tests/select/recursive-cte.spec.ts +514 -0
- package/tests/select/result-meta.spec.ts +270 -0
- package/tests/select/subquery.expected.ts +363 -0
- package/tests/select/subquery.spec.ts +537 -0
- package/tests/select/view.expected.ts +155 -0
- package/tests/select/view.spec.ts +235 -0
- package/tests/select/window.expected.ts +345 -0
- package/tests/select/window.spec.ts +618 -0
- package/tests/setup/MockExecutor.ts +18 -0
- package/tests/setup/TestDbContext.ts +59 -0
- package/tests/setup/models/Company.ts +13 -0
- package/tests/setup/models/Employee.ts +10 -0
- package/tests/setup/models/MonthlySales.ts +11 -0
- package/tests/setup/models/Post.ts +16 -0
- package/tests/setup/models/Sales.ts +10 -0
- package/tests/setup/models/User.ts +19 -0
- package/tests/setup/procedure/GetAllUsers.ts +9 -0
- package/tests/setup/procedure/GetUserById.ts +12 -0
- package/tests/setup/test-utils.ts +72 -0
- package/tests/setup/views/ActiveUsers.ts +8 -0
- package/tests/setup/views/UserSummary.ts +11 -0
- package/tests/types/nullable-queryable-record.spec.ts +145 -0
- package/tests/utils/result-parser-perf.spec.ts +210 -0
- package/tests/utils/result-parser.spec.ts +701 -0
- package/docs/expressions.md +0 -172
- package/docs/queries.md +0 -444
- package/docs/schema.md +0 -245
|
@@ -3,13 +3,13 @@ import type { ColumnMeta, ColumnPrimitive } from "../../types/column";
|
|
|
3
3
|
import type { ExprInput } from "../../expr/expr-unit";
|
|
4
4
|
import type { DataRecord } from "../../types/db";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Column definition builder
|
|
7
7
|
*
|
|
8
|
-
* Fluent API를 통해
|
|
9
|
-
* TableBuilder.columns()
|
|
8
|
+
* Fluent API를 통해 column의 type, nullable, autoIncrement, default, description을 definition
|
|
9
|
+
* TableBuilder.columns()used in
|
|
10
10
|
*
|
|
11
|
-
* @template TValue -
|
|
12
|
-
* @template TMeta -
|
|
11
|
+
* @template TValue - Column value type
|
|
12
|
+
* @template TMeta - Column Metadata type
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```typescript
|
|
@@ -18,26 +18,26 @@ import type { DataRecord } from "../../types/db";
|
|
|
18
18
|
* id: c.bigint().autoIncrement(), // bigint, auto increment
|
|
19
19
|
* name: c.varchar(100), // varchar(100), required
|
|
20
20
|
* email: c.varchar(200).nullable(), // varchar(200), nullable
|
|
21
|
-
* status: c.varchar(20).default("active"), // varchar(20), default
|
|
21
|
+
* status: c.varchar(20).default("active"), // varchar(20), default value
|
|
22
22
|
* createdAt: c.datetime().description("생성일시"),
|
|
23
23
|
* }));
|
|
24
24
|
* ```
|
|
25
25
|
*
|
|
26
|
-
* @see {@link createColumnFactory}
|
|
27
|
-
* @see {@link TableBuilder}
|
|
26
|
+
* @see {@link createColumnFactory} column factory
|
|
27
|
+
* @see {@link TableBuilder} Table builder
|
|
28
28
|
*/
|
|
29
29
|
export declare class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends ColumnMeta> {
|
|
30
30
|
readonly meta: TMeta;
|
|
31
31
|
/**
|
|
32
|
-
* @param meta -
|
|
32
|
+
* @param meta - Column Metadata
|
|
33
33
|
*/
|
|
34
34
|
constructor(meta: TMeta);
|
|
35
35
|
/**
|
|
36
36
|
* Auto Increment 설정
|
|
37
37
|
*
|
|
38
|
-
* INSERT 시
|
|
38
|
+
* INSERT 시 Auto increment. INSERT용 Type inference에서 optional로 processing
|
|
39
39
|
*
|
|
40
|
-
* @returns
|
|
40
|
+
* @returns new ColumnBuilder instance
|
|
41
41
|
*
|
|
42
42
|
* @example
|
|
43
43
|
* ```typescript
|
|
@@ -50,9 +50,9 @@ export declare class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends
|
|
|
50
50
|
/**
|
|
51
51
|
* Nullable 설정
|
|
52
52
|
*
|
|
53
|
-
* NULL
|
|
53
|
+
* Allow NULL. value 타입에 undefined Add
|
|
54
54
|
*
|
|
55
|
-
* @returns
|
|
55
|
+
* @returns new ColumnBuilder instance
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
58
58
|
* ```typescript
|
|
@@ -63,12 +63,12 @@ export declare class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends
|
|
|
63
63
|
nullable: true;
|
|
64
64
|
}>;
|
|
65
65
|
/**
|
|
66
|
-
*
|
|
66
|
+
* Default value 설정
|
|
67
67
|
*
|
|
68
|
-
* INSERT 시
|
|
68
|
+
* INSERT 시 value 미지정 시 사용. INSERT용 Type inference에서 optional로 processing
|
|
69
69
|
*
|
|
70
|
-
* @param value -
|
|
71
|
-
* @returns
|
|
70
|
+
* @param value - Default value
|
|
71
|
+
* @returns new ColumnBuilder instance
|
|
72
72
|
*
|
|
73
73
|
* @example
|
|
74
74
|
* ```typescript
|
|
@@ -80,14 +80,14 @@ export declare class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends
|
|
|
80
80
|
default: typeof value;
|
|
81
81
|
}>;
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
83
|
+
* column set description
|
|
84
84
|
*
|
|
85
|
-
* @param desc -
|
|
86
|
-
* @returns
|
|
85
|
+
* @param desc - Column description (DDL Comment으로 사용)
|
|
86
|
+
* @returns new ColumnBuilder instance
|
|
87
87
|
*
|
|
88
88
|
* @example
|
|
89
89
|
* ```typescript
|
|
90
|
-
* createdAt: c.datetime().description("레코드
|
|
90
|
+
* createdAt: c.datetime().description("레코드 Generate 일시")
|
|
91
91
|
* ```
|
|
92
92
|
*/
|
|
93
93
|
description(desc: string): ColumnBuilder<TValue, TMeta & {
|
|
@@ -95,46 +95,46 @@ export declare class ColumnBuilder<TValue extends ColumnPrimitive, TMeta extends
|
|
|
95
95
|
}>;
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
|
-
*
|
|
98
|
+
* Column builder factory Generate
|
|
99
99
|
*
|
|
100
|
-
* TableBuilder.columns()
|
|
101
|
-
* 모든
|
|
100
|
+
* TableBuilder.columns()used in하는 Column type factory
|
|
101
|
+
* 모든 Basic data type에 대한 builder Generate method 제공
|
|
102
102
|
*
|
|
103
|
-
* @returns
|
|
103
|
+
* @returns Column type별 builder Generate 메서드를 포함한 object
|
|
104
104
|
*
|
|
105
105
|
* @example
|
|
106
106
|
* ```typescript
|
|
107
107
|
* Table("User")
|
|
108
108
|
* .columns((c) => ({
|
|
109
|
-
* //
|
|
109
|
+
* // Number type
|
|
110
110
|
* id: c.bigint().autoIncrement(),
|
|
111
111
|
* count: c.int(),
|
|
112
112
|
* price: c.decimal(10, 2),
|
|
113
113
|
*
|
|
114
|
-
* // 문자열
|
|
114
|
+
* // 문자열 type
|
|
115
115
|
* name: c.varchar(100),
|
|
116
116
|
* code: c.char(10),
|
|
117
117
|
* content: c.text(),
|
|
118
118
|
*
|
|
119
|
-
* //
|
|
119
|
+
* // Date/시간 type
|
|
120
120
|
* createdAt: c.datetime(),
|
|
121
121
|
* birthDate: c.date(),
|
|
122
122
|
* startTime: c.time(),
|
|
123
123
|
*
|
|
124
|
-
* //
|
|
124
|
+
* // Other type
|
|
125
125
|
* isActive: c.boolean(),
|
|
126
126
|
* data: c.binary(),
|
|
127
127
|
* uuid: c.uuid(),
|
|
128
128
|
* }));
|
|
129
129
|
* ```
|
|
130
130
|
*
|
|
131
|
-
* @see {@link ColumnBuilder}
|
|
131
|
+
* @see {@link ColumnBuilder} Column builder class
|
|
132
132
|
*/
|
|
133
133
|
export declare function createColumnFactory(): {
|
|
134
134
|
/**
|
|
135
|
-
* INT
|
|
135
|
+
* INT column (4 bytes, -2^31 ~ 2^31-1)
|
|
136
136
|
*
|
|
137
|
-
* @returns ColumnBuilder
|
|
137
|
+
* @returns ColumnBuilder instance
|
|
138
138
|
*/
|
|
139
139
|
int(): ColumnBuilder<number, {
|
|
140
140
|
type: "number";
|
|
@@ -143,9 +143,9 @@ export declare function createColumnFactory(): {
|
|
|
143
143
|
};
|
|
144
144
|
}>;
|
|
145
145
|
/**
|
|
146
|
-
* BIGINT
|
|
146
|
+
* BIGINT column (8 bytes, -2^63 ~ 2^63-1)
|
|
147
147
|
*
|
|
148
|
-
* @returns ColumnBuilder
|
|
148
|
+
* @returns ColumnBuilder instance
|
|
149
149
|
*/
|
|
150
150
|
bigint(): ColumnBuilder<number, {
|
|
151
151
|
type: "number";
|
|
@@ -154,9 +154,9 @@ export declare function createColumnFactory(): {
|
|
|
154
154
|
};
|
|
155
155
|
}>;
|
|
156
156
|
/**
|
|
157
|
-
* FLOAT
|
|
157
|
+
* FLOAT column (4 bytes, 단정밀도 부동소수점)
|
|
158
158
|
*
|
|
159
|
-
* @returns ColumnBuilder
|
|
159
|
+
* @returns ColumnBuilder instance
|
|
160
160
|
*/
|
|
161
161
|
float(): ColumnBuilder<number, {
|
|
162
162
|
type: "number";
|
|
@@ -165,9 +165,9 @@ export declare function createColumnFactory(): {
|
|
|
165
165
|
};
|
|
166
166
|
}>;
|
|
167
167
|
/**
|
|
168
|
-
* DOUBLE
|
|
168
|
+
* DOUBLE column (8 bytes, 배정밀도 부동소수점)
|
|
169
169
|
*
|
|
170
|
-
* @returns ColumnBuilder
|
|
170
|
+
* @returns ColumnBuilder instance
|
|
171
171
|
*/
|
|
172
172
|
double(): ColumnBuilder<number, {
|
|
173
173
|
type: "number";
|
|
@@ -176,11 +176,11 @@ export declare function createColumnFactory(): {
|
|
|
176
176
|
};
|
|
177
177
|
}>;
|
|
178
178
|
/**
|
|
179
|
-
* DECIMAL
|
|
179
|
+
* DECIMAL column (고정 소수점)
|
|
180
180
|
*
|
|
181
181
|
* @param precision - 전체 자릿수
|
|
182
|
-
* @param scale - 소수점 이하 자릿수 (
|
|
183
|
-
* @returns ColumnBuilder
|
|
182
|
+
* @param scale - 소수점 이하 자릿수 (Select)
|
|
183
|
+
* @returns ColumnBuilder instance
|
|
184
184
|
*
|
|
185
185
|
* @example
|
|
186
186
|
* ```typescript
|
|
@@ -196,10 +196,10 @@ export declare function createColumnFactory(): {
|
|
|
196
196
|
};
|
|
197
197
|
}>;
|
|
198
198
|
/**
|
|
199
|
-
* VARCHAR
|
|
199
|
+
* VARCHAR column (가변 길이 문자열)
|
|
200
200
|
*
|
|
201
201
|
* @param length - 최대 길이
|
|
202
|
-
* @returns ColumnBuilder
|
|
202
|
+
* @returns ColumnBuilder instance
|
|
203
203
|
*
|
|
204
204
|
* @example
|
|
205
205
|
* ```typescript
|
|
@@ -214,10 +214,10 @@ export declare function createColumnFactory(): {
|
|
|
214
214
|
};
|
|
215
215
|
}>;
|
|
216
216
|
/**
|
|
217
|
-
* CHAR
|
|
217
|
+
* CHAR column (고정 길이 문자열)
|
|
218
218
|
*
|
|
219
219
|
* @param length - 고정 길이
|
|
220
|
-
* @returns ColumnBuilder
|
|
220
|
+
* @returns ColumnBuilder instance
|
|
221
221
|
*
|
|
222
222
|
* @example
|
|
223
223
|
* ```typescript
|
|
@@ -232,9 +232,9 @@ export declare function createColumnFactory(): {
|
|
|
232
232
|
};
|
|
233
233
|
}>;
|
|
234
234
|
/**
|
|
235
|
-
* TEXT
|
|
235
|
+
* TEXT column (대용량 문자열)
|
|
236
236
|
*
|
|
237
|
-
* @returns ColumnBuilder
|
|
237
|
+
* @returns ColumnBuilder instance
|
|
238
238
|
*/
|
|
239
239
|
text(): ColumnBuilder<string, {
|
|
240
240
|
type: "string";
|
|
@@ -243,11 +243,11 @@ export declare function createColumnFactory(): {
|
|
|
243
243
|
};
|
|
244
244
|
}>;
|
|
245
245
|
/**
|
|
246
|
-
* BINARY
|
|
246
|
+
* BINARY column (바이너리 data)
|
|
247
247
|
*
|
|
248
248
|
* DBMS별: MySQL=LONGBLOB, MSSQL=VARBINARY(MAX), PostgreSQL=BYTEA
|
|
249
249
|
*
|
|
250
|
-
* @returns ColumnBuilder
|
|
250
|
+
* @returns ColumnBuilder instance
|
|
251
251
|
*/
|
|
252
252
|
binary(): ColumnBuilder<Bytes, {
|
|
253
253
|
type: "Bytes";
|
|
@@ -256,11 +256,11 @@ export declare function createColumnFactory(): {
|
|
|
256
256
|
};
|
|
257
257
|
}>;
|
|
258
258
|
/**
|
|
259
|
-
* BOOLEAN
|
|
259
|
+
* BOOLEAN column
|
|
260
260
|
*
|
|
261
261
|
* DBMS별: MySQL=TINYINT(1), MSSQL=BIT, PostgreSQL=BOOLEAN
|
|
262
262
|
*
|
|
263
|
-
* @returns ColumnBuilder
|
|
263
|
+
* @returns ColumnBuilder instance
|
|
264
264
|
*/
|
|
265
265
|
boolean(): ColumnBuilder<boolean, {
|
|
266
266
|
type: "boolean";
|
|
@@ -269,9 +269,9 @@ export declare function createColumnFactory(): {
|
|
|
269
269
|
};
|
|
270
270
|
}>;
|
|
271
271
|
/**
|
|
272
|
-
* DATETIME
|
|
272
|
+
* DATETIME column (Date + 시간)
|
|
273
273
|
*
|
|
274
|
-
* @returns ColumnBuilder
|
|
274
|
+
* @returns ColumnBuilder instance
|
|
275
275
|
*/
|
|
276
276
|
datetime(): ColumnBuilder<DateTime, {
|
|
277
277
|
type: "DateTime";
|
|
@@ -280,9 +280,9 @@ export declare function createColumnFactory(): {
|
|
|
280
280
|
};
|
|
281
281
|
}>;
|
|
282
282
|
/**
|
|
283
|
-
* DATE
|
|
283
|
+
* DATE column (Date만)
|
|
284
284
|
*
|
|
285
|
-
* @returns ColumnBuilder
|
|
285
|
+
* @returns ColumnBuilder instance
|
|
286
286
|
*/
|
|
287
287
|
date(): ColumnBuilder<DateOnly, {
|
|
288
288
|
type: "DateOnly";
|
|
@@ -291,9 +291,9 @@ export declare function createColumnFactory(): {
|
|
|
291
291
|
};
|
|
292
292
|
}>;
|
|
293
293
|
/**
|
|
294
|
-
* TIME
|
|
294
|
+
* TIME column (시간만)
|
|
295
295
|
*
|
|
296
|
-
* @returns ColumnBuilder
|
|
296
|
+
* @returns ColumnBuilder instance
|
|
297
297
|
*/
|
|
298
298
|
time(): ColumnBuilder<Time, {
|
|
299
299
|
type: "Time";
|
|
@@ -302,11 +302,11 @@ export declare function createColumnFactory(): {
|
|
|
302
302
|
};
|
|
303
303
|
}>;
|
|
304
304
|
/**
|
|
305
|
-
* UUID
|
|
305
|
+
* UUID column
|
|
306
306
|
*
|
|
307
307
|
* DBMS별: MySQL=BINARY(16), MSSQL=UNIQUEIDENTIFIER, PostgreSQL=UUID
|
|
308
308
|
*
|
|
309
|
-
* @returns ColumnBuilder
|
|
309
|
+
* @returns ColumnBuilder instance
|
|
310
310
|
*/
|
|
311
311
|
uuid(): ColumnBuilder<Uuid, {
|
|
312
312
|
type: "Uuid";
|
|
@@ -316,15 +316,15 @@ export declare function createColumnFactory(): {
|
|
|
316
316
|
}>;
|
|
317
317
|
};
|
|
318
318
|
/**
|
|
319
|
-
*
|
|
319
|
+
* Column builder record type
|
|
320
320
|
*
|
|
321
|
-
* TableBuilder.columns()의
|
|
321
|
+
* TableBuilder.columns()의 return 타입으로 사용
|
|
322
322
|
*/
|
|
323
323
|
export type ColumnBuilderRecord = Record<string, ColumnBuilder<ColumnPrimitive, ColumnMeta>>;
|
|
324
324
|
/**
|
|
325
|
-
*
|
|
325
|
+
* Column builder 레코드에서 실제 value Type inference
|
|
326
326
|
*
|
|
327
|
-
* @template T -
|
|
327
|
+
* @template T - Column builder record type
|
|
328
328
|
*
|
|
329
329
|
* @example
|
|
330
330
|
* ```typescript
|
|
@@ -336,37 +336,37 @@ export type InferColumns<TBuilders extends ColumnBuilderRecord> = {
|
|
|
336
336
|
[K in keyof TBuilders]: TBuilders[K] extends ColumnBuilder<infer V, any> ? V : never;
|
|
337
337
|
};
|
|
338
338
|
/**
|
|
339
|
-
*
|
|
339
|
+
* Column builder 레코드에서 expression 입력 Type inference
|
|
340
340
|
*
|
|
341
|
-
* @template T -
|
|
341
|
+
* @template T - Column builder record type
|
|
342
342
|
*/
|
|
343
343
|
export type InferColumnExprs<TBuilders extends ColumnBuilderRecord> = {
|
|
344
344
|
[K in keyof TBuilders]: TBuilders[K] extends ColumnBuilder<infer V, any> ? ExprInput<V> : never;
|
|
345
345
|
};
|
|
346
346
|
/**
|
|
347
|
-
* INSERT 시
|
|
347
|
+
* INSERT 시 required column key 추출
|
|
348
348
|
*
|
|
349
|
-
* autoIncrement, nullable, default가 없는
|
|
349
|
+
* autoIncrement, nullable, default가 없는 column만 required
|
|
350
350
|
*
|
|
351
|
-
* @template T -
|
|
351
|
+
* @template T - Column builder record type
|
|
352
352
|
*/
|
|
353
353
|
export type RequiredInsertKeys<TBuilders extends ColumnBuilderRecord> = {
|
|
354
354
|
[K in keyof TBuilders]: TBuilders[K]["meta"] extends infer M extends ColumnMeta ? M["autoIncrement"] extends true ? never : M["nullable"] extends true ? never : M["default"] extends undefined ? K : never : never;
|
|
355
355
|
}[keyof TBuilders];
|
|
356
356
|
/**
|
|
357
|
-
* INSERT 시
|
|
357
|
+
* INSERT 시 optional column key 추출
|
|
358
358
|
*
|
|
359
|
-
* autoIncrement, nullable, default가 있는
|
|
359
|
+
* autoIncrement, nullable, default가 있는 column은 optional
|
|
360
360
|
*
|
|
361
|
-
* @template T -
|
|
361
|
+
* @template T - Column builder record type
|
|
362
362
|
*/
|
|
363
363
|
export type OptionalInsertKeys<TBuilders extends ColumnBuilderRecord> = Exclude<keyof TBuilders, RequiredInsertKeys<TBuilders>>;
|
|
364
364
|
/**
|
|
365
|
-
* INSERT용
|
|
365
|
+
* INSERT용 Type inference
|
|
366
366
|
*
|
|
367
|
-
*
|
|
367
|
+
* required column은 required, optional column은 Partial
|
|
368
368
|
*
|
|
369
|
-
* @template T -
|
|
369
|
+
* @template T - Column builder record type
|
|
370
370
|
*
|
|
371
371
|
* @example
|
|
372
372
|
* ```typescript
|
|
@@ -376,17 +376,17 @@ export type OptionalInsertKeys<TBuilders extends ColumnBuilderRecord> = Exclude<
|
|
|
376
376
|
*/
|
|
377
377
|
export type InferInsertColumns<TBuilders extends ColumnBuilderRecord> = Pick<InferColumns<TBuilders>, RequiredInsertKeys<TBuilders>> & Partial<Pick<InferColumns<TBuilders>, OptionalInsertKeys<TBuilders>>>;
|
|
378
378
|
/**
|
|
379
|
-
* UPDATE용
|
|
379
|
+
* UPDATE용 Type inference
|
|
380
380
|
*
|
|
381
|
-
* 모든
|
|
381
|
+
* 모든 column이 optional
|
|
382
382
|
*
|
|
383
|
-
* @template T -
|
|
383
|
+
* @template T - Column builder record type
|
|
384
384
|
*/
|
|
385
385
|
export type InferUpdateColumns<TBuilders extends ColumnBuilderRecord> = Partial<InferColumns<TBuilders>>;
|
|
386
386
|
/**
|
|
387
|
-
*
|
|
387
|
+
* data 레코드에서 Column builder 레코드로 Transform
|
|
388
388
|
*
|
|
389
|
-
* @template TData -
|
|
389
|
+
* @template TData - data record type
|
|
390
390
|
*/
|
|
391
391
|
export type DataToColumnBuilderRecord<TData extends DataRecord> = {
|
|
392
392
|
[K in keyof TData as TData[K] extends ColumnPrimitive ? K : never]: ColumnBuilder<TData[K] extends ColumnPrimitive ? TData[K] : never, any>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class ColumnBuilder {
|
|
2
2
|
/**
|
|
3
|
-
* @param meta -
|
|
3
|
+
* @param meta - Column Metadata
|
|
4
4
|
*/
|
|
5
5
|
constructor(meta) {
|
|
6
6
|
this.meta = meta;
|
|
@@ -8,9 +8,9 @@ class ColumnBuilder {
|
|
|
8
8
|
/**
|
|
9
9
|
* Auto Increment 설정
|
|
10
10
|
*
|
|
11
|
-
* INSERT 시
|
|
11
|
+
* INSERT 시 Auto increment. INSERT용 Type inference에서 optional로 processing
|
|
12
12
|
*
|
|
13
|
-
* @returns
|
|
13
|
+
* @returns new ColumnBuilder instance
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```typescript
|
|
@@ -23,9 +23,9 @@ class ColumnBuilder {
|
|
|
23
23
|
/**
|
|
24
24
|
* Nullable 설정
|
|
25
25
|
*
|
|
26
|
-
* NULL
|
|
26
|
+
* Allow NULL. value 타입에 undefined Add
|
|
27
27
|
*
|
|
28
|
-
* @returns
|
|
28
|
+
* @returns new ColumnBuilder instance
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```typescript
|
|
@@ -36,12 +36,12 @@ class ColumnBuilder {
|
|
|
36
36
|
return new ColumnBuilder({ ...this.meta, nullable: true });
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
39
|
+
* Default value 설정
|
|
40
40
|
*
|
|
41
|
-
* INSERT 시
|
|
41
|
+
* INSERT 시 value 미지정 시 사용. INSERT용 Type inference에서 optional로 processing
|
|
42
42
|
*
|
|
43
|
-
* @param value -
|
|
44
|
-
* @returns
|
|
43
|
+
* @param value - Default value
|
|
44
|
+
* @returns new ColumnBuilder instance
|
|
45
45
|
*
|
|
46
46
|
* @example
|
|
47
47
|
* ```typescript
|
|
@@ -53,14 +53,14 @@ class ColumnBuilder {
|
|
|
53
53
|
return new ColumnBuilder({ ...this.meta, default: value });
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* column set description
|
|
57
57
|
*
|
|
58
|
-
* @param desc -
|
|
59
|
-
* @returns
|
|
58
|
+
* @param desc - Column description (DDL Comment으로 사용)
|
|
59
|
+
* @returns new ColumnBuilder instance
|
|
60
60
|
*
|
|
61
61
|
* @example
|
|
62
62
|
* ```typescript
|
|
63
|
-
* createdAt: c.datetime().description("레코드
|
|
63
|
+
* createdAt: c.datetime().description("레코드 Generate 일시")
|
|
64
64
|
* ```
|
|
65
65
|
*/
|
|
66
66
|
description(desc) {
|
|
@@ -70,43 +70,43 @@ class ColumnBuilder {
|
|
|
70
70
|
function createColumnFactory() {
|
|
71
71
|
return {
|
|
72
72
|
/**
|
|
73
|
-
* INT
|
|
73
|
+
* INT column (4 bytes, -2^31 ~ 2^31-1)
|
|
74
74
|
*
|
|
75
|
-
* @returns ColumnBuilder
|
|
75
|
+
* @returns ColumnBuilder instance
|
|
76
76
|
*/
|
|
77
77
|
int() {
|
|
78
78
|
return new ColumnBuilder({ type: "number", dataType: { type: "int" } });
|
|
79
79
|
},
|
|
80
80
|
/**
|
|
81
|
-
* BIGINT
|
|
81
|
+
* BIGINT column (8 bytes, -2^63 ~ 2^63-1)
|
|
82
82
|
*
|
|
83
|
-
* @returns ColumnBuilder
|
|
83
|
+
* @returns ColumnBuilder instance
|
|
84
84
|
*/
|
|
85
85
|
bigint() {
|
|
86
86
|
return new ColumnBuilder({ type: "number", dataType: { type: "bigint" } });
|
|
87
87
|
},
|
|
88
88
|
/**
|
|
89
|
-
* FLOAT
|
|
89
|
+
* FLOAT column (4 bytes, 단정밀도 부동소수점)
|
|
90
90
|
*
|
|
91
|
-
* @returns ColumnBuilder
|
|
91
|
+
* @returns ColumnBuilder instance
|
|
92
92
|
*/
|
|
93
93
|
float() {
|
|
94
94
|
return new ColumnBuilder({ type: "number", dataType: { type: "float" } });
|
|
95
95
|
},
|
|
96
96
|
/**
|
|
97
|
-
* DOUBLE
|
|
97
|
+
* DOUBLE column (8 bytes, 배정밀도 부동소수점)
|
|
98
98
|
*
|
|
99
|
-
* @returns ColumnBuilder
|
|
99
|
+
* @returns ColumnBuilder instance
|
|
100
100
|
*/
|
|
101
101
|
double() {
|
|
102
102
|
return new ColumnBuilder({ type: "number", dataType: { type: "double" } });
|
|
103
103
|
},
|
|
104
104
|
/**
|
|
105
|
-
* DECIMAL
|
|
105
|
+
* DECIMAL column (고정 소수점)
|
|
106
106
|
*
|
|
107
107
|
* @param precision - 전체 자릿수
|
|
108
|
-
* @param scale - 소수점 이하 자릿수 (
|
|
109
|
-
* @returns ColumnBuilder
|
|
108
|
+
* @param scale - 소수점 이하 자릿수 (Select)
|
|
109
|
+
* @returns ColumnBuilder instance
|
|
110
110
|
*
|
|
111
111
|
* @example
|
|
112
112
|
* ```typescript
|
|
@@ -117,10 +117,10 @@ function createColumnFactory() {
|
|
|
117
117
|
return new ColumnBuilder({ type: "number", dataType: { type: "decimal", precision, scale } });
|
|
118
118
|
},
|
|
119
119
|
/**
|
|
120
|
-
* VARCHAR
|
|
120
|
+
* VARCHAR column (가변 길이 문자열)
|
|
121
121
|
*
|
|
122
122
|
* @param length - 최대 길이
|
|
123
|
-
* @returns ColumnBuilder
|
|
123
|
+
* @returns ColumnBuilder instance
|
|
124
124
|
*
|
|
125
125
|
* @example
|
|
126
126
|
* ```typescript
|
|
@@ -131,10 +131,10 @@ function createColumnFactory() {
|
|
|
131
131
|
return new ColumnBuilder({ type: "string", dataType: { type: "varchar", length } });
|
|
132
132
|
},
|
|
133
133
|
/**
|
|
134
|
-
* CHAR
|
|
134
|
+
* CHAR column (고정 길이 문자열)
|
|
135
135
|
*
|
|
136
136
|
* @param length - 고정 길이
|
|
137
|
-
* @returns ColumnBuilder
|
|
137
|
+
* @returns ColumnBuilder instance
|
|
138
138
|
*
|
|
139
139
|
* @example
|
|
140
140
|
* ```typescript
|
|
@@ -145,63 +145,63 @@ function createColumnFactory() {
|
|
|
145
145
|
return new ColumnBuilder({ type: "string", dataType: { type: "char", length } });
|
|
146
146
|
},
|
|
147
147
|
/**
|
|
148
|
-
* TEXT
|
|
148
|
+
* TEXT column (대용량 문자열)
|
|
149
149
|
*
|
|
150
|
-
* @returns ColumnBuilder
|
|
150
|
+
* @returns ColumnBuilder instance
|
|
151
151
|
*/
|
|
152
152
|
text() {
|
|
153
153
|
return new ColumnBuilder({ type: "string", dataType: { type: "text" } });
|
|
154
154
|
},
|
|
155
155
|
/**
|
|
156
|
-
* BINARY
|
|
156
|
+
* BINARY column (바이너리 data)
|
|
157
157
|
*
|
|
158
158
|
* DBMS별: MySQL=LONGBLOB, MSSQL=VARBINARY(MAX), PostgreSQL=BYTEA
|
|
159
159
|
*
|
|
160
|
-
* @returns ColumnBuilder
|
|
160
|
+
* @returns ColumnBuilder instance
|
|
161
161
|
*/
|
|
162
162
|
binary() {
|
|
163
163
|
return new ColumnBuilder({ type: "Bytes", dataType: { type: "binary" } });
|
|
164
164
|
},
|
|
165
165
|
/**
|
|
166
|
-
* BOOLEAN
|
|
166
|
+
* BOOLEAN column
|
|
167
167
|
*
|
|
168
168
|
* DBMS별: MySQL=TINYINT(1), MSSQL=BIT, PostgreSQL=BOOLEAN
|
|
169
169
|
*
|
|
170
|
-
* @returns ColumnBuilder
|
|
170
|
+
* @returns ColumnBuilder instance
|
|
171
171
|
*/
|
|
172
172
|
boolean() {
|
|
173
173
|
return new ColumnBuilder({ type: "boolean", dataType: { type: "boolean" } });
|
|
174
174
|
},
|
|
175
175
|
/**
|
|
176
|
-
* DATETIME
|
|
176
|
+
* DATETIME column (Date + 시간)
|
|
177
177
|
*
|
|
178
|
-
* @returns ColumnBuilder
|
|
178
|
+
* @returns ColumnBuilder instance
|
|
179
179
|
*/
|
|
180
180
|
datetime() {
|
|
181
181
|
return new ColumnBuilder({ type: "DateTime", dataType: { type: "datetime" } });
|
|
182
182
|
},
|
|
183
183
|
/**
|
|
184
|
-
* DATE
|
|
184
|
+
* DATE column (Date만)
|
|
185
185
|
*
|
|
186
|
-
* @returns ColumnBuilder
|
|
186
|
+
* @returns ColumnBuilder instance
|
|
187
187
|
*/
|
|
188
188
|
date() {
|
|
189
189
|
return new ColumnBuilder({ type: "DateOnly", dataType: { type: "date" } });
|
|
190
190
|
},
|
|
191
191
|
/**
|
|
192
|
-
* TIME
|
|
192
|
+
* TIME column (시간만)
|
|
193
193
|
*
|
|
194
|
-
* @returns ColumnBuilder
|
|
194
|
+
* @returns ColumnBuilder instance
|
|
195
195
|
*/
|
|
196
196
|
time() {
|
|
197
197
|
return new ColumnBuilder({ type: "Time", dataType: { type: "time" } });
|
|
198
198
|
},
|
|
199
199
|
/**
|
|
200
|
-
* UUID
|
|
200
|
+
* UUID column
|
|
201
201
|
*
|
|
202
202
|
* DBMS별: MySQL=BINARY(16), MSSQL=UNIQUEIDENTIFIER, PostgreSQL=UUID
|
|
203
203
|
*
|
|
204
|
-
* @returns ColumnBuilder
|
|
204
|
+
* @returns ColumnBuilder instance
|
|
205
205
|
*/
|
|
206
206
|
uuid() {
|
|
207
207
|
return new ColumnBuilder({ type: "Uuid", dataType: { type: "uuid" } });
|