@simplysm/orm-common 13.0.99 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +312 -276
- package/dist/create-db-context.js.map +1 -6
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/column-ddl.js +41 -35
- package/dist/ddl/column-ddl.js.map +1 -6
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +200 -142
- package/dist/ddl/initialize.js.map +1 -6
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/relation-ddl.js +55 -48
- package/dist/ddl/relation-ddl.js.map +1 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/schema-ddl.js +21 -15
- package/dist/ddl/schema-ddl.js.map +1 -6
- package/dist/ddl/table-ddl.d.ts +20 -20
- package/dist/ddl/table-ddl.js +139 -93
- package/dist/ddl/table-ddl.js.map +1 -6
- package/dist/define-db-context.js +10 -13
- package/dist/define-db-context.js.map +1 -6
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/errors/db-transaction-error.js +53 -19
- package/dist/errors/db-transaction-error.js.map +1 -6
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +94 -40
- package/dist/exec/executable.js.map +1 -6
- package/dist/exec/queryable.d.ts +97 -97
- package/dist/exec/queryable.js +1310 -1204
- package/dist/exec/queryable.js.map +1 -6
- package/dist/exec/search-parser.d.ts +31 -31
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/exec/search-parser.js +158 -59
- package/dist/exec/search-parser.js.map +1 -6
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr-unit.js +24 -18
- package/dist/expr/expr-unit.js.map +1 -6
- package/dist/expr/expr.d.ts +6 -6
- package/dist/expr/expr.js +1872 -1844
- package/dist/expr/expr.js.map +1 -6
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -6
- package/dist/models/system-migration.js +7 -7
- package/dist/models/system-migration.js.map +1 -6
- package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
- package/dist/query-builder/base/expr-renderer-base.js +27 -21
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
- package/dist/query-builder/base/query-builder-base.d.ts +21 -21
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +90 -80
- package/dist/query-builder/base/query-builder-base.js.map +1 -6
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/query-builder/query-builder.js +13 -13
- package/dist/query-builder/query-builder.js.map +1 -6
- package/dist/schema/factory/column-builder.d.ts +84 -84
- package/dist/schema/factory/column-builder.js +248 -185
- package/dist/schema/factory/column-builder.js.map +1 -6
- package/dist/schema/factory/index-builder.d.ts +38 -38
- package/dist/schema/factory/index-builder.js +144 -85
- package/dist/schema/factory/index-builder.js.map +1 -6
- package/dist/schema/factory/relation-builder.d.ts +91 -91
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +274 -136
- package/dist/schema/factory/relation-builder.js.map +1 -6
- package/dist/schema/procedure-builder.d.ts +51 -51
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +205 -131
- package/dist/schema/procedure-builder.js.map +1 -6
- package/dist/schema/table-builder.d.ts +55 -55
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +274 -205
- package/dist/schema/table-builder.js.map +1 -6
- package/dist/schema/view-builder.d.ts +44 -44
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +189 -116
- package/dist/schema/view-builder.js.map +1 -6
- package/dist/types/column.js +60 -30
- package/dist/types/column.js.map +1 -6
- package/dist/types/db-context-def.d.ts +9 -9
- package/dist/types/db-context-def.js +2 -1
- package/dist/types/db-context-def.js.map +1 -6
- package/dist/types/db.d.ts +47 -47
- package/dist/types/db.js +15 -5
- package/dist/types/db.js.map +1 -6
- package/dist/types/expr.d.ts +81 -81
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/expr.js +3 -1
- package/dist/types/expr.js.map +1 -6
- package/dist/types/query-def.d.ts +46 -46
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/types/query-def.js +31 -24
- package/dist/types/query-def.js.map +1 -6
- package/dist/utils/result-parser.js +362 -221
- package/dist/utils/result-parser.js.map +1 -6
- package/package.json +5 -7
- package/src/create-db-context.ts +31 -31
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +38 -38
- package/src/ddl/relation-ddl.ts +6 -6
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +24 -24
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +134 -134
- package/src/exec/search-parser.ts +50 -50
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +13 -13
- package/src/index.ts +8 -8
- package/src/models/system-migration.ts +1 -1
- package/src/query-builder/base/expr-renderer-base.ts +21 -21
- package/src/query-builder/base/query-builder-base.ts +33 -33
- package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -11
- package/src/query-builder/mssql/mssql-query-builder.ts +11 -11
- package/src/query-builder/mysql/mysql-expr-renderer.ts +15 -15
- package/src/query-builder/mysql/mysql-query-builder.ts +3 -3
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +9 -9
- package/src/query-builder/postgresql/postgresql-query-builder.ts +7 -7
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +86 -86
- package/src/schema/factory/index-builder.ts +38 -38
- package/src/schema/factory/relation-builder.ts +93 -93
- package/src/schema/procedure-builder.ts +52 -52
- package/src/schema/table-builder.ts +56 -56
- package/src/schema/view-builder.ts +45 -45
- package/src/types/column.ts +1 -1
- package/src/types/db-context-def.ts +15 -15
- package/src/types/db.ts +50 -50
- package/src/types/expr.ts +103 -103
- package/src/types/query-def.ts +50 -50
- package/src/utils/result-parser.ts +39 -39
- package/README.md +0 -192
- package/docs/core.md +0 -234
- package/docs/expression.md +0 -234
- package/docs/query-builder.md +0 -93
- package/docs/queryable.md +0 -198
- package/docs/schema-builders.md +0 -463
- package/docs/types.md +0 -445
- package/docs/utilities.md +0 -27
- package/tests/db-context/create-db-context.spec.ts +0 -193
- package/tests/db-context/define-db-context.spec.ts +0 -17
- package/tests/ddl/basic.expected.ts +0 -341
- package/tests/ddl/basic.spec.ts +0 -557
- package/tests/ddl/column-builder.expected.ts +0 -310
- package/tests/ddl/column-builder.spec.ts +0 -525
- package/tests/ddl/index-builder.expected.ts +0 -38
- package/tests/ddl/index-builder.spec.ts +0 -148
- package/tests/ddl/procedure-builder.expected.ts +0 -52
- package/tests/ddl/procedure-builder.spec.ts +0 -128
- package/tests/ddl/relation-builder.expected.ts +0 -36
- package/tests/ddl/relation-builder.spec.ts +0 -171
- package/tests/ddl/table-builder.expected.ts +0 -113
- package/tests/ddl/table-builder.spec.ts +0 -399
- package/tests/ddl/view-builder.expected.ts +0 -38
- package/tests/ddl/view-builder.spec.ts +0 -116
- package/tests/dml/delete.expected.ts +0 -96
- package/tests/dml/delete.spec.ts +0 -127
- package/tests/dml/insert.expected.ts +0 -192
- package/tests/dml/insert.spec.ts +0 -210
- package/tests/dml/update.expected.ts +0 -176
- package/tests/dml/update.spec.ts +0 -222
- package/tests/dml/upsert.expected.ts +0 -215
- package/tests/dml/upsert.spec.ts +0 -190
- package/tests/errors/queryable-errors.spec.ts +0 -126
- package/tests/escape.spec.ts +0 -59
- package/tests/examples/pivot.expected.ts +0 -211
- package/tests/examples/pivot.spec.ts +0 -200
- package/tests/examples/sampling.expected.ts +0 -69
- package/tests/examples/sampling.spec.ts +0 -42
- package/tests/examples/unpivot.expected.ts +0 -120
- package/tests/examples/unpivot.spec.ts +0 -161
- package/tests/exec/search-parser.spec.ts +0 -267
- package/tests/executable/basic.expected.ts +0 -18
- package/tests/executable/basic.spec.ts +0 -54
- package/tests/expr/comparison.expected.ts +0 -282
- package/tests/expr/comparison.spec.ts +0 -334
- package/tests/expr/conditional.expected.ts +0 -134
- package/tests/expr/conditional.spec.ts +0 -249
- package/tests/expr/date.expected.ts +0 -332
- package/tests/expr/date.spec.ts +0 -459
- package/tests/expr/math.expected.ts +0 -62
- package/tests/expr/math.spec.ts +0 -59
- package/tests/expr/string.expected.ts +0 -218
- package/tests/expr/string.spec.ts +0 -300
- package/tests/expr/utility.expected.ts +0 -147
- package/tests/expr/utility.spec.ts +0 -155
- package/tests/select/basic.expected.ts +0 -322
- package/tests/select/basic.spec.ts +0 -433
- package/tests/select/filter.expected.ts +0 -357
- package/tests/select/filter.spec.ts +0 -954
- package/tests/select/group.expected.ts +0 -169
- package/tests/select/group.spec.ts +0 -159
- package/tests/select/join.expected.ts +0 -582
- package/tests/select/join.spec.ts +0 -692
- package/tests/select/order.expected.ts +0 -150
- package/tests/select/order.spec.ts +0 -140
- package/tests/select/recursive-cte.expected.ts +0 -244
- package/tests/select/recursive-cte.spec.ts +0 -514
- package/tests/select/result-meta.spec.ts +0 -270
- package/tests/select/subquery.expected.ts +0 -363
- package/tests/select/subquery.spec.ts +0 -441
- package/tests/select/view.expected.ts +0 -155
- package/tests/select/view.spec.ts +0 -235
- package/tests/select/window.expected.ts +0 -345
- package/tests/select/window.spec.ts +0 -433
- package/tests/setup/MockExecutor.ts +0 -18
- package/tests/setup/TestDbContext.ts +0 -59
- package/tests/setup/models/Company.ts +0 -13
- package/tests/setup/models/Employee.ts +0 -10
- package/tests/setup/models/MonthlySales.ts +0 -11
- package/tests/setup/models/Post.ts +0 -16
- package/tests/setup/models/Sales.ts +0 -10
- package/tests/setup/models/User.ts +0 -19
- package/tests/setup/procedure/GetAllUsers.ts +0 -9
- package/tests/setup/procedure/GetUserById.ts +0 -12
- package/tests/setup/test-utils.ts +0 -72
- package/tests/setup/views/ActiveUsers.ts +0 -8
- package/tests/setup/views/UserSummary.ts +0 -11
- package/tests/types/nullable-queryable-record.spec.ts +0 -97
- package/tests/utils/result-parser-perf.spec.ts +0 -143
- package/tests/utils/result-parser.spec.ts +0 -667
|
@@ -1,215 +1,278 @@
|
|
|
1
|
-
|
|
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
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* email: c.varchar(200).nullable() // string | undefined
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
nullable() {
|
|
36
|
-
return new ColumnBuilder({ ...this.meta, nullable: true });
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Default value configuration
|
|
40
|
-
*
|
|
41
|
-
* Used when no value is specified on INSERT. Treated as optional in INSERT Type inference
|
|
42
|
-
*
|
|
43
|
-
* @param value - Default value
|
|
44
|
-
* @returns new ColumnBuilder instance
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```typescript
|
|
48
|
-
* status: c.varchar(20).default("active")
|
|
49
|
-
* createdAt: c.datetime().default("CURRENT_TIMESTAMP")
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
default(value) {
|
|
53
|
-
return new ColumnBuilder({ ...this.meta, default: value });
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* column set description
|
|
57
|
-
*
|
|
58
|
-
* @param desc - Column description (used as DDL Comment)
|
|
59
|
-
* @returns new ColumnBuilder instance
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```typescript
|
|
63
|
-
* createdAt: c.datetime().description("record creation datetime")
|
|
64
|
-
* ```
|
|
65
|
-
*/
|
|
66
|
-
description(desc) {
|
|
67
|
-
return new ColumnBuilder({ ...this.meta, description: desc });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
function createColumnFactory() {
|
|
71
|
-
return {
|
|
72
|
-
/**
|
|
73
|
-
* INT column (4 bytes, -2^31 ~ 2^31-1)
|
|
74
|
-
*
|
|
75
|
-
* @returns ColumnBuilder instance
|
|
76
|
-
*/
|
|
77
|
-
int() {
|
|
78
|
-
return new ColumnBuilder({ type: "number", dataType: { type: "int" } });
|
|
79
|
-
},
|
|
80
|
-
/**
|
|
81
|
-
* BIGINT column (8 bytes, -2^63 ~ 2^63-1)
|
|
82
|
-
*
|
|
83
|
-
* @returns ColumnBuilder instance
|
|
84
|
-
*/
|
|
85
|
-
bigint() {
|
|
86
|
-
return new ColumnBuilder({ type: "number", dataType: { type: "bigint" } });
|
|
87
|
-
},
|
|
1
|
+
// ============================================
|
|
2
|
+
// ColumnBuilder
|
|
3
|
+
// ============================================
|
|
4
|
+
/**
|
|
5
|
+
* Column 정의 builder
|
|
6
|
+
*
|
|
7
|
+
* Fluent API로 column 타입, nullable, autoIncrement, default, description을 정의
|
|
8
|
+
* TableBuilder.columns()에서 사용
|
|
9
|
+
*
|
|
10
|
+
* @template TValue - Column 값 타입
|
|
11
|
+
* @template TMeta - Column 메타데이터 타입
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* Table("User")
|
|
16
|
+
* .columns((c) => ({
|
|
17
|
+
* id: c.bigint().autoIncrement(), // bigint, 자동 증가
|
|
18
|
+
* name: c.varchar(100), // varchar(100), 필수
|
|
19
|
+
* email: c.varchar(200).nullable(), // varchar(200), nullable
|
|
20
|
+
* status: c.varchar(20).default("active"), // varchar(20), 기본값
|
|
21
|
+
* createdAt: c.datetime().description("created datetime"),
|
|
22
|
+
* }));
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @see {@link createColumnFactory} column factory
|
|
26
|
+
* @see {@link TableBuilder} Table builder
|
|
27
|
+
*/
|
|
28
|
+
export class ColumnBuilder {
|
|
29
|
+
meta;
|
|
88
30
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* @returns ColumnBuilder instance
|
|
31
|
+
* @param meta - Column 메타데이터
|
|
92
32
|
*/
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
33
|
+
constructor(meta) {
|
|
34
|
+
this.meta = meta;
|
|
35
|
+
}
|
|
96
36
|
/**
|
|
97
|
-
*
|
|
37
|
+
* Auto Increment 설정
|
|
98
38
|
*
|
|
99
|
-
*
|
|
100
|
-
*/
|
|
101
|
-
double() {
|
|
102
|
-
return new ColumnBuilder({ type: "number", dataType: { type: "double" } });
|
|
103
|
-
},
|
|
104
|
-
/**
|
|
105
|
-
* DECIMAL column (fixed-point)
|
|
39
|
+
* INSERT 시 자동 증가. INSERT 타입 추론에서 선택적(optional)으로 처리됨
|
|
106
40
|
*
|
|
107
|
-
* @
|
|
108
|
-
* @param scale - Number of digits after the decimal point (optional)
|
|
109
|
-
* @returns ColumnBuilder instance
|
|
41
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
110
42
|
*
|
|
111
43
|
* @example
|
|
112
44
|
* ```typescript
|
|
113
|
-
*
|
|
45
|
+
* id: c.bigint().autoIncrement()
|
|
114
46
|
* ```
|
|
115
47
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
48
|
+
autoIncrement() {
|
|
49
|
+
return new ColumnBuilder({ ...this.meta, autoIncrement: true });
|
|
50
|
+
}
|
|
119
51
|
/**
|
|
120
|
-
*
|
|
52
|
+
* Nullable 설정
|
|
53
|
+
*
|
|
54
|
+
* NULL 허용. 값 타입에 undefined가 추가됨
|
|
121
55
|
*
|
|
122
|
-
* @
|
|
123
|
-
* @returns ColumnBuilder instance
|
|
56
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
124
57
|
*
|
|
125
58
|
* @example
|
|
126
59
|
* ```typescript
|
|
127
|
-
*
|
|
60
|
+
* email: c.varchar(200).nullable() // string | undefined
|
|
128
61
|
* ```
|
|
129
62
|
*/
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
63
|
+
nullable() {
|
|
64
|
+
return new ColumnBuilder({ ...this.meta, nullable: true });
|
|
65
|
+
}
|
|
133
66
|
/**
|
|
134
|
-
*
|
|
67
|
+
* 기본값 설정
|
|
68
|
+
*
|
|
69
|
+
* INSERT 시 값이 지정되지 않으면 사용됨. INSERT 타입 추론에서 선택적(optional)으로 처리됨
|
|
135
70
|
*
|
|
136
|
-
* @param
|
|
137
|
-
* @returns ColumnBuilder
|
|
71
|
+
* @param value - 기본값
|
|
72
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
138
73
|
*
|
|
139
74
|
* @example
|
|
140
75
|
* ```typescript
|
|
141
|
-
*
|
|
76
|
+
* status: c.varchar(20).default("active")
|
|
77
|
+
* createdAt: c.datetime().default("CURRENT_TIMESTAMP")
|
|
142
78
|
* ```
|
|
143
79
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* TEXT column (large text)
|
|
149
|
-
*
|
|
150
|
-
* @returns ColumnBuilder instance
|
|
151
|
-
*/
|
|
152
|
-
text() {
|
|
153
|
-
return new ColumnBuilder({ type: "string", dataType: { type: "text" } });
|
|
154
|
-
},
|
|
155
|
-
/**
|
|
156
|
-
* BINARY column (binary data)
|
|
157
|
-
*
|
|
158
|
-
* Per DBMS: MySQL=LONGBLOB, MSSQL=VARBINARY(MAX), PostgreSQL=BYTEA
|
|
159
|
-
*
|
|
160
|
-
* @returns ColumnBuilder instance
|
|
161
|
-
*/
|
|
162
|
-
binary() {
|
|
163
|
-
return new ColumnBuilder({ type: "Bytes", dataType: { type: "binary" } });
|
|
164
|
-
},
|
|
165
|
-
/**
|
|
166
|
-
* BOOLEAN column
|
|
167
|
-
*
|
|
168
|
-
* Per DBMS: MySQL=TINYINT(1), MSSQL=BIT, PostgreSQL=BOOLEAN
|
|
169
|
-
*
|
|
170
|
-
* @returns ColumnBuilder instance
|
|
171
|
-
*/
|
|
172
|
-
boolean() {
|
|
173
|
-
return new ColumnBuilder({ type: "boolean", dataType: { type: "boolean" } });
|
|
174
|
-
},
|
|
175
|
-
/**
|
|
176
|
-
* DATETIME column (date + time)
|
|
177
|
-
*
|
|
178
|
-
* @returns ColumnBuilder instance
|
|
179
|
-
*/
|
|
180
|
-
datetime() {
|
|
181
|
-
return new ColumnBuilder({ type: "DateTime", dataType: { type: "datetime" } });
|
|
182
|
-
},
|
|
183
|
-
/**
|
|
184
|
-
* DATE column (date only)
|
|
185
|
-
*
|
|
186
|
-
* @returns ColumnBuilder instance
|
|
187
|
-
*/
|
|
188
|
-
date() {
|
|
189
|
-
return new ColumnBuilder({ type: "DateOnly", dataType: { type: "date" } });
|
|
190
|
-
},
|
|
191
|
-
/**
|
|
192
|
-
* TIME column (time only)
|
|
193
|
-
*
|
|
194
|
-
* @returns ColumnBuilder instance
|
|
195
|
-
*/
|
|
196
|
-
time() {
|
|
197
|
-
return new ColumnBuilder({ type: "Time", dataType: { type: "time" } });
|
|
198
|
-
},
|
|
80
|
+
default(value) {
|
|
81
|
+
return new ColumnBuilder({ ...this.meta, default: value });
|
|
82
|
+
}
|
|
199
83
|
/**
|
|
200
|
-
*
|
|
84
|
+
* Column 설명 설정
|
|
201
85
|
*
|
|
202
|
-
*
|
|
86
|
+
* @param desc - Column 설명 (DDL Comment로 사용됨)
|
|
87
|
+
* @returns 새 ColumnBuilder 인스턴스
|
|
203
88
|
*
|
|
204
|
-
* @
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* createdAt: c.datetime().description("record creation datetime")
|
|
92
|
+
* ```
|
|
205
93
|
*/
|
|
206
|
-
|
|
207
|
-
|
|
94
|
+
description(desc) {
|
|
95
|
+
return new ColumnBuilder({ ...this.meta, description: desc });
|
|
208
96
|
}
|
|
209
|
-
};
|
|
210
97
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
98
|
+
// ============================================
|
|
99
|
+
// column factory
|
|
100
|
+
// ============================================
|
|
101
|
+
/**
|
|
102
|
+
* Column builder factory 생성
|
|
103
|
+
*
|
|
104
|
+
* TableBuilder.columns()에서 사용하는 column 타입 factory
|
|
105
|
+
* 모든 기본 데이터 타입에 대한 builder 생성 메서드를 제공
|
|
106
|
+
*
|
|
107
|
+
* @returns 각 Column 타입별 builder 생성 메서드를 포함하는 객체
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* Table("User")
|
|
112
|
+
* .columns((c) => ({
|
|
113
|
+
* // 숫자 타입
|
|
114
|
+
* id: c.bigint().autoIncrement(),
|
|
115
|
+
* count: c.int(),
|
|
116
|
+
* price: c.decimal(10, 2),
|
|
117
|
+
*
|
|
118
|
+
* // 문자열 타입
|
|
119
|
+
* name: c.varchar(100),
|
|
120
|
+
* code: c.char(10),
|
|
121
|
+
* content: c.text(),
|
|
122
|
+
*
|
|
123
|
+
* // 날짜/시간 타입
|
|
124
|
+
* createdAt: c.datetime(),
|
|
125
|
+
* birthDate: c.date(),
|
|
126
|
+
* startTime: c.time(),
|
|
127
|
+
*
|
|
128
|
+
* // 기타 타입
|
|
129
|
+
* isActive: c.boolean(),
|
|
130
|
+
* data: c.binary(),
|
|
131
|
+
* uuid: c.uuid(),
|
|
132
|
+
* }));
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
135
|
+
* @see {@link ColumnBuilder} Column builder 클래스
|
|
136
|
+
*/
|
|
137
|
+
export function createColumnFactory() {
|
|
138
|
+
return {
|
|
139
|
+
/**
|
|
140
|
+
* INT column (4바이트, -2^31 ~ 2^31-1)
|
|
141
|
+
*
|
|
142
|
+
* @returns ColumnBuilder 인스턴스
|
|
143
|
+
*/
|
|
144
|
+
int() {
|
|
145
|
+
return new ColumnBuilder({ type: "number", dataType: { type: "int" } });
|
|
146
|
+
},
|
|
147
|
+
/**
|
|
148
|
+
* BIGINT column (8바이트, -2^63 ~ 2^63-1)
|
|
149
|
+
*
|
|
150
|
+
* @returns ColumnBuilder 인스턴스
|
|
151
|
+
*/
|
|
152
|
+
bigint() {
|
|
153
|
+
return new ColumnBuilder({ type: "number", dataType: { type: "bigint" } });
|
|
154
|
+
},
|
|
155
|
+
/**
|
|
156
|
+
* FLOAT column (4바이트, 단정밀도 부동소수점)
|
|
157
|
+
*
|
|
158
|
+
* @returns ColumnBuilder 인스턴스
|
|
159
|
+
*/
|
|
160
|
+
float() {
|
|
161
|
+
return new ColumnBuilder({ type: "number", dataType: { type: "float" } });
|
|
162
|
+
},
|
|
163
|
+
/**
|
|
164
|
+
* DOUBLE column (8바이트, 배정밀도 부동소수점)
|
|
165
|
+
*
|
|
166
|
+
* @returns ColumnBuilder 인스턴스
|
|
167
|
+
*/
|
|
168
|
+
double() {
|
|
169
|
+
return new ColumnBuilder({ type: "number", dataType: { type: "double" } });
|
|
170
|
+
},
|
|
171
|
+
/**
|
|
172
|
+
* DECIMAL column (고정 소수점)
|
|
173
|
+
*
|
|
174
|
+
* @param precision - 전체 자릿수
|
|
175
|
+
* @param scale - 소수점 이하 자릿수 (선택)
|
|
176
|
+
* @returns ColumnBuilder 인스턴스
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```typescript
|
|
180
|
+
* price: c.decimal(10, 2) // DECIMAL(10, 2)
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
decimal(precision, scale) {
|
|
184
|
+
return new ColumnBuilder({ type: "number", dataType: { type: "decimal", precision, scale } });
|
|
185
|
+
},
|
|
186
|
+
/**
|
|
187
|
+
* VARCHAR column (가변 길이 문자열)
|
|
188
|
+
*
|
|
189
|
+
* @param length - 최대 길이
|
|
190
|
+
* @returns ColumnBuilder 인스턴스
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* name: c.varchar(100) // VARCHAR(100)
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
varchar(length) {
|
|
198
|
+
return new ColumnBuilder({ type: "string", dataType: { type: "varchar", length } });
|
|
199
|
+
},
|
|
200
|
+
/**
|
|
201
|
+
* CHAR column (고정 길이 문자열)
|
|
202
|
+
*
|
|
203
|
+
* @param length - 고정 길이
|
|
204
|
+
* @returns ColumnBuilder 인스턴스
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```typescript
|
|
208
|
+
* countryCode: c.char(2) // CHAR(2)
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
char(length) {
|
|
212
|
+
return new ColumnBuilder({ type: "string", dataType: { type: "char", length } });
|
|
213
|
+
},
|
|
214
|
+
/**
|
|
215
|
+
* TEXT column (대용량 텍스트)
|
|
216
|
+
*
|
|
217
|
+
* @returns ColumnBuilder 인스턴스
|
|
218
|
+
*/
|
|
219
|
+
text() {
|
|
220
|
+
return new ColumnBuilder({ type: "string", dataType: { type: "text" } });
|
|
221
|
+
},
|
|
222
|
+
/**
|
|
223
|
+
* BINARY column (바이너리 데이터)
|
|
224
|
+
*
|
|
225
|
+
* DBMS별: MySQL=LONGBLOB, MSSQL=VARBINARY(MAX), PostgreSQL=BYTEA
|
|
226
|
+
*
|
|
227
|
+
* @returns ColumnBuilder 인스턴스
|
|
228
|
+
*/
|
|
229
|
+
binary() {
|
|
230
|
+
return new ColumnBuilder({ type: "Bytes", dataType: { type: "binary" } });
|
|
231
|
+
},
|
|
232
|
+
/**
|
|
233
|
+
* BOOLEAN column
|
|
234
|
+
*
|
|
235
|
+
* DBMS별: MySQL=TINYINT(1), MSSQL=BIT, PostgreSQL=BOOLEAN
|
|
236
|
+
*
|
|
237
|
+
* @returns ColumnBuilder 인스턴스
|
|
238
|
+
*/
|
|
239
|
+
boolean() {
|
|
240
|
+
return new ColumnBuilder({ type: "boolean", dataType: { type: "boolean" } });
|
|
241
|
+
},
|
|
242
|
+
/**
|
|
243
|
+
* DATETIME column (날짜 + 시간)
|
|
244
|
+
*
|
|
245
|
+
* @returns ColumnBuilder 인스턴스
|
|
246
|
+
*/
|
|
247
|
+
datetime() {
|
|
248
|
+
return new ColumnBuilder({ type: "DateTime", dataType: { type: "datetime" } });
|
|
249
|
+
},
|
|
250
|
+
/**
|
|
251
|
+
* DATE column (날짜만)
|
|
252
|
+
*
|
|
253
|
+
* @returns ColumnBuilder 인스턴스
|
|
254
|
+
*/
|
|
255
|
+
date() {
|
|
256
|
+
return new ColumnBuilder({ type: "DateOnly", dataType: { type: "date" } });
|
|
257
|
+
},
|
|
258
|
+
/**
|
|
259
|
+
* TIME column (시간만)
|
|
260
|
+
*
|
|
261
|
+
* @returns ColumnBuilder 인스턴스
|
|
262
|
+
*/
|
|
263
|
+
time() {
|
|
264
|
+
return new ColumnBuilder({ type: "Time", dataType: { type: "time" } });
|
|
265
|
+
},
|
|
266
|
+
/**
|
|
267
|
+
* UUID column
|
|
268
|
+
*
|
|
269
|
+
* DBMS별: MySQL=BINARY(16), MSSQL=UNIQUEIDENTIFIER, PostgreSQL=UUID
|
|
270
|
+
*
|
|
271
|
+
* @returns ColumnBuilder 인스턴스
|
|
272
|
+
*/
|
|
273
|
+
uuid() {
|
|
274
|
+
return new ColumnBuilder({ type: "Uuid", dataType: { type: "uuid" } });
|
|
275
|
+
},
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=column-builder.js.map
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/schema/factory/column-builder.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
1
|
+
{"version":3,"file":"column-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\column-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Index
|
|
2
|
+
* Index 정의 builder
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Fluent API로 index column, 유니크 여부, 정렬 순서를 정의
|
|
5
|
+
* TableBuilder.indexes()에서 사용
|
|
6
6
|
*
|
|
7
|
-
* @template TKeys - Index column key
|
|
7
|
+
* @template TKeys - Index column key 배열 타입
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
10
10
|
* ```typescript
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
* createdAt: c.datetime(),
|
|
17
17
|
* }))
|
|
18
18
|
* .indexes((i) => [
|
|
19
|
-
* //
|
|
19
|
+
* // 유니크 index
|
|
20
20
|
* i.index("email").unique(),
|
|
21
21
|
*
|
|
22
|
-
* //
|
|
22
|
+
* // 복합 index + 정렬 순서
|
|
23
23
|
* i.index("name", "createdAt").orderBy("ASC", "DESC"),
|
|
24
24
|
*
|
|
25
|
-
* //
|
|
25
|
+
* // 커스텀 이름
|
|
26
26
|
* i.index("createdAt").name("IX_User_CreatedAt"),
|
|
27
27
|
* ]);
|
|
28
28
|
* ```
|
|
@@ -41,12 +41,12 @@ export declare class IndexBuilder<TKeys extends string[]> {
|
|
|
41
41
|
description?: string;
|
|
42
42
|
};
|
|
43
43
|
/**
|
|
44
|
-
* @param meta - Index
|
|
45
|
-
* @param meta.columns - Index column
|
|
46
|
-
* @param meta.name - Index
|
|
47
|
-
* @param meta.unique -
|
|
48
|
-
* @param meta.orderBy -
|
|
49
|
-
* @param meta.description - Index
|
|
44
|
+
* @param meta - Index 메타데이터
|
|
45
|
+
* @param meta.columns - Index column 배열
|
|
46
|
+
* @param meta.name - Index 이름 (선택)
|
|
47
|
+
* @param meta.unique - 유니크 index 여부
|
|
48
|
+
* @param meta.orderBy - column별 정렬 순서
|
|
49
|
+
* @param meta.description - Index 설명
|
|
50
50
|
*/
|
|
51
51
|
constructor(meta: {
|
|
52
52
|
columns: TKeys;
|
|
@@ -58,10 +58,10 @@ export declare class IndexBuilder<TKeys extends string[]> {
|
|
|
58
58
|
description?: string;
|
|
59
59
|
});
|
|
60
60
|
/**
|
|
61
|
-
* Index
|
|
61
|
+
* Index 이름 설정
|
|
62
62
|
*
|
|
63
|
-
* @param name - Index
|
|
64
|
-
* @returns
|
|
63
|
+
* @param name - Index 이름
|
|
64
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
65
65
|
*
|
|
66
66
|
* @example
|
|
67
67
|
* ```typescript
|
|
@@ -70,9 +70,9 @@ export declare class IndexBuilder<TKeys extends string[]> {
|
|
|
70
70
|
*/
|
|
71
71
|
name(name: string): IndexBuilder<TKeys>;
|
|
72
72
|
/**
|
|
73
|
-
*
|
|
73
|
+
* 유니크 index 설정
|
|
74
74
|
*
|
|
75
|
-
* @returns
|
|
75
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
76
76
|
*
|
|
77
77
|
* @example
|
|
78
78
|
* ```typescript
|
|
@@ -81,19 +81,19 @@ export declare class IndexBuilder<TKeys extends string[]> {
|
|
|
81
81
|
*/
|
|
82
82
|
unique(): IndexBuilder<TKeys>;
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
84
|
+
* 정렬 순서 설정
|
|
85
85
|
*
|
|
86
|
-
*
|
|
86
|
+
* 각 column에 ASC 또는 DESC를 지정
|
|
87
87
|
*
|
|
88
|
-
* @param orderBy -
|
|
89
|
-
* @returns
|
|
88
|
+
* @param orderBy - column별 정렬 순서 (column 수와 일치해야 함)
|
|
89
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
90
90
|
*
|
|
91
91
|
* @example
|
|
92
92
|
* ```typescript
|
|
93
|
-
* //
|
|
93
|
+
* // 단일 column
|
|
94
94
|
* i.index("createdAt").orderBy("DESC")
|
|
95
95
|
*
|
|
96
|
-
* //
|
|
96
|
+
* // 복합 column
|
|
97
97
|
* i.index("status", "createdAt").orderBy("ASC", "DESC")
|
|
98
98
|
* ```
|
|
99
99
|
*/
|
|
@@ -101,20 +101,20 @@ export declare class IndexBuilder<TKeys extends string[]> {
|
|
|
101
101
|
[K in keyof TKeys]: "ASC" | "DESC";
|
|
102
102
|
}): IndexBuilder<TKeys>;
|
|
103
103
|
/**
|
|
104
|
-
* Index
|
|
104
|
+
* Index 설명 설정
|
|
105
105
|
*
|
|
106
|
-
* @param description - Index
|
|
107
|
-
* @returns
|
|
106
|
+
* @param description - Index 설명 (DDL Comment로 사용됨)
|
|
107
|
+
* @returns 새 IndexBuilder 인스턴스
|
|
108
108
|
*/
|
|
109
109
|
description(description: string): IndexBuilder<TKeys>;
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
* Index builder factory
|
|
112
|
+
* Index builder factory 생성
|
|
113
113
|
*
|
|
114
|
-
*
|
|
114
|
+
* TableBuilder.indexes()에서 사용하는 index factory
|
|
115
115
|
*
|
|
116
|
-
* @template TColumnKey - Table column key
|
|
117
|
-
* @returns
|
|
116
|
+
* @template TColumnKey - Table column key 타입
|
|
117
|
+
* @returns Index 생성 메서드를 포함하는 객체
|
|
118
118
|
*
|
|
119
119
|
* @example
|
|
120
120
|
* ```typescript
|
|
@@ -130,20 +130,20 @@ export declare class IndexBuilder<TKeys extends string[]> {
|
|
|
130
130
|
* ]);
|
|
131
131
|
* ```
|
|
132
132
|
*
|
|
133
|
-
* @see {@link IndexBuilder} Index builder
|
|
133
|
+
* @see {@link IndexBuilder} Index builder 클래스
|
|
134
134
|
*/
|
|
135
135
|
export declare function createIndexFactory<TColumnKey extends string>(): {
|
|
136
136
|
/**
|
|
137
|
-
* Index
|
|
137
|
+
* Index 생성
|
|
138
138
|
*
|
|
139
|
-
* @template TKeys - Index column key
|
|
140
|
-
* @param columns - Index column
|
|
141
|
-
* @returns IndexBuilder
|
|
139
|
+
* @template TKeys - Index column key 배열 타입
|
|
140
|
+
* @param columns - Index column 이름들
|
|
141
|
+
* @returns IndexBuilder 인스턴스
|
|
142
142
|
*
|
|
143
143
|
* @example
|
|
144
144
|
* ```typescript
|
|
145
|
-
* i.index("email") //
|
|
146
|
-
* i.index("name", "email") //
|
|
145
|
+
* i.index("email") // 단일 column
|
|
146
|
+
* i.index("name", "email") // 복합 column
|
|
147
147
|
* ```
|
|
148
148
|
*/
|
|
149
149
|
index<TKeys extends TColumnKey[]>(...columns: TKeys): IndexBuilder<TKeys>;
|