@simplysm/orm-common 13.0.100 → 14.0.1

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