@simplysm/orm-common 13.0.100 → 14.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +90 -147
  2. package/dist/create-db-context.d.ts +10 -10
  3. package/dist/create-db-context.js +312 -276
  4. package/dist/create-db-context.js.map +1 -6
  5. package/dist/ddl/column-ddl.d.ts +4 -4
  6. package/dist/ddl/column-ddl.js +41 -35
  7. package/dist/ddl/column-ddl.js.map +1 -6
  8. package/dist/ddl/initialize.d.ts +17 -17
  9. package/dist/ddl/initialize.js +200 -142
  10. package/dist/ddl/initialize.js.map +1 -6
  11. package/dist/ddl/relation-ddl.d.ts +6 -6
  12. package/dist/ddl/relation-ddl.js +55 -48
  13. package/dist/ddl/relation-ddl.js.map +1 -6
  14. package/dist/ddl/schema-ddl.d.ts +4 -4
  15. package/dist/ddl/schema-ddl.js +21 -15
  16. package/dist/ddl/schema-ddl.js.map +1 -6
  17. package/dist/ddl/table-ddl.d.ts +20 -20
  18. package/dist/ddl/table-ddl.js +139 -93
  19. package/dist/ddl/table-ddl.js.map +1 -6
  20. package/dist/define-db-context.js +10 -13
  21. package/dist/define-db-context.js.map +1 -6
  22. package/dist/errors/db-transaction-error.d.ts +15 -15
  23. package/dist/errors/db-transaction-error.d.ts.map +1 -1
  24. package/dist/errors/db-transaction-error.js +53 -19
  25. package/dist/errors/db-transaction-error.js.map +1 -6
  26. package/dist/exec/executable.d.ts +23 -23
  27. package/dist/exec/executable.js +94 -40
  28. package/dist/exec/executable.js.map +1 -6
  29. package/dist/exec/queryable.d.ts +97 -97
  30. package/dist/exec/queryable.js +1310 -1204
  31. package/dist/exec/queryable.js.map +1 -6
  32. package/dist/exec/search-parser.d.ts +31 -31
  33. package/dist/exec/search-parser.d.ts.map +1 -1
  34. package/dist/exec/search-parser.js +158 -59
  35. package/dist/exec/search-parser.js.map +1 -6
  36. package/dist/expr/expr-unit.d.ts +4 -4
  37. package/dist/expr/expr-unit.js +24 -18
  38. package/dist/expr/expr-unit.js.map +1 -6
  39. package/dist/expr/expr.d.ts +108 -108
  40. package/dist/expr/expr.js +1872 -1844
  41. package/dist/expr/expr.js.map +1 -6
  42. package/dist/index.js +23 -1
  43. package/dist/index.js.map +1 -6
  44. package/dist/models/system-migration.js +7 -7
  45. package/dist/models/system-migration.js.map +1 -6
  46. package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
  47. package/dist/query-builder/base/expr-renderer-base.js +27 -21
  48. package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
  49. package/dist/query-builder/base/query-builder-base.d.ts +21 -21
  50. package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
  51. package/dist/query-builder/base/query-builder-base.js +90 -80
  52. package/dist/query-builder/base/query-builder-base.js.map +1 -6
  53. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +5 -5
  54. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  55. package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
  56. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
  57. package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
  58. package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
  59. package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
  60. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
  61. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +5 -5
  62. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  63. package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
  64. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
  65. package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
  66. package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
  67. package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
  68. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
  69. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +5 -5
  70. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  71. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
  72. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
  73. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
  74. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
  75. package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
  76. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
  77. package/dist/query-builder/query-builder.d.ts +1 -1
  78. package/dist/query-builder/query-builder.js +13 -13
  79. package/dist/query-builder/query-builder.js.map +1 -6
  80. package/dist/schema/factory/column-builder.d.ts +84 -84
  81. package/dist/schema/factory/column-builder.js +248 -185
  82. package/dist/schema/factory/column-builder.js.map +1 -6
  83. package/dist/schema/factory/index-builder.d.ts +38 -38
  84. package/dist/schema/factory/index-builder.js +144 -85
  85. package/dist/schema/factory/index-builder.js.map +1 -6
  86. package/dist/schema/factory/relation-builder.d.ts +99 -99
  87. package/dist/schema/factory/relation-builder.d.ts.map +1 -1
  88. package/dist/schema/factory/relation-builder.js +274 -136
  89. package/dist/schema/factory/relation-builder.js.map +1 -6
  90. package/dist/schema/procedure-builder.d.ts +51 -51
  91. package/dist/schema/procedure-builder.d.ts.map +1 -1
  92. package/dist/schema/procedure-builder.js +205 -131
  93. package/dist/schema/procedure-builder.js.map +1 -6
  94. package/dist/schema/table-builder.d.ts +55 -55
  95. package/dist/schema/table-builder.d.ts.map +1 -1
  96. package/dist/schema/table-builder.js +274 -205
  97. package/dist/schema/table-builder.js.map +1 -6
  98. package/dist/schema/view-builder.d.ts +44 -44
  99. package/dist/schema/view-builder.d.ts.map +1 -1
  100. package/dist/schema/view-builder.js +189 -116
  101. package/dist/schema/view-builder.js.map +1 -6
  102. package/dist/types/column.d.ts +21 -21
  103. package/dist/types/column.js +60 -30
  104. package/dist/types/column.js.map +1 -6
  105. package/dist/types/db-context-def.d.ts +9 -9
  106. package/dist/types/db-context-def.js +2 -1
  107. package/dist/types/db-context-def.js.map +1 -6
  108. package/dist/types/db.d.ts +47 -47
  109. package/dist/types/db.js +15 -5
  110. package/dist/types/db.js.map +1 -6
  111. package/dist/types/expr.d.ts +81 -81
  112. package/dist/types/expr.d.ts.map +1 -1
  113. package/dist/types/expr.js +3 -1
  114. package/dist/types/expr.js.map +1 -6
  115. package/dist/types/query-def.d.ts +46 -46
  116. package/dist/types/query-def.d.ts.map +1 -1
  117. package/dist/types/query-def.js +31 -24
  118. package/dist/types/query-def.js.map +1 -6
  119. package/dist/utils/result-parser.d.ts +11 -11
  120. package/dist/utils/result-parser.js +362 -221
  121. package/dist/utils/result-parser.js.map +1 -6
  122. package/docs/core.md +117 -145
  123. package/docs/expression.md +186 -203
  124. package/docs/query-builder.md +75 -42
  125. package/docs/queryable.md +189 -151
  126. package/docs/schema-builders.md +172 -283
  127. package/docs/types.md +229 -173
  128. package/package.json +7 -5
  129. package/src/create-db-context.ts +31 -31
  130. package/src/ddl/column-ddl.ts +4 -4
  131. package/src/ddl/initialize.ts +38 -38
  132. package/src/ddl/relation-ddl.ts +6 -6
  133. package/src/ddl/schema-ddl.ts +4 -4
  134. package/src/ddl/table-ddl.ts +24 -24
  135. package/src/errors/db-transaction-error.ts +13 -13
  136. package/src/exec/executable.ts +25 -25
  137. package/src/exec/queryable.ts +152 -152
  138. package/src/exec/search-parser.ts +50 -50
  139. package/src/expr/expr-unit.ts +4 -4
  140. package/src/expr/expr.ts +118 -118
  141. package/src/index.ts +8 -8
  142. package/src/models/system-migration.ts +1 -1
  143. package/src/query-builder/base/expr-renderer-base.ts +21 -21
  144. package/src/query-builder/base/query-builder-base.ts +33 -33
  145. package/src/query-builder/mssql/mssql-expr-renderer.ts +28 -28
  146. package/src/query-builder/mssql/mssql-query-builder.ts +37 -37
  147. package/src/query-builder/mysql/mysql-expr-renderer.ts +29 -29
  148. package/src/query-builder/mysql/mysql-query-builder.ts +70 -70
  149. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +22 -22
  150. package/src/query-builder/postgresql/postgresql-query-builder.ts +54 -54
  151. package/src/query-builder/query-builder.ts +1 -1
  152. package/src/schema/factory/column-builder.ts +86 -86
  153. package/src/schema/factory/index-builder.ts +38 -38
  154. package/src/schema/factory/relation-builder.ts +102 -102
  155. package/src/schema/procedure-builder.ts +52 -52
  156. package/src/schema/table-builder.ts +56 -56
  157. package/src/schema/view-builder.ts +47 -47
  158. package/src/types/column.ts +24 -24
  159. package/src/types/db-context-def.ts +15 -15
  160. package/src/types/db.ts +50 -50
  161. package/src/types/expr.ts +103 -103
  162. package/src/types/query-def.ts +50 -50
  163. package/src/utils/result-parser.ts +88 -88
  164. package/docs/utilities.md +0 -27
  165. package/tests/db-context/create-db-context.spec.ts +0 -193
  166. package/tests/db-context/define-db-context.spec.ts +0 -17
  167. package/tests/ddl/basic.expected.ts +0 -341
  168. package/tests/ddl/basic.spec.ts +0 -557
  169. package/tests/ddl/column-builder.expected.ts +0 -310
  170. package/tests/ddl/column-builder.spec.ts +0 -525
  171. package/tests/ddl/index-builder.expected.ts +0 -38
  172. package/tests/ddl/index-builder.spec.ts +0 -148
  173. package/tests/ddl/procedure-builder.expected.ts +0 -52
  174. package/tests/ddl/procedure-builder.spec.ts +0 -128
  175. package/tests/ddl/relation-builder.expected.ts +0 -36
  176. package/tests/ddl/relation-builder.spec.ts +0 -171
  177. package/tests/ddl/table-builder.expected.ts +0 -113
  178. package/tests/ddl/table-builder.spec.ts +0 -399
  179. package/tests/ddl/view-builder.expected.ts +0 -38
  180. package/tests/ddl/view-builder.spec.ts +0 -116
  181. package/tests/dml/delete.expected.ts +0 -96
  182. package/tests/dml/delete.spec.ts +0 -127
  183. package/tests/dml/insert.expected.ts +0 -192
  184. package/tests/dml/insert.spec.ts +0 -210
  185. package/tests/dml/update.expected.ts +0 -176
  186. package/tests/dml/update.spec.ts +0 -222
  187. package/tests/dml/upsert.expected.ts +0 -215
  188. package/tests/dml/upsert.spec.ts +0 -190
  189. package/tests/errors/queryable-errors.spec.ts +0 -126
  190. package/tests/escape.spec.ts +0 -59
  191. package/tests/examples/pivot.expected.ts +0 -211
  192. package/tests/examples/pivot.spec.ts +0 -200
  193. package/tests/examples/sampling.expected.ts +0 -69
  194. package/tests/examples/sampling.spec.ts +0 -42
  195. package/tests/examples/unpivot.expected.ts +0 -120
  196. package/tests/examples/unpivot.spec.ts +0 -161
  197. package/tests/exec/search-parser.spec.ts +0 -267
  198. package/tests/executable/basic.expected.ts +0 -18
  199. package/tests/executable/basic.spec.ts +0 -54
  200. package/tests/expr/comparison.expected.ts +0 -282
  201. package/tests/expr/comparison.spec.ts +0 -334
  202. package/tests/expr/conditional.expected.ts +0 -134
  203. package/tests/expr/conditional.spec.ts +0 -249
  204. package/tests/expr/date.expected.ts +0 -332
  205. package/tests/expr/date.spec.ts +0 -459
  206. package/tests/expr/math.expected.ts +0 -62
  207. package/tests/expr/math.spec.ts +0 -59
  208. package/tests/expr/string.expected.ts +0 -218
  209. package/tests/expr/string.spec.ts +0 -300
  210. package/tests/expr/utility.expected.ts +0 -147
  211. package/tests/expr/utility.spec.ts +0 -155
  212. package/tests/select/basic.expected.ts +0 -322
  213. package/tests/select/basic.spec.ts +0 -433
  214. package/tests/select/filter.expected.ts +0 -357
  215. package/tests/select/filter.spec.ts +0 -954
  216. package/tests/select/group.expected.ts +0 -169
  217. package/tests/select/group.spec.ts +0 -159
  218. package/tests/select/join.expected.ts +0 -582
  219. package/tests/select/join.spec.ts +0 -692
  220. package/tests/select/order.expected.ts +0 -150
  221. package/tests/select/order.spec.ts +0 -140
  222. package/tests/select/recursive-cte.expected.ts +0 -244
  223. package/tests/select/recursive-cte.spec.ts +0 -514
  224. package/tests/select/result-meta.spec.ts +0 -270
  225. package/tests/select/subquery.expected.ts +0 -363
  226. package/tests/select/subquery.spec.ts +0 -441
  227. package/tests/select/view.expected.ts +0 -155
  228. package/tests/select/view.spec.ts +0 -235
  229. package/tests/select/window.expected.ts +0 -345
  230. package/tests/select/window.spec.ts +0 -433
  231. package/tests/setup/MockExecutor.ts +0 -18
  232. package/tests/setup/TestDbContext.ts +0 -59
  233. package/tests/setup/models/Company.ts +0 -13
  234. package/tests/setup/models/Employee.ts +0 -10
  235. package/tests/setup/models/MonthlySales.ts +0 -11
  236. package/tests/setup/models/Post.ts +0 -16
  237. package/tests/setup/models/Sales.ts +0 -10
  238. package/tests/setup/models/User.ts +0 -19
  239. package/tests/setup/procedure/GetAllUsers.ts +0 -9
  240. package/tests/setup/procedure/GetUserById.ts +0 -12
  241. package/tests/setup/test-utils.ts +0 -72
  242. package/tests/setup/views/ActiveUsers.ts +0 -8
  243. package/tests/setup/views/UserSummary.ts +0 -11
  244. package/tests/types/nullable-queryable-record.spec.ts +0 -97
  245. package/tests/utils/result-parser-perf.spec.ts +0 -143
  246. package/tests/utils/result-parser.spec.ts +0 -667
@@ -7,13 +7,13 @@ import type { ViewBuilder } from "../view-builder";
7
7
  // ============================================
8
8
 
9
9
  /**
10
- * Foreign Key relation builder (N:1)
10
+ * Foreign Key 관계 builder (N:1)
11
11
  *
12
- * Define FK relation from current Table to target Table
13
- * Creates actual FK constraint in the DB
12
+ * 현재 Table에서 대상 Table로의 FK 관계를 정의
13
+ * DB에 실제 FK 제약조건을 생성
14
14
  *
15
- * @template TOwner - Owner Table builder type
16
- * @template TTargetFn - Target Table builder factory type
15
+ * @template TOwner - 소유 Table builder 타입
16
+ * @template TTargetFn - 대상 Table builder factory 타입
17
17
  *
18
18
  * @example
19
19
  * ```typescript
@@ -29,19 +29,19 @@ import type { ViewBuilder } from "../view-builder";
29
29
  * }));
30
30
  * ```
31
31
  *
32
- * @see {@link ForeignKeyTargetBuilder} Reverse-reference builder
33
- * @see {@link RelationKeyBuilder} Relation without DB FK
32
+ * @see {@link ForeignKeyTargetBuilder} 역참조 builder
33
+ * @see {@link RelationKeyBuilder} DB FK 없는 관계
34
34
  */
35
35
  export class ForeignKeyBuilder<
36
36
  TOwner extends TableBuilder<any, any>,
37
37
  TTargetFn extends () => TableBuilder<any, any>,
38
38
  > {
39
39
  /**
40
- * @param meta - FK Metadata
41
- * @param meta.ownerFn - Owner Table factory
42
- * @param meta.columns - FK column name array
43
- * @param meta.targetFn - Target Table factory
44
- * @param meta.description - Relation description
40
+ * @param meta - FK 메타데이터
41
+ * @param meta.ownerFn - 소유 Table factory
42
+ * @param meta.columns - FK column 이름 배열
43
+ * @param meta.targetFn - 대상 Table factory
44
+ * @param meta.description - 관계 설명
45
45
  */
46
46
  constructor(
47
47
  readonly meta: {
@@ -53,10 +53,10 @@ export class ForeignKeyBuilder<
53
53
  ) {}
54
54
 
55
55
  /**
56
- * Set relation description
56
+ * 관계 설명 설정
57
57
  *
58
- * @param desc - Relation description
59
- * @returns New ForeignKeyBuilder instance
58
+ * @param desc - 관계 설명
59
+ * @returns ForeignKeyBuilder 인스턴스
60
60
  */
61
61
  description(desc: string): ForeignKeyBuilder<TOwner, TTargetFn> {
62
62
  return new ForeignKeyBuilder({ ...this.meta, description: desc });
@@ -64,13 +64,13 @@ export class ForeignKeyBuilder<
64
64
  }
65
65
 
66
66
  /**
67
- * Foreign Key reverse-reference builder (1:N)
67
+ * Foreign Key 역참조 builder (1:N)
68
68
  *
69
- * Define reverse-reference for FK from another Table referencing current Table
70
- * Loaded as array on include() (single object when single() is called)
69
+ * 다른 Table이 현재 Table을 참조하는 FK의 역참조를 정의
70
+ * include() 배열로 로드됨 (single() 호출 시 단일 객체)
71
71
  *
72
- * @template TTargetTableFn - Referencing Table builder factory type
73
- * @template TIsSingle - Whether it is a single object
72
+ * @template TTargetTableFn - 참조하는 Table builder factory 타입
73
+ * @template TIsSingle - 단일 객체 여부
74
74
  *
75
75
  * @example
76
76
  * ```typescript
@@ -96,11 +96,11 @@ export class ForeignKeyTargetBuilder<
96
96
  TIsSingle extends boolean,
97
97
  > {
98
98
  /**
99
- * @param meta - FK reverse-reference Metadata
100
- * @param meta.targetTableFn - Referencing Table factory
101
- * @param meta.relationName - FK relation name of the referencing Table
102
- * @param meta.description - Relation description
103
- * @param meta.isSingle - Whether it is a single object
99
+ * @param meta - FK 역참조 메타데이터
100
+ * @param meta.targetTableFn - 참조하는 Table factory
101
+ * @param meta.relationName - 참조하는 Table의 FK 관계 이름
102
+ * @param meta.description - 관계 설명
103
+ * @param meta.isSingle - 단일 객체 여부
104
104
  */
105
105
  constructor(
106
106
  readonly meta: {
@@ -112,21 +112,21 @@ export class ForeignKeyTargetBuilder<
112
112
  ) {}
113
113
 
114
114
  /**
115
- * Set relation description
115
+ * 관계 설명 설정
116
116
  *
117
- * @param desc - Relation description
118
- * @returns New ForeignKeyTargetBuilder instance
117
+ * @param desc - 관계 설명
118
+ * @returns ForeignKeyTargetBuilder 인스턴스
119
119
  */
120
120
  description(desc: string): ForeignKeyTargetBuilder<TTargetTableFn, TIsSingle> {
121
121
  return new ForeignKeyTargetBuilder({ ...this.meta, description: desc });
122
122
  }
123
123
 
124
124
  /**
125
- * Set as single object relation (1:1)
125
+ * 단일 객체 관계로 설정 (1:1)
126
126
  *
127
- * Default is array (1:N), single object when single() is called
127
+ * 기본값은 배열(1:N), single() 호출 단일 객체
128
128
  *
129
- * @returns New ForeignKeyTargetBuilder instance (isSingle=true)
129
+ * @returns ForeignKeyTargetBuilder 인스턴스 (isSingle=true)
130
130
  *
131
131
  * @example
132
132
  * ```typescript
@@ -139,29 +139,29 @@ export class ForeignKeyTargetBuilder<
139
139
  }
140
140
 
141
141
  // ============================================
142
- // RelationKeyBuilder (same as FK but does not register FK in DB)
142
+ // RelationKeyBuilder (FK 동일하지만 DB에 FK 등록하지 않음)
143
143
  // ============================================
144
144
 
145
145
  /**
146
- * Logical relation builder (N:1) - No DB FK creation
146
+ * 논리적 관계 builder (N:1) - DB FK 미생성
147
147
  *
148
- * Same as ForeignKeyBuilder but does not create FK constraints in the DB
149
- * Can also be used in Views
148
+ * ForeignKeyBuilder 동일하지만 DB에 FK 제약조건을 생성하지 않음
149
+ * View에서도 사용 가능
150
150
  *
151
- * @template TOwner - Owner Table/View builder type
152
- * @template TTargetFn - Target Table/View builder factory type
151
+ * @template TOwner - 소유 Table/View builder 타입
152
+ * @template TTargetFn - 대상 Table/View builder factory 타입
153
153
  *
154
154
  * @example
155
155
  * ```typescript
156
- * // Relation definition from View to Table
156
+ * // View에서 Table로의 관계 정의
157
157
  * const UserSummary = View("UserSummary")
158
158
  * .query((db: MyDb) => db.user().select(...))
159
159
  * .relations((r) => ({
160
- * // View → Table (no FK creation)
160
+ * // View → Table (FK 미생성)
161
161
  * company: r.relationKey(["companyId"], () => Company),
162
162
  * }));
163
163
  *
164
- * // Relation definition from Table without FK
164
+ * // FK 없는 Table 관계 정의
165
165
  * const Report = Table("Report")
166
166
  * .columns((c) => ({ userId: c.bigint() }))
167
167
  * .relations((r) => ({
@@ -169,18 +169,18 @@ export class ForeignKeyTargetBuilder<
169
169
  * }));
170
170
  * ```
171
171
  *
172
- * @see {@link ForeignKeyBuilder} DB FK creation version
172
+ * @see {@link ForeignKeyBuilder} DB FK 생성 버전
173
173
  */
174
174
  export class RelationKeyBuilder<
175
175
  TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>,
176
176
  TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>,
177
177
  > {
178
178
  /**
179
- * @param meta - Relation Metadata
180
- * @param meta.ownerFn - Owner Table/View factory
181
- * @param meta.columns - Relation column name array
182
- * @param meta.targetFn - Target Table/View factory
183
- * @param meta.description - Relation description
179
+ * @param meta - 관계 메타데이터
180
+ * @param meta.ownerFn - 소유 Table/View factory
181
+ * @param meta.columns - 관계 column 이름 배열
182
+ * @param meta.targetFn - 대상 Table/View factory
183
+ * @param meta.description - 관계 설명
184
184
  */
185
185
  constructor(
186
186
  readonly meta: {
@@ -192,10 +192,10 @@ export class RelationKeyBuilder<
192
192
  ) {}
193
193
 
194
194
  /**
195
- * Set relation description
195
+ * 관계 설명 설정
196
196
  *
197
- * @param desc - Relation description
198
- * @returns New RelationKeyBuilder instance
197
+ * @param desc - 관계 설명
198
+ * @returns RelationKeyBuilder 인스턴스
199
199
  */
200
200
  description(desc: string): RelationKeyBuilder<TOwner, TTargetFn> {
201
201
  return new RelationKeyBuilder({ ...this.meta, description: desc });
@@ -203,36 +203,36 @@ export class RelationKeyBuilder<
203
203
  }
204
204
 
205
205
  /**
206
- * Logical relation reverse-reference builder (1:N) - No DB FK creation
206
+ * 논리적 관계 역참조 builder (1:N) - DB FK 미생성
207
207
  *
208
- * Same as ForeignKeyTargetBuilder but does not create FK constraints in the DB
209
- * Can also be used in Views
208
+ * ForeignKeyTargetBuilder 동일하지만 DB에 FK 제약조건을 생성하지 않음
209
+ * View에서도 사용 가능
210
210
  *
211
- * @template TTargetTableFn - Referencing Table/View builder factory type
212
- * @template TIsSingle - Whether it is a single object
211
+ * @template TTargetTableFn - 참조하는 Table/View builder factory 타입
212
+ * @template TIsSingle - 단일 객체 여부
213
213
  *
214
214
  * @example
215
215
  * ```typescript
216
216
  * const Company = Table("Company")
217
217
  * .columns((c) => ({ id: c.bigint() }))
218
218
  * .relations((r) => ({
219
- * // Reverse-reference (no FK creation)
219
+ * // 역참조 (FK 미생성)
220
220
  * employees: r.relationKeyTarget(() => UserSummary, "company"),
221
221
  * }));
222
222
  * ```
223
223
  *
224
- * @see {@link ForeignKeyTargetBuilder} DB FK creation version
224
+ * @see {@link ForeignKeyTargetBuilder} DB FK 생성 버전
225
225
  */
226
226
  export class RelationKeyTargetBuilder<
227
227
  TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>,
228
228
  TIsSingle extends boolean,
229
229
  > {
230
230
  /**
231
- * @param meta - Relation reverse-reference Metadata
232
- * @param meta.targetTableFn - Referencing Table/View factory
233
- * @param meta.relationName - Relation name of the referencing Table/View
234
- * @param meta.description - Relation description
235
- * @param meta.isSingle - Whether it is a single object
231
+ * @param meta - 관계 역참조 메타데이터
232
+ * @param meta.targetTableFn - 참조하는 Table/View factory
233
+ * @param meta.relationName - 참조하는 Table/View의 관계 이름
234
+ * @param meta.description - 관계 설명
235
+ * @param meta.isSingle - 단일 객체 여부
236
236
  */
237
237
  constructor(
238
238
  readonly meta: {
@@ -244,21 +244,21 @@ export class RelationKeyTargetBuilder<
244
244
  ) {}
245
245
 
246
246
  /**
247
- * Set relation description
247
+ * 관계 설명 설정
248
248
  *
249
- * @param desc - Relation description
250
- * @returns New RelationKeyTargetBuilder instance
249
+ * @param desc - 관계 설명
250
+ * @returns RelationKeyTargetBuilder 인스턴스
251
251
  */
252
252
  description(desc: string): RelationKeyTargetBuilder<TTargetTableFn, TIsSingle> {
253
253
  return new RelationKeyTargetBuilder({ ...this.meta, description: desc });
254
254
  }
255
255
 
256
256
  /**
257
- * Set as single object relation (1:1)
257
+ * 단일 객체 관계로 설정 (1:1)
258
258
  *
259
- * Default is array (1:N), single object when single() is called
259
+ * 기본값은 배열(1:N), single() 호출 단일 객체
260
260
  *
261
- * @returns New RelationKeyTargetBuilder instance (isSingle=true)
261
+ * @returns RelationKeyTargetBuilder 인스턴스 (isSingle=true)
262
262
  */
263
263
  single(): RelationKeyTargetBuilder<TTargetTableFn, true> {
264
264
  return new RelationKeyTargetBuilder({ ...this.meta, isSingle: true });
@@ -266,18 +266,18 @@ export class RelationKeyTargetBuilder<
266
266
  }
267
267
 
268
268
  /**
269
- * FK relation factory type (table only)
269
+ * FK 관계 factory 타입 (table 전용)
270
270
  *
271
- * @template TOwner - Owner Table builder type
272
- * @template TColumnKey - Column key type
271
+ * @template TOwner - 소유 Table builder 타입
272
+ * @template TColumnKey - Column key 타입
273
273
  */
274
274
  type RelationFkFactory<TOwner extends TableBuilder<any, any>, TColumnKey extends string> = {
275
- /** N:1 FK relationship definition (DB FK Create) */
275
+ /** N:1 FK 관계 정의 (DB FK 생성) */
276
276
  foreignKey<TTargetFn extends () => TableBuilder<any, any>>(
277
277
  columns: TColumnKey[],
278
278
  targetFn: TTargetFn,
279
279
  ): ForeignKeyBuilder<TOwner, TTargetFn>;
280
- /** 1:N FK reverse-reference definition */
280
+ /** 1:N FK 역참조 정의 */
281
281
  foreignKeyTarget<TTargetTableFn extends () => TableBuilder<any, any>>(
282
282
  targetTableFn: TTargetTableFn,
283
283
  relationName: string,
@@ -285,21 +285,21 @@ type RelationFkFactory<TOwner extends TableBuilder<any, any>, TColumnKey extends
285
285
  };
286
286
 
287
287
  /**
288
- * Logical relation factory type (shared for table/View)
288
+ * 논리적 관계 factory 타입 (table/View 공용)
289
289
  *
290
- * @template TOwner - Owner Table/View builder type
291
- * @template TColumnKey - Column key type
290
+ * @template TOwner - 소유 Table/View builder 타입
291
+ * @template TColumnKey - Column key 타입
292
292
  */
293
293
  type RelationRkFactory<
294
294
  TOwner extends TableBuilder<any, any> | ViewBuilder<any, any, any>,
295
295
  TColumnKey extends string,
296
296
  > = {
297
- /** N:1 logical relation definition (no DB FK creation) */
297
+ /** N:1 논리적 관계 정의 (DB FK 미생성) */
298
298
  relationKey<TTargetFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>>(
299
299
  columns: TColumnKey[],
300
300
  targetFn: TTargetFn,
301
301
  ): RelationKeyBuilder<TOwner, TTargetFn>;
302
- /** 1:N logical reverse-reference definition */
302
+ /** 1:N 논리적 역참조 정의 */
303
303
  relationKeyTarget<
304
304
  TTargetTableFn extends () => TableBuilder<any, any> | ViewBuilder<any, any, any>,
305
305
  >(
@@ -309,33 +309,33 @@ type RelationRkFactory<
309
309
  };
310
310
 
311
311
  /**
312
- * Relation builder factory creation
312
+ * 관계 builder factory 생성
313
313
  *
314
- * Used in TableBuilder.relations() and ViewBuilder.relations()
315
- * Table can use both FK + RelationKey, View can only use RelationKey
314
+ * TableBuilder.relations() ViewBuilder.relations()에서 사용
315
+ * Table FK + RelationKey 모두 사용 가능, View는 RelationKey만 사용 가능
316
316
  *
317
- * @template TOwner - Owner Table/View builder type
318
- * @template TColumnKey - Column key type
319
- * @param ownerFn - Owner Table/View factory function
320
- * @returns Relation builder factory
317
+ * @template TOwner - 소유 Table/View builder 타입
318
+ * @template TColumnKey - Column key 타입
319
+ * @param ownerFn - 소유 Table/View factory 함수
320
+ * @returns 관계 builder factory
321
321
  *
322
322
  * @example
323
323
  * ```typescript
324
- * // Table - both FK and RelationKey available
324
+ * // Table - FK RelationKey 모두 사용 가능
325
325
  * const Post = Table("Post")
326
326
  * .columns((c) => ({
327
327
  * id: c.bigint(),
328
328
  * authorId: c.bigint(),
329
329
  * }))
330
330
  * .relations((r) => ({
331
- * author: r.foreignKey(["authorId"], () => User), // FK Generate
331
+ * author: r.foreignKey(["authorId"], () => User), // FK 생성
332
332
  * }));
333
333
  *
334
- * // View - only RelationKey available
334
+ * // View - RelationKey 사용 가능
335
335
  * const UserSummary = View("UserSummary")
336
336
  * .query(...)
337
337
  * .relations((r) => ({
338
- * posts: r.relationKeyTarget(() => Post, "author"), // No FK creation
338
+ * posts: r.relationKeyTarget(() => Post, "author"), // FK 미생성
339
339
  * }));
340
340
  * ```
341
341
  */
@@ -374,13 +374,13 @@ export function createRelationFactory<
374
374
  }
375
375
 
376
376
  // ============================================
377
- // builder record
377
+ // builder 레코드
378
378
  // ============================================
379
379
 
380
380
  /**
381
- * relationship builder record type
381
+ * 관계 builder 레코드 타입
382
382
  *
383
- * Return type of TableBuilder.relations() and ViewBuilder.relations()
383
+ * TableBuilder.relations() ViewBuilder.relations()의 반환 타입
384
384
  */
385
385
  export type RelationBuilderRecord = Record<
386
386
  string,
@@ -391,15 +391,15 @@ export type RelationBuilderRecord = Record<
391
391
  >;
392
392
 
393
393
  // ============================================
394
- // Infer - relationship Type inference
394
+ // Infer - 관계 타입 추론
395
395
  // ============================================
396
396
 
397
397
  /**
398
- * Extract target type from FK/RelationKey (single object)
398
+ * FK/RelationKey에서 대상 타입 추출 (단일 객체)
399
399
  *
400
- * Target type of N:1 relation
400
+ * N:1 관계의 대상 타입
401
401
  *
402
- * @template T - FK or RelationKey builder type
402
+ * @template T - FK 또는 RelationKey builder 타입
403
403
  */
404
404
  export type ExtractRelationTarget<TRelation> = TRelation extends
405
405
  | ForeignKeyBuilder<any, infer TTargetFn>
@@ -412,12 +412,12 @@ export type ExtractRelationTarget<TRelation> = TRelation extends
412
412
  : never;
413
413
 
414
414
  /**
415
- * Extract target type from FKTarget/RelationKeyTarget (array or single object)
415
+ * FKTarget/RelationKeyTarget에서 대상 타입 추출 (배열 또는 단일 객체)
416
416
  *
417
- * Target type of 1:N relation (single object when single() is called)
418
- * TTargetTableFn: () => Post form for lazy evaluation to prevent circular references
417
+ * 1:N 관계의 대상 타입 (single() 호출 시 단일 객체)
418
+ * TTargetTableFn: 순환 참조 방지를 위한 지연 평가용 () => Post 형태
419
419
  *
420
- * @template T - FKTarget or RelationKeyTarget builder type
420
+ * @template T - FKTarget 또는 RelationKeyTarget builder 타입
421
421
  */
422
422
  export type ExtractRelationTargetResult<TRelation> = TRelation extends
423
423
  | ForeignKeyTargetBuilder<infer TTargetTableFn, infer TIsSingle>
@@ -434,11 +434,11 @@ export type ExtractRelationTargetResult<TRelation> = TRelation extends
434
434
  : never;
435
435
 
436
436
  /**
437
- * Deep relation Type inference from relation definitions
437
+ * 관계 정의에서 심층 관계 타입 추론
438
438
  *
439
- * Makes all relations optional so accessing without include() results in undefined
439
+ * include() 없이 접근 undefined가 되도록 모든 관계를 optional로 설정
440
440
  *
441
- * @template TRelations - Relation builder record type
441
+ * @template TRelations - 관계 builder 레코드 타입
442
442
  *
443
443
  * @example
444
444
  * ```typescript
@@ -5,13 +5,13 @@ import { type ColumnBuilderRecord, createColumnFactory } from "./factory/column-
5
5
  // ============================================
6
6
 
7
7
  /**
8
- * Stored Procedure definition builder
8
+ * Stored Procedure 정의 builder
9
9
  *
10
- * Define Procedure parameters, return type, and body via Fluent API
11
- * Use with DbContext's executable() for type-safe Procedure invocation
10
+ * Fluent API로 Procedure 파라미터, 반환 타입, 본문을 정의
11
+ * DbContext executable() 함께 사용하여 타입 안전한 Procedure 호출
12
12
  *
13
- * @template TParams - Parameter Column definition type
14
- * @template TReturns - Return Column definition type
13
+ * @template TParams - 파라미터 Column 정의 타입
14
+ * @template TReturns - 반환 Column 정의 타입
15
15
  *
16
16
  * @example
17
17
  * ```typescript
@@ -37,27 +37,27 @@ import { type ColumnBuilderRecord, createColumnFactory } from "./factory/column-
37
37
  * const users = await db.getUserById({ userId: 1n }).execute();
38
38
  * ```
39
39
  *
40
- * @see {@link Procedure} factory function
41
- * @see {@link executable} Executable Generate
40
+ * @see {@link Procedure} factory 함수
41
+ * @see {@link executable} Executable 생성
42
42
  */
43
43
  export class ProcedureBuilder<
44
44
  TParams extends ColumnBuilderRecord,
45
45
  TReturns extends ColumnBuilderRecord,
46
46
  > {
47
- /** Parameter definition (type for inference) */
47
+ /** 파라미터 정의 (타입 추론용) */
48
48
  readonly $params!: TParams;
49
- /** return type definition (type for inference) */
49
+ /** 반환 타입 정의 (타입 추론용) */
50
50
  readonly $returns!: TReturns;
51
51
 
52
52
  /**
53
- * @param meta - Procedure Metadata
54
- * @param meta.name - Procedure name
55
- * @param meta.description - Procedure description (comment)
56
- * @param meta.database - Database name
57
- * @param meta.schema - Schema name (MSSQL/PostgreSQL)
58
- * @param meta.params - Parameter definition
59
- * @param meta.returns - Return type definition
60
- * @param meta.query - Procedure body SQL
53
+ * @param meta - Procedure 메타데이터
54
+ * @param meta.name - Procedure 이름
55
+ * @param meta.description - Procedure 설명 (comment)
56
+ * @param meta.database - Database 이름
57
+ * @param meta.schema - Schema 이름 (MSSQL/PostgreSQL)
58
+ * @param meta.params - 파라미터 정의
59
+ * @param meta.returns - 반환 타입 정의
60
+ * @param meta.query - Procedure 본문 SQL
61
61
  */
62
62
  constructor(
63
63
  readonly meta: {
@@ -72,20 +72,20 @@ export class ProcedureBuilder<
72
72
  ) {}
73
73
 
74
74
  /**
75
- * Procedure set description
75
+ * Procedure 설명 설정
76
76
  *
77
- * @param desc - Procedure description (used as DDL Comment)
78
- * @returns new ProcedureBuilder instance
77
+ * @param desc - Procedure 설명 (DDL Comment로 사용됨)
78
+ * @returns ProcedureBuilder 인스턴스
79
79
  */
80
80
  description(desc: string): ProcedureBuilder<TParams, TReturns> {
81
81
  return new ProcedureBuilder({ ...this.meta, description: desc });
82
82
  }
83
83
 
84
84
  /**
85
- * Database set name
85
+ * Database 이름 설정
86
86
  *
87
- * @param db - Database name
88
- * @returns new ProcedureBuilder instance
87
+ * @param db - Database 이름
88
+ * @returns ProcedureBuilder 인스턴스
89
89
  *
90
90
  * @example
91
91
  * ```typescript
@@ -97,26 +97,26 @@ export class ProcedureBuilder<
97
97
  }
98
98
 
99
99
  /**
100
- * schema set name
100
+ * Schema 이름 설정
101
101
  *
102
- * MSSQL, PostgreSQLused in
102
+ * MSSQL, PostgreSQL에서 사용
103
103
  *
104
- * @param schema - Schema name (MSSQL: dbo, PostgreSQL: public)
105
- * @returns new ProcedureBuilder instance
104
+ * @param schema - Schema 이름 (MSSQL: dbo, PostgreSQL: public)
105
+ * @returns ProcedureBuilder 인스턴스
106
106
  */
107
107
  schema(schema: string): ProcedureBuilder<TParams, TReturns> {
108
108
  return new ProcedureBuilder({ ...this.meta, schema });
109
109
  }
110
110
 
111
111
  /**
112
- * Parameter definition
112
+ * 파라미터 정의
113
113
  *
114
- * Define Procedure input parameters
115
- * Note DBMS-specific parameter syntax differences (MSSQL: @param, MySQL/PostgreSQL: param)
114
+ * Procedure 입력 파라미터를 정의
115
+ * DBMS 파라미터 구문 차이에 주의 (MSSQL: @param, MySQL/PostgreSQL: param)
116
116
  *
117
- * @template T - New parameter definition type
118
- * @param fn - Function that receives a Column factory and returns parameter definitions
119
- * @returns new ProcedureBuilder instance
117
+ * @template T - 파라미터 정의 타입
118
+ * @param fn - Column factory 받아 파라미터 정의를 반환하는 함수
119
+ * @returns ProcedureBuilder 인스턴스
120
120
  *
121
121
  * @example
122
122
  * ```typescript
@@ -134,13 +134,13 @@ export class ProcedureBuilder<
134
134
  }
135
135
 
136
136
  /**
137
- * Return type definition
137
+ * 반환 타입 정의
138
138
  *
139
- * Define Procedure return result columns
139
+ * Procedure 반환 결과 column을 정의
140
140
  *
141
- * @template T - New return type definition
142
- * @param fn - Function that receives a Column factory and returns Column definitions
143
- * @returns new ProcedureBuilder instance
141
+ * @template T - 반환 타입 정의
142
+ * @param fn - Column factory 받아 column 정의를 반환하는 함수
143
+ * @returns ProcedureBuilder 인스턴스
144
144
  *
145
145
  * @example
146
146
  * ```typescript
@@ -160,15 +160,15 @@ export class ProcedureBuilder<
160
160
  }
161
161
 
162
162
  /**
163
- * Set Procedure body SQL
163
+ * Procedure 본문 SQL 설정
164
164
  *
165
- * Note DBMS-specific SQL syntax differences:
166
- * - MySQL: parameter name as-is (userId)
167
- * - MSSQL: @ prefix (@userId)
168
- * - PostgreSQL: RETURN QUERY required
165
+ * DBMS SQL 구문 차이에 주의:
166
+ * - MySQL: 파라미터 이름 그대로 (userId)
167
+ * - MSSQL: @ 접두사 (@userId)
168
+ * - PostgreSQL: RETURN QUERY 필요
169
169
  *
170
- * @param sql - Procedure body SQL
171
- * @returns new ProcedureBuilder instance
170
+ * @param sql - Procedure 본문 SQL
171
+ * @returns ProcedureBuilder 인스턴스
172
172
  *
173
173
  * @example
174
174
  * ```typescript
@@ -189,16 +189,16 @@ export class ProcedureBuilder<
189
189
  }
190
190
 
191
191
  // ============================================
192
- // Procedure function
192
+ // Procedure 함수
193
193
  // ============================================
194
194
 
195
195
  /**
196
- * Procedure builder factory function
196
+ * Procedure builder factory 함수
197
197
  *
198
- * Creates a ProcedureBuilder for defining stored Procedure schema via Fluent API
198
+ * Fluent API로 stored Procedure schema 정의하기 위한 ProcedureBuilder를 생성
199
199
  *
200
- * @param name - Procedure name
201
- * @returns ProcedureBuilder instance
200
+ * @param name - Procedure 이름
201
+ * @returns ProcedureBuilder 인스턴스
202
202
  *
203
203
  * @example
204
204
  * ```typescript
@@ -215,7 +215,7 @@ export class ProcedureBuilder<
215
215
  * }))
216
216
  * .body("SELECT id, name, email FROM User WHERE id = userId");
217
217
  *
218
- * // Procedure without parameters
218
+ * // 파라미터 없는 Procedure
219
219
  * const GetAllActiveUsers = Procedure("GetAllActiveUsers")
220
220
  * .database("mydb")
221
221
  * .returns((c) => ({
@@ -225,7 +225,7 @@ export class ProcedureBuilder<
225
225
  * .body("SELECT id, name FROM User WHERE status = 'active'");
226
226
  * ```
227
227
  *
228
- * @see {@link ProcedureBuilder} builder class
228
+ * @see {@link ProcedureBuilder} builder 클래스
229
229
  */
230
230
  export function Procedure(name: string): ProcedureBuilder<never, never> {
231
231
  return new ProcedureBuilder({ name });