@simplysm/orm-common 13.0.68 → 13.0.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +54 -1447
  2. package/dist/create-db-context.d.ts +10 -10
  3. package/dist/create-db-context.js +9 -9
  4. package/dist/create-db-context.js.map +1 -1
  5. package/dist/ddl/column-ddl.d.ts +4 -4
  6. package/dist/ddl/initialize.d.ts +17 -17
  7. package/dist/ddl/initialize.js +2 -2
  8. package/dist/ddl/initialize.js.map +1 -1
  9. package/dist/ddl/relation-ddl.d.ts +6 -6
  10. package/dist/ddl/schema-ddl.d.ts +4 -4
  11. package/dist/ddl/table-ddl.d.ts +24 -24
  12. package/dist/ddl/table-ddl.js +4 -4
  13. package/dist/ddl/table-ddl.js.map +1 -1
  14. package/dist/errors/db-transaction-error.d.ts +15 -15
  15. package/dist/errors/db-transaction-error.d.ts.map +1 -1
  16. package/dist/exec/executable.d.ts +23 -23
  17. package/dist/exec/executable.js +3 -3
  18. package/dist/exec/executable.js.map +1 -1
  19. package/dist/exec/queryable.d.ts +160 -160
  20. package/dist/exec/queryable.js +119 -119
  21. package/dist/exec/queryable.js.map +1 -1
  22. package/dist/exec/search-parser.d.ts +37 -37
  23. package/dist/exec/search-parser.d.ts.map +1 -1
  24. package/dist/expr/expr-unit.d.ts +4 -4
  25. package/dist/expr/expr.d.ts +257 -257
  26. package/dist/expr/expr.js +265 -265
  27. package/dist/expr/expr.js.map +1 -1
  28. package/dist/query-builder/base/expr-renderer-base.d.ts +9 -9
  29. package/dist/query-builder/base/expr-renderer-base.js +2 -2
  30. package/dist/query-builder/base/expr-renderer-base.js.map +1 -1
  31. package/dist/query-builder/base/query-builder-base.d.ts +26 -26
  32. package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
  33. package/dist/query-builder/base/query-builder-base.js +22 -22
  34. package/dist/query-builder/base/query-builder-base.js.map +1 -1
  35. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
  36. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  37. package/dist/query-builder/mssql/mssql-expr-renderer.js +18 -18
  38. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
  39. package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
  40. package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
  41. package/dist/query-builder/mssql/mssql-query-builder.js +11 -11
  42. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
  43. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
  44. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  45. package/dist/query-builder/mysql/mysql-expr-renderer.js +17 -17
  46. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
  47. package/dist/query-builder/mysql/mysql-query-builder.d.ts +8 -8
  48. package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
  49. package/dist/query-builder/mysql/mysql-query-builder.js +5 -5
  50. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
  51. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
  52. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  53. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +17 -17
  54. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
  55. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +5 -5
  56. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
  57. package/dist/query-builder/postgresql/postgresql-query-builder.js +8 -8
  58. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
  59. package/dist/query-builder/query-builder.d.ts +1 -1
  60. package/dist/schema/factory/column-builder.d.ts +79 -79
  61. package/dist/schema/factory/column-builder.js +42 -42
  62. package/dist/schema/factory/index-builder.d.ts +39 -39
  63. package/dist/schema/factory/index-builder.js +26 -26
  64. package/dist/schema/factory/relation-builder.d.ts +99 -99
  65. package/dist/schema/factory/relation-builder.d.ts.map +1 -1
  66. package/dist/schema/factory/relation-builder.js +38 -38
  67. package/dist/schema/procedure-builder.d.ts +49 -49
  68. package/dist/schema/procedure-builder.d.ts.map +1 -1
  69. package/dist/schema/procedure-builder.js +33 -33
  70. package/dist/schema/table-builder.d.ts +59 -59
  71. package/dist/schema/table-builder.d.ts.map +1 -1
  72. package/dist/schema/table-builder.js +43 -43
  73. package/dist/schema/view-builder.d.ts +49 -49
  74. package/dist/schema/view-builder.d.ts.map +1 -1
  75. package/dist/schema/view-builder.js +32 -32
  76. package/dist/types/column.d.ts +22 -22
  77. package/dist/types/column.js +1 -1
  78. package/dist/types/column.js.map +1 -1
  79. package/dist/types/db.d.ts +40 -40
  80. package/dist/types/expr.d.ts +59 -59
  81. package/dist/types/expr.d.ts.map +1 -1
  82. package/dist/types/query-def.d.ts +44 -44
  83. package/dist/types/query-def.d.ts.map +1 -1
  84. package/dist/utils/result-parser.d.ts +11 -11
  85. package/dist/utils/result-parser.js +3 -3
  86. package/dist/utils/result-parser.js.map +1 -1
  87. package/package.json +5 -5
  88. package/src/create-db-context.ts +20 -20
  89. package/src/ddl/column-ddl.ts +4 -4
  90. package/src/ddl/initialize.ts +259 -259
  91. package/src/ddl/relation-ddl.ts +89 -89
  92. package/src/ddl/schema-ddl.ts +4 -4
  93. package/src/ddl/table-ddl.ts +189 -189
  94. package/src/errors/db-transaction-error.ts +13 -13
  95. package/src/exec/executable.ts +25 -25
  96. package/src/exec/queryable.ts +2033 -2033
  97. package/src/exec/search-parser.ts +57 -57
  98. package/src/expr/expr-unit.ts +4 -4
  99. package/src/expr/expr.ts +2140 -2140
  100. package/src/query-builder/base/expr-renderer-base.ts +237 -237
  101. package/src/query-builder/base/query-builder-base.ts +213 -213
  102. package/src/query-builder/mssql/mssql-expr-renderer.ts +607 -607
  103. package/src/query-builder/mssql/mssql-query-builder.ts +650 -650
  104. package/src/query-builder/mysql/mysql-expr-renderer.ts +613 -613
  105. package/src/query-builder/mysql/mysql-query-builder.ts +759 -759
  106. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +611 -611
  107. package/src/query-builder/postgresql/postgresql-query-builder.ts +686 -686
  108. package/src/query-builder/query-builder.ts +19 -19
  109. package/src/schema/factory/column-builder.ts +423 -423
  110. package/src/schema/factory/index-builder.ts +164 -164
  111. package/src/schema/factory/relation-builder.ts +453 -453
  112. package/src/schema/procedure-builder.ts +232 -232
  113. package/src/schema/table-builder.ts +319 -319
  114. package/src/schema/view-builder.ts +221 -221
  115. package/src/types/column.ts +188 -188
  116. package/src/types/db.ts +208 -208
  117. package/src/types/expr.ts +697 -697
  118. package/src/types/query-def.ts +513 -513
  119. package/src/utils/result-parser.ts +458 -458
  120. package/tests/db-context/create-db-context.spec.ts +224 -0
  121. package/tests/db-context/define-db-context.spec.ts +68 -0
  122. package/tests/ddl/basic.expected.ts +341 -0
  123. package/tests/ddl/basic.spec.ts +714 -0
  124. package/tests/ddl/column-builder.expected.ts +310 -0
  125. package/tests/ddl/column-builder.spec.ts +637 -0
  126. package/tests/ddl/index-builder.expected.ts +38 -0
  127. package/tests/ddl/index-builder.spec.ts +202 -0
  128. package/tests/ddl/procedure-builder.expected.ts +52 -0
  129. package/tests/ddl/procedure-builder.spec.ts +234 -0
  130. package/tests/ddl/relation-builder.expected.ts +36 -0
  131. package/tests/ddl/relation-builder.spec.ts +372 -0
  132. package/tests/ddl/table-builder.expected.ts +113 -0
  133. package/tests/ddl/table-builder.spec.ts +433 -0
  134. package/tests/ddl/view-builder.expected.ts +38 -0
  135. package/tests/ddl/view-builder.spec.ts +176 -0
  136. package/tests/dml/delete.expected.ts +96 -0
  137. package/tests/dml/delete.spec.ts +160 -0
  138. package/tests/dml/insert.expected.ts +192 -0
  139. package/tests/dml/insert.spec.ts +288 -0
  140. package/tests/dml/update.expected.ts +176 -0
  141. package/tests/dml/update.spec.ts +318 -0
  142. package/tests/dml/upsert.expected.ts +215 -0
  143. package/tests/dml/upsert.spec.ts +242 -0
  144. package/tests/errors/queryable-errors.spec.ts +177 -0
  145. package/tests/escape.spec.ts +100 -0
  146. package/tests/examples/pivot.expected.ts +211 -0
  147. package/tests/examples/pivot.spec.ts +533 -0
  148. package/tests/examples/sampling.expected.ts +69 -0
  149. package/tests/examples/sampling.spec.ts +104 -0
  150. package/tests/examples/unpivot.expected.ts +120 -0
  151. package/tests/examples/unpivot.spec.ts +226 -0
  152. package/tests/exec/search-parser.spec.ts +283 -0
  153. package/tests/executable/basic.expected.ts +18 -0
  154. package/tests/executable/basic.spec.ts +54 -0
  155. package/tests/expr/comparison.expected.ts +282 -0
  156. package/tests/expr/comparison.spec.ts +400 -0
  157. package/tests/expr/conditional.expected.ts +134 -0
  158. package/tests/expr/conditional.spec.ts +276 -0
  159. package/tests/expr/date.expected.ts +332 -0
  160. package/tests/expr/date.spec.ts +526 -0
  161. package/tests/expr/math.expected.ts +62 -0
  162. package/tests/expr/math.spec.ts +106 -0
  163. package/tests/expr/string.expected.ts +218 -0
  164. package/tests/expr/string.spec.ts +356 -0
  165. package/tests/expr/utility.expected.ts +147 -0
  166. package/tests/expr/utility.spec.ts +182 -0
  167. package/tests/select/basic.expected.ts +322 -0
  168. package/tests/select/basic.spec.ts +502 -0
  169. package/tests/select/filter.expected.ts +357 -0
  170. package/tests/select/filter.spec.ts +1068 -0
  171. package/tests/select/group.expected.ts +169 -0
  172. package/tests/select/group.spec.ts +244 -0
  173. package/tests/select/join.expected.ts +582 -0
  174. package/tests/select/join.spec.ts +805 -0
  175. package/tests/select/order.expected.ts +150 -0
  176. package/tests/select/order.spec.ts +189 -0
  177. package/tests/select/recursive-cte.expected.ts +244 -0
  178. package/tests/select/recursive-cte.spec.ts +514 -0
  179. package/tests/select/result-meta.spec.ts +270 -0
  180. package/tests/select/subquery.expected.ts +363 -0
  181. package/tests/select/subquery.spec.ts +537 -0
  182. package/tests/select/view.expected.ts +155 -0
  183. package/tests/select/view.spec.ts +235 -0
  184. package/tests/select/window.expected.ts +345 -0
  185. package/tests/select/window.spec.ts +618 -0
  186. package/tests/setup/MockExecutor.ts +18 -0
  187. package/tests/setup/TestDbContext.ts +59 -0
  188. package/tests/setup/models/Company.ts +13 -0
  189. package/tests/setup/models/Employee.ts +10 -0
  190. package/tests/setup/models/MonthlySales.ts +11 -0
  191. package/tests/setup/models/Post.ts +16 -0
  192. package/tests/setup/models/Sales.ts +10 -0
  193. package/tests/setup/models/User.ts +19 -0
  194. package/tests/setup/procedure/GetAllUsers.ts +9 -0
  195. package/tests/setup/procedure/GetUserById.ts +12 -0
  196. package/tests/setup/test-utils.ts +72 -0
  197. package/tests/setup/views/ActiveUsers.ts +8 -0
  198. package/tests/setup/views/UserSummary.ts +11 -0
  199. package/tests/types/nullable-queryable-record.spec.ts +145 -0
  200. package/tests/utils/result-parser-perf.spec.ts +210 -0
  201. package/tests/utils/result-parser.spec.ts +701 -0
  202. package/docs/expressions.md +0 -172
  203. package/docs/queries.md +0 -444
  204. package/docs/schema.md +0 -245
@@ -8,110 +8,110 @@ import type { ColumnPrimitive } from "../types/column";
8
8
  import type { WhereExprUnit, ExprInput } from "../expr/expr-unit";
9
9
  import { ExprUnit } from "../expr/expr-unit";
10
10
  /**
11
- * JOIN 쿼리 빌더
11
+ * JOIN query builder
12
12
  *
13
- * join/joinSingle 메서드 내부에서 사용되며, 조인 대상 테이블을 지정하는 역할을 수행
13
+ * Used internally by join/joinSingle methods to specify the table to join
14
14
  */
15
15
  declare class JoinQueryable {
16
16
  private readonly _db;
17
17
  private readonly _joinAlias;
18
18
  constructor(_db: DbContextBase, _joinAlias: string);
19
19
  /**
20
- * 조인할 테이블을 지정
20
+ * Specify the table to join
21
21
  *
22
- * @param table - 조인 대상 테이블
23
- * @returns 조인된 Queryable
22
+ * @param table - Table to join
23
+ * @returns Joined Queryable
24
24
  */
25
25
  from<T extends TableBuilder<any, any>>(table: T): Queryable<T["$infer"], T>;
26
26
  /**
27
- * 조인 결과의 컬럼을 직접 지정
27
+ * Directly specify columns in join result
28
28
  *
29
- * @param columns - 커스텀 컬럼 정의
30
- * @returns 커스텀 컬럼이 적용된 Queryable
29
+ * @param columns - Custom column definition
30
+ * @returns Queryable with custom columns applied
31
31
  */
32
32
  select<R extends DataRecord>(columns: QueryableRecord<R>): Queryable<R, never>;
33
33
  /**
34
- * 여러 Queryable을 UNION으로 결합
34
+ * Combine multiple Queryables with UNION
35
35
  *
36
- * @param queries - UNION할 Queryable 배열 (최소 2)
37
- * @returns UNION Queryable
38
- * @throws 2 미만의 queryable이 전달된 경우
36
+ * @param queries - Array of Queryables to UNION (minimum 2)
37
+ * @returns UNION-ed Queryable
38
+ * @throws If less than 2 queryables are passed
39
39
  */
40
40
  union<TData extends DataRecord>(...queries: Queryable<TData, any>[]): Queryable<TData, never>;
41
41
  }
42
42
  /**
43
- * 재귀 CTE(Common Table Expression) 빌더
43
+ * Recursive CTE (Common Table Expression) builder
44
44
  *
45
- * recursive() 메서드 내부에서 사용되며, 재귀 쿼리의 본문을 정의하는 역할을 수행
45
+ * used internally in recursive() method, Defines the body of a recursive query
46
46
  *
47
- * @template TBaseData - 기본 쿼리의 데이터 타입
47
+ * @template TBaseData - Base query data type
48
48
  */
49
49
  declare class RecursiveQueryable<TBaseData extends DataRecord> {
50
50
  private readonly _baseQr;
51
51
  private readonly _cteName;
52
52
  constructor(_baseQr: Queryable<TBaseData, any>, _cteName: string);
53
53
  /**
54
- * 재귀 쿼리의 대상 테이블을 지정
54
+ * specify the target table for recursive query
55
55
  *
56
- * @param table - 재귀할 대상 테이블
57
- * @returns self 속성이 추가된 Queryable (자기 참조용)
56
+ * @param table - Target table to recurse
57
+ * @returns Queryable with self property added (for self-reference)
58
58
  */
59
59
  from<T extends TableBuilder<any, any>>(table: T): Queryable<T["$infer"] & {
60
60
  self?: TBaseData[];
61
61
  }, T>;
62
62
  /**
63
- * 재귀 쿼리의 컬럼을 직접 지정
63
+ * Directly specify columns in recursive query
64
64
  *
65
- * @param columns - 커스텀 컬럼 정의
66
- * @returns self 속성이 추가된 Queryable
65
+ * @param columns - Custom column definition
66
+ * @returns Queryable with self property added
67
67
  */
68
68
  select<R extends DataRecord>(columns: QueryableRecord<R>): Queryable<R & {
69
69
  self?: TBaseData[];
70
70
  }, never>;
71
71
  /**
72
- * 여러 Queryable을 UNION으로 결합 (재귀 쿼리용)
72
+ * Combine multiple Queryables with UNION (for recursive query)
73
73
  *
74
- * @param queries - UNION할 Queryable 배열 (최소 2)
75
- * @returns self 속성이 추가된 UNION Queryable
76
- * @throws 2 미만의 queryable이 전달된 경우
74
+ * @param queries - Array of Queryables to UNION (minimum 2)
75
+ * @returns UNION Queryable with self property added
76
+ * @throws If less than 2 queryables are passed
77
77
  */
78
78
  union<TData extends DataRecord>(...queries: Queryable<TData, any>[]): Queryable<TData & {
79
79
  self?: TBaseData[];
80
80
  }, never>;
81
81
  }
82
82
  /**
83
- * 쿼리 빌더 클래스
83
+ * Query builder class
84
84
  *
85
- * 테이블/뷰에 대한 SELECT, INSERT, UPDATE, DELETE 등의 쿼리를 체이닝 방식으로 구성
85
+ * Construct SELECT, INSERT, UPDATE, DELETE queries on tables/views in a chaining manner
86
86
  *
87
- * @template TData - 쿼리 결과의 데이터 타입
88
- * @template TFrom - 원본 테이블 (CUD 작업에 필요)
87
+ * @template TData - Data type of query result
88
+ * @template TFrom - Source table (needed for CUD operations)
89
89
  *
90
90
  * @example
91
91
  * ```typescript
92
- * // 기본 조회
92
+ * // Basic query
93
93
  * const users = await db.user()
94
94
  * .where((u) => [expr.eq(u.isActive, true)])
95
95
  * .orderBy((u) => u.name)
96
96
  * .result();
97
97
  *
98
- * // JOIN 조회
98
+ * // JOIN query
99
99
  * const posts = await db.post()
100
100
  * .include((p) => p.user)
101
101
  * .result();
102
102
  *
103
103
  * // INSERT
104
- * await db.user().insert([{ name: "홍길동", email: "test@test.com" }]);
104
+ * await db.user().insert([{ name: "Gildong Hong", email: "test@test.com" }]);
105
105
  * ```
106
106
  */
107
107
  export declare class Queryable<TData extends DataRecord, TFrom extends TableBuilder<any, any> | never> {
108
108
  readonly meta: QueryableMeta<TData>;
109
109
  constructor(meta: QueryableMeta<TData>);
110
110
  /**
111
- * SELECT할 컬럼을 지정합니다.
111
+ * Specify columns to SELECT.
112
112
  *
113
- * @param fn - 컬럼 매핑 함수. 원본 컬럼을 받아 컬럼 구조를 반환
114
- * @returns 새로운 컬럼 구조가 적용된 Queryable
113
+ * @param fn - Column mapping function. Receives original columns and returns new column structure
114
+ * @returns Queryable with new column structure applied
115
115
  *
116
116
  * @example
117
117
  * ```typescript
@@ -123,9 +123,9 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
123
123
  */
124
124
  select<R extends Record<string, any>>(fn: (columns: QueryableRecord<TData>) => R): Queryable<UnwrapQueryableRecord<R>, never>;
125
125
  /**
126
- * DISTINCT 옵션을 적용하여 중복 행을 제거
126
+ * Apply DISTINCT option to remove duplicate rows
127
127
  *
128
- * @returns DISTINCT 적용된 Queryable
128
+ * @returns Queryable with DISTINCT applied
129
129
  *
130
130
  * @example
131
131
  * ```typescript
@@ -136,11 +136,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
136
136
  */
137
137
  distinct(): Queryable<TData, never>;
138
138
  /**
139
- * 잠금(FOR UPDATE)을 적용
139
+ * Apply row lock (FOR UPDATE)
140
140
  *
141
- * 트랜잭션 내에서 선택된 행에 대한 배타적 잠금을 획득
141
+ * Acquire exclusive lock on selected rows within transaction
142
142
  *
143
- * @returns 잠금이 적용된 Queryable
143
+ * @returns Queryable with lock applied
144
144
  *
145
145
  * @example
146
146
  * ```typescript
@@ -154,14 +154,14 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
154
154
  */
155
155
  lock(): Queryable<TData, TFrom>;
156
156
  /**
157
- * 상위 N개의 행만 조회 (ORDER BY 없이 사용 가능)
157
+ * Select only top N rows (can be used without ORDER BY)
158
158
  *
159
- * @param count - 조회할
160
- * @returns TOP 적용된 Queryable
159
+ * @param count - number of rows to select
160
+ * @returns Queryable with TOP applied
161
161
  *
162
162
  * @example
163
163
  * ```typescript
164
- * // 최신 사용자 10명
164
+ * // Latest 10 users
165
165
  * db.user()
166
166
  * .orderBy((u) => u.createdAt, "DESC")
167
167
  * .top(10)
@@ -169,28 +169,28 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
169
169
  */
170
170
  top(count: number): Queryable<TData, TFrom>;
171
171
  /**
172
- * 페이지네이션을 위한 LIMIT/OFFSET 설정합니다.
173
- * 반드시 orderBy() 먼저 호출해야 합니다.
172
+ * Set LIMIT/OFFSET for pagination.
173
+ * Must call orderBy() first.
174
174
  *
175
- * @param skip - 건너뛸 (OFFSET)
176
- * @param take - 가져올 (LIMIT)
177
- * @returns 페이지네이션이 적용된 Queryable
178
- * @throws ORDER BY 절이 없으면 에러
175
+ * @param skip - number of rows to skip (OFFSET)
176
+ * @param take - number of rows to fetch (LIMIT)
177
+ * @returns Queryable with pagination applied
178
+ * @throws Error if no ORDER BY clause
179
179
  *
180
180
  * @example
181
181
  * ```typescript
182
182
  * db.user
183
183
  * .orderBy((u) => u.createdAt)
184
- * .limit(0, 20) // 20
184
+ * .limit(0, 20) // first 20
185
185
  * ```
186
186
  */
187
187
  limit(skip: number, take: number): Queryable<TData, TFrom>;
188
188
  /**
189
- * 정렬 조건을 추가합니다. 여러 호출하면 순서대로 적용됩니다.
189
+ * Add sorting condition. Multiple calls apply in order.
190
190
  *
191
- * @param fn - 정렬 기준 컬럼을 반환하는 함수
192
- * @param orderBy - 정렬 방향 (ASC/DESC). 기본값: ASC
193
- * @returns 정렬 조건이 추가된 Queryable
191
+ * @param fn - function returning columns to sort by
192
+ * @param orderBy - Sort direction (ASC/DESC). Default: ASC
193
+ * @returns sorting 조건이 추가된 Queryable
194
194
  *
195
195
  * @example
196
196
  * ```typescript
@@ -201,9 +201,9 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
201
201
  */
202
202
  orderBy(fn: (columns: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>, orderBy?: "ASC" | "DESC"): Queryable<TData, TFrom>;
203
203
  /**
204
- * WHERE 조건을 추가합니다. 여러 번 호출하면 AND로 결합됩니다.
204
+ * WHERE condition을 추가합니다. 여러 번 호출하면 AND로 결합됩니다.
205
205
  *
206
- * @param predicate - 조건 배열을 반환하는 함수
206
+ * @param predicate - Condition 배열을 반환하는 function
207
207
  * @returns 조건이 추가된 Queryable
208
208
  *
209
209
  * @example
@@ -218,26 +218,26 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
218
218
  * 텍스트 검색을 수행
219
219
  *
220
220
  * 검색 문법은 {@link parseSearchQuery}를 참조
221
- * - 공백으로 구분된 단어는 OR 조건
222
- * - `+`로 시작하는 단어는 필수 포함 (AND 조건)
223
- * - `-`로 시작하는 단어는 제외 (NOT 조건)
221
+ * - 공백으로 구분된 단어는 OR condition
222
+ * - `+`로 시작하는 단어는 required include (AND Condition)
223
+ * - `-`로 시작하는 단어는 exclude (NOT Condition)
224
224
  *
225
- * @param fn - 검색 대상 컬럼을 반환하는 함수
225
+ * @param fn - 검색 대상 column을 반환하는 function
226
226
  * @param searchText - 검색 텍스트
227
227
  * @returns 검색 조건이 추가된 Queryable
228
228
  *
229
229
  * @example
230
230
  * ```typescript
231
231
  * db.user()
232
- * .search((u) => [u.name, u.email], "홍길동 -탈퇴")
232
+ * .search((u) => [u.name, u.email], "Gildong Hong -탈퇴")
233
233
  * ```
234
234
  */
235
235
  search(fn: (columns: QueryableRecord<TData>) => ExprUnit<string | undefined>[], searchText: string): Queryable<TData, TFrom>;
236
236
  /**
237
- * GROUP BY 절을 추가
237
+ * GROUP BY 절을 Add
238
238
  *
239
- * @param fn - 그룹화 기준 컬럼을 반환하는 함수
240
- * @returns GROUP BY 적용된 Queryable
239
+ * @param fn - Group화 기준 column을 반환하는 function
240
+ * @returns Queryable with GROUP BY applied
241
241
  *
242
242
  * @example
243
243
  * ```typescript
@@ -251,10 +251,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
251
251
  */
252
252
  groupBy(fn: (columns: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>[]): Queryable<TData, never>;
253
253
  /**
254
- * HAVING 절을 추가 (GROUP BY 후 필터링)
254
+ * HAVING 절을 Add (GROUP BY 후 filtering)
255
255
  *
256
- * @param predicate - 조건 배열을 반환하는 함수
257
- * @returns HAVING이 적용된 Queryable
256
+ * @param predicate - Condition 배열을 반환하는 function
257
+ * @returns HAVING이 apply된 Queryable
258
258
  *
259
259
  * @example
260
260
  * ```typescript
@@ -269,11 +269,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
269
269
  */
270
270
  having(predicate: (columns: QueryableRecord<TData>) => WhereExprUnit[]): Queryable<TData, never>;
271
271
  /**
272
- * 1:N 관계의 LEFT OUTER JOIN을 수행 (배열로 결과 추가)
272
+ * 1:N 관계의 LEFT OUTER JOIN을 수행 (배열로 result Add)
273
273
  *
274
- * @param as - 결과에 추가할 속성 이름
275
- * @param fwd - 조인 조건을 정의하는 콜백 함수
276
- * @returns 조인 결과가 배열로 추가된 Queryable
274
+ * @param as - Result에 추가할 property 이름
275
+ * @param fwd - Join 조건을 정의하는 콜백 function
276
+ * @returns join 결과가 배열로 추가된 Queryable
277
277
  *
278
278
  * @example
279
279
  * ```typescript
@@ -282,18 +282,18 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
282
282
  * qr.from(Post)
283
283
  * .where((p) => [expr.eq(p.userId, u.id)])
284
284
  * )
285
- * // 결과: { id, name, posts: [{ id, title }, ...] }
285
+ * // Result: { id, name, posts: [{ id, title }, ...] }
286
286
  * ```
287
287
  */
288
288
  join<A extends string, R extends DataRecord>(as: A, fwd: (qr: JoinQueryable, cols: QueryableRecord<TData>) => Queryable<R, any>): Queryable<TData & {
289
289
  [K in A]?: R[];
290
290
  }, TFrom>;
291
291
  /**
292
- * N:1 또는 1:1 관계의 LEFT OUTER JOIN을 수행 (단일 객체로 결과 추가)
292
+ * N:1 또는 1:1 관계의 LEFT OUTER JOIN을 수행 (단일 객체로 result Add)
293
293
  *
294
- * @param as - 결과에 추가할 속성 이름
295
- * @param fwd - 조인 조건을 정의하는 콜백 함수
296
- * @returns 조인 결과가 단일 객체로 추가된 Queryable
294
+ * @param as - Result에 추가할 property 이름
295
+ * @param fwd - Join 조건을 정의하는 콜백 function
296
+ * @returns join 결과가 단일 객체로 추가된 Queryable
297
297
  *
298
298
  * @example
299
299
  * ```typescript
@@ -302,7 +302,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
302
302
  * qr.from(User)
303
303
  * .where((u) => [expr.eq(u.id, p.userId)])
304
304
  * )
305
- * // 결과: { id, title, user: { id, name } | undefined }
305
+ * // Result: { id, title, user: { id, name } | undefined }
306
306
  * ```
307
307
  */
308
308
  joinSingle<A extends string, R extends DataRecord>(as: A, fwd: (qr: JoinQueryable, cols: QueryableRecord<TData>) => Queryable<R, any>): Queryable<{
@@ -311,22 +311,22 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
311
311
  [K in A]?: R;
312
312
  }, TFrom>;
313
313
  /**
314
- * 관계된 테이블을 자동으로 JOIN합니다.
314
+ * 관계된 Table을 automatic으로 JOIN합니다.
315
315
  * TableBuilder에 정의된 FK/FKT 관계를 기반으로 동작합니다.
316
316
  *
317
- * @param fn - 포함할 관계를 선택하는 함수 (PathProxy를 통해 타입 체크됨)
317
+ * @param fn - 포함할 관계를 선택하는 function (PathProxy를 통해 type 체크됨)
318
318
  * @returns JOIN이 추가된 Queryable
319
319
  * @throws 관계가 정의되지 않은 경우 에러
320
320
  *
321
321
  * @example
322
322
  * ```typescript
323
- * // 단일 관계 포함
323
+ * // 단일 relationship include
324
324
  * db.post.include((p) => p.user)
325
325
  *
326
- * // 중첩 관계 포함
326
+ * // 중첩 relationship include
327
327
  * db.post.include((p) => p.user.company)
328
328
  *
329
- * // 다중 관계 포함
329
+ * // 다중 relationship include
330
330
  * db.user
331
331
  * .include((u) => u.company)
332
332
  * .include((u) => u.posts)
@@ -335,11 +335,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
335
335
  include(fn: (item: PathProxy<TData>) => PathProxy<any>): Queryable<TData, TFrom>;
336
336
  private _include;
337
337
  /**
338
- * 현재 Queryable을 서브쿼리로 감싸기
338
+ * 현재 Queryable을 Subquery로 감싸기
339
339
  *
340
340
  * distinct() 또는 groupBy() 후 count() 사용 시 필요
341
341
  *
342
- * @returns 서브쿼리로 감싸진 Queryable
342
+ * @returns Subquery로 감싸진 Queryable
343
343
  *
344
344
  * @example
345
345
  * ```typescript
@@ -353,11 +353,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
353
353
  */
354
354
  wrap(): Queryable<TData, never>;
355
355
  /**
356
- * 여러 Queryable을 UNION으로 결합 (중복 제거)
356
+ * Combine multiple Queryables with UNION (remove duplicates)
357
357
  *
358
- * @param queries - UNION할 Queryable 배열 (최소 2)
359
- * @returns UNION Queryable
360
- * @throws 2 미만의 queryable이 전달된 경우
358
+ * @param queries - Array of Queryables to UNION (minimum 2)
359
+ * @returns UNION-ed Queryable
360
+ * @throws If less than 2 queryables are passed
361
361
  *
362
362
  * @example
363
363
  * ```typescript
@@ -369,12 +369,12 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
369
369
  */
370
370
  static union<TData extends DataRecord>(...queries: Queryable<TData, any>[]): Queryable<TData, never>;
371
371
  /**
372
- * 재귀 CTE(Common Table Expression)를 생성
372
+ * recursive CTE(Common Table Expression)를 Generate
373
373
  *
374
- * 계층 구조 데이터(조직도, 카테고리 트리 등)를 조회할 때 사용
374
+ * 계층 structure data(조직도, 카테고리 트리 등)를 조회할 때 사용
375
375
  *
376
- * @param fwd - 재귀 부분을 정의하는 콜백 함수
377
- * @returns 재귀 CTE가 적용된 Queryable
376
+ * @param fwd - recursive part을 정의하는 콜백 function
377
+ * @returns recursive CTE가 apply된 Queryable
378
378
  *
379
379
  * @example
380
380
  * ```typescript
@@ -389,9 +389,9 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
389
389
  */
390
390
  recursive(fwd: (qr: RecursiveQueryable<TData>) => Queryable<TData, any>): Queryable<TData, never>;
391
391
  /**
392
- * SELECT 쿼리를 실행하고 결과 배열을 반환
392
+ * SELECT query를 실행하고 result 배열을 return
393
393
  *
394
- * @returns 쿼리 결과 배열
394
+ * @returns Query result array
395
395
  *
396
396
  * @example
397
397
  * ```typescript
@@ -402,9 +402,9 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
402
402
  */
403
403
  result(): Promise<TData[]>;
404
404
  /**
405
- * 단일 결과를 반환 (2개 이상이면 에러)
405
+ * 단일 결과를 return (2개 이상이면 Error)
406
406
  *
407
- * @returns 단일 결과 또는 undefined
407
+ * @returns 단일 result 또는 undefined
408
408
  * @throws 2개 이상의 결과가 반환된 경우
409
409
  *
410
410
  * @example
@@ -416,13 +416,13 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
416
416
  */
417
417
  single(): Promise<TData | undefined>;
418
418
  /**
419
- * 쿼리 소스 이름 반환 (에러 메시지용)
419
+ * query 소스 이름 return (error message용)
420
420
  */
421
421
  private _getSourceName;
422
422
  /**
423
- * 첫 번째 결과를 반환 (여러 개여도 첫 번째만)
423
+ * 첫 번째 결과를 return (여러 개여도 첫 번째만)
424
424
  *
425
- * @returns 첫 번째 결과 또는 undefined
425
+ * @returns 첫 번째 result 또는 undefined
426
426
  *
427
427
  * @example
428
428
  * ```typescript
@@ -433,10 +433,10 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
433
433
  */
434
434
  first(): Promise<TData | undefined>;
435
435
  /**
436
- * 결과 수를 반환
436
+ * result row 수를 return
437
437
  *
438
- * @param fwd - 카운트할 컬럼을 지정하는 함수 (선택)
439
- * @returns
438
+ * @param fwd - 카운트할 column을 지정하는 function (Select)
439
+ * @returns row
440
440
  * @throws distinct() 또는 groupBy() 후 직접 호출 시 에러 (wrap() 필요)
441
441
  *
442
442
  * @example
@@ -448,7 +448,7 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
448
448
  */
449
449
  count(fwd?: (cols: QueryableRecord<TData>) => ExprUnit<ColumnPrimitive>): Promise<number>;
450
450
  /**
451
- * 조건에 맞는 데이터 존재 여부를 확인
451
+ * 조건에 맞는 data 존재 여부를 확인
452
452
  *
453
453
  * @returns 존재하면 true, 없으면 false
454
454
  *
@@ -466,24 +466,24 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
466
466
  private _buildJoinDefs;
467
467
  getResultMeta(outputColumns?: string[]): ResultMeta;
468
468
  /**
469
- * INSERT 쿼리를 실행
469
+ * INSERT query를 실행
470
470
  *
471
- * MSSQL의 1000개 제한을 위해 자동으로 1000개씩 청크로 분할하여 실행
471
+ * MSSQL의 1000개 제한을 위해 automatic으로 1000개씩 청크로 분할하여 실행
472
472
  *
473
- * @param records - 삽입할 레코드 배열
474
- * @param outputColumns - 반환받을 컬럼 이름 배열 (선택)
475
- * @returns outputColumns 지정 시 삽입된 레코드 배열 반환
473
+ * @param records - Insert할 레코드 array
474
+ * @param outputColumns - column name array to receive (Select)
475
+ * @returns outputColumns 지정 시 삽입된 레코드 array return
476
476
  *
477
477
  * @example
478
478
  * ```typescript
479
479
  * // 단순 삽입
480
480
  * await db.user().insert([
481
- * { name: "홍길동", email: "hong@test.com" },
481
+ * { name: "Gildong Hong", email: "hong@test.com" },
482
482
  * ]);
483
483
  *
484
- * // 삽입 후 ID 반환
484
+ * // 삽입 후 ID return
485
485
  * const [inserted] = await db.user().insert(
486
- * [{ name: "홍길동" }],
486
+ * [{ name: "Gildong Hong" }],
487
487
  * ["id"],
488
488
  * );
489
489
  * ```
@@ -491,27 +491,27 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
491
491
  insert(records: TFrom["$inferInsert"][]): Promise<void>;
492
492
  insert<K extends keyof TFrom["$inferColumns"] & string>(records: TFrom["$inferInsert"][], outputColumns: K[]): Promise<Pick<TFrom["$inferColumns"], K>[]>;
493
493
  /**
494
- * WHERE 조건에 맞는 데이터가 없으면 INSERT
494
+ * WHERE condition에 맞는 data가 없으면 INSERT
495
495
  *
496
- * @param record - 삽입할 레코드
497
- * @param outputColumns - 반환받을 컬럼 이름 배열 (선택)
498
- * @returns outputColumns 지정 시 삽입된 레코드 반환
496
+ * @param record - Insert할 레코드
497
+ * @param outputColumns - column name array to receive (Select)
498
+ * @returns outputColumns 지정 시 삽입된 레코드 return
499
499
  *
500
500
  * @example
501
501
  * ```typescript
502
502
  * await db.user()
503
503
  * .where((u) => [expr.eq(u.email, "test@test.com")])
504
- * .insertIfNotExists({ name: "테스트", email: "test@test.com" });
504
+ * .insertIfNotExists({ name: "testing", email: "test@test.com" });
505
505
  * ```
506
506
  */
507
507
  insertIfNotExists(record: TFrom["$inferInsert"]): Promise<void>;
508
508
  insertIfNotExists<K extends keyof TFrom["$inferColumns"] & string>(record: TFrom["$inferInsert"], outputColumns: K[]): Promise<Pick<TFrom["$inferColumns"], K>>;
509
509
  /**
510
- * INSERT INTO ... SELECT (현재 SELECT 결과를 다른 테이블에 INSERT)
510
+ * INSERT INTO ... SELECT (현재 SELECT 결과를 다른 Table에 INSERT)
511
511
  *
512
- * @param targetTable - 삽입 대상 테이블
513
- * @param outputColumns - 반환받을 컬럼 이름 배열 (선택)
514
- * @returns outputColumns 지정 시 삽입된 레코드 배열 반환
512
+ * @param targetTable - Insert 대상 Table
513
+ * @param outputColumns - column name array to receive (Select)
514
+ * @returns outputColumns 지정 시 삽입된 레코드 array return
515
515
  *
516
516
  * @example
517
517
  * ```typescript
@@ -527,11 +527,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
527
527
  getInsertIfNotExistsQueryDef(record: TFrom["$inferInsert"], outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): InsertIfNotExistsQueryDef;
528
528
  getInsertIntoQueryDef<TTable extends TableBuilder<DataToColumnBuilderRecord<TData>, any>>(targetTable: TTable, outputColumns?: (keyof TTable["$inferColumns"] & string)[]): InsertIntoQueryDef;
529
529
  /**
530
- * UPDATE 쿼리를 실행
530
+ * UPDATE query를 실행
531
531
  *
532
- * @param recordFwd - 업데이트할 컬럼과 값을 반환하는 함수
533
- * @param outputColumns - 반환받을 컬럼 이름 배열 (선택)
534
- * @returns outputColumns 지정 시 업데이트된 레코드 배열 반환
532
+ * @param recordFwd - Update할 column과 값을 반환하는 function
533
+ * @param outputColumns - column name array to receive (Select)
534
+ * @returns outputColumns 지정 시 업데이트된 레코드 array return
535
535
  *
536
536
  * @example
537
537
  * ```typescript
@@ -539,11 +539,11 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
539
539
  * await db.user()
540
540
  * .where((u) => [expr.eq(u.id, 1)])
541
541
  * .update((u) => ({
542
- * name: expr.val("string", "새이름"),
542
+ * name: expr.val("string", "New Name"),
543
543
  * updatedAt: expr.val("DateTime", DateTime.now()),
544
544
  * }));
545
545
  *
546
- * // 기존 참조
546
+ * // 기존 value 참조
547
547
  * await db.product()
548
548
  * .update((p) => ({
549
549
  * price: expr.mul(p.price, expr.val("number", 1.1)),
@@ -553,19 +553,19 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
553
553
  update(recordFwd: (cols: QueryableRecord<TData>) => QueryableWriteRecord<TFrom["$inferUpdate"]>): Promise<void>;
554
554
  update<K extends keyof TFrom["$columns"] & string>(recordFwd: (cols: QueryableRecord<TData>) => QueryableWriteRecord<TFrom["$inferUpdate"]>, outputColumns: K[]): Promise<Pick<TFrom["$columns"], K>[]>;
555
555
  /**
556
- * DELETE 쿼리를 실행
556
+ * DELETE query를 실행
557
557
  *
558
- * @param outputColumns - 반환받을 컬럼 이름 배열 (선택)
559
- * @returns outputColumns 지정 시 삭제된 레코드 배열 반환
558
+ * @param outputColumns - column name array to receive (Select)
559
+ * @returns outputColumns 지정 시 삭제된 레코드 array return
560
560
  *
561
561
  * @example
562
562
  * ```typescript
563
- * // 단순 삭제
563
+ * // 단순 Delete
564
564
  * await db.user()
565
565
  * .where((u) => [expr.eq(u.id, 1)])
566
566
  * .delete();
567
567
  *
568
- * // 삭제된 데이터 반환
568
+ * // 삭제된 data return
569
569
  * const deleted = await db.user()
570
570
  * .where((u) => [expr.eq(u.isExpired, true)])
571
571
  * .delete(["id", "name"]);
@@ -576,26 +576,26 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
576
576
  getUpdateQueryDef(recordFwd: (cols: QueryableRecord<TData>) => QueryableWriteRecord<TFrom["$inferUpdate"]>, outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): UpdateQueryDef;
577
577
  getDeleteQueryDef(outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): DeleteQueryDef;
578
578
  /**
579
- * UPSERT (UPDATE or INSERT) 쿼리를 실행
579
+ * UPSERT (UPDATE or INSERT) query를 실행
580
580
  *
581
- * WHERE 조건에 맞는 데이터가 있으면 UPDATE, 없으면 INSERT
581
+ * WHERE condition에 맞는 data가 있으면 UPDATE, 없으면 INSERT
582
582
  *
583
- * @param updateFwd - 업데이트할 컬럼과 값을 반환하는 함수
584
- * @param insertFwd - 삽입할 레코드를 반환하는 함수 (선택, 미지정 시 updateFwd와 동일)
585
- * @param outputColumns - 반환받을 컬럼 이름 배열 (선택)
586
- * @returns outputColumns 지정 시 영향받은 레코드 배열 반환
583
+ * @param updateFwd - Update할 column과 값을 반환하는 function
584
+ * @param insertFwd - Insert할 레코드를 반환하는 function (selection, 미지정 시 updateFwd와 동일)
585
+ * @param outputColumns - column name array to receive (Select)
586
+ * @returns outputColumns 지정 시 영향받은 레코드 array return
587
587
  *
588
588
  * @example
589
589
  * ```typescript
590
- * // UPDATE/INSERT 동일 데이터
590
+ * // UPDATE/INSERT 동일 data
591
591
  * await db.user()
592
592
  * .where((u) => [expr.eq(u.email, "test@test.com")])
593
593
  * .upsert(() => ({
594
- * name: expr.val("string", "테스트"),
594
+ * name: expr.val("string", "testing"),
595
595
  * email: expr.val("string", "test@test.com"),
596
596
  * }));
597
597
  *
598
- * // UPDATE/INSERT 다른 데이터
598
+ * // UPDATE/INSERT 다른 data
599
599
  * await db.user()
600
600
  * .where((u) => [expr.eq(u.email, "test@test.com")])
601
601
  * .upsert(
@@ -610,18 +610,18 @@ export declare class Queryable<TData extends DataRecord, TFrom extends TableBuil
610
610
  upsert<U extends QueryableWriteRecord<TFrom["$inferUpdate"]>, K extends keyof TFrom["$inferColumns"] & string>(updateFwd: (cols: QueryableRecord<TData>) => U, insertFwd: (updateRecord: U) => QueryableWriteRecord<TFrom["$inferInsert"]>, outputColumns?: K[]): Promise<Pick<TFrom["$inferColumns"], K>[]>;
611
611
  getUpsertQueryDef<U extends QueryableWriteRecord<TFrom["$inferUpdate"]>>(updateRecordFwd: (cols: QueryableRecord<TData>) => U, insertRecordFwd: (updateRecord: U) => QueryableWriteRecord<TFrom["$inferInsert"]>, outputColumns?: (keyof TFrom["$inferColumns"] & string)[]): UpsertQueryDef;
612
612
  /**
613
- * FK 제약조건 on/off (트랜잭션 내 사용 가능)
613
+ * FK constraint on/off (transaction 내 사용 가능)
614
614
  */
615
615
  switchFk(switch_: "on" | "off"): Promise<void>;
616
616
  private _getCudOutputDef;
617
617
  }
618
618
  /**
619
- * FK 컬럼 배열과 대상 테이블의 PK를 매칭하여 PK 컬럼명 배열을 반환
619
+ * FK column 배열과 대상 Table의 PK를 매칭하여 PK column명 배열을 return
620
620
  *
621
- * @param fkCols - FK 컬럼명 배열
622
- * @param targetTable - 참조 대상 테이블 빌더
623
- * @returns 매칭된 PK 컬럼명 배열
624
- * @throws FK/PK 컬럼 수 불일치 시
621
+ * @param fkCols - FK column명 array
622
+ * @param targetTable - 참조 대상 Table builder
623
+ * @returns 매칭된 PK column명 array
624
+ * @throws FK/PK column 수 불일치 시
625
625
  */
626
626
  export declare function getMatchedPrimaryKeys(fkCols: string[], targetTable: TableBuilder<any, any>): string[];
627
627
  interface QueryableMeta<TData extends DataRecord> {
@@ -659,20 +659,20 @@ export type NullableQueryableRecord<TData extends DataRecord> = {
659
659
  [K in keyof TData]: TData[K] extends ColumnPrimitive ? ExprUnit<TData[K] | undefined> : TData[K] extends (infer U)[] ? U extends DataRecord ? NullableQueryableRecord<U>[] : never : TData[K] extends (infer U)[] | undefined ? U extends DataRecord ? NullableQueryableRecord<U>[] | undefined : never : TData[K] extends DataRecord ? NullableQueryableRecord<TData[K]> : TData[K] extends DataRecord | undefined ? NullableQueryableRecord<Exclude<TData[K], undefined>> | undefined : never;
660
660
  };
661
661
  /**
662
- * QueryableRecord에서 DataRecord로 역변환
662
+ * QueryableRecord에서 DataRecord로 역transform
663
663
  *
664
- * ExprUnit<T>를 T로, 중첩 객체/배열을 재귀적으로 풀어냄
664
+ * ExprUnit<T>를 T로, 중첩 object/배열을 재귀적으로 풀어냄
665
665
  */
666
666
  export type UnwrapQueryableRecord<R> = {
667
667
  [K in keyof R]: R[K] extends ExprUnit<infer T> ? T : NonNullable<R[K]> extends (infer U)[] ? U extends Record<string, any> ? UnwrapQueryableRecord<U>[] | Extract<R[K], undefined> : never : NonNullable<R[K]> extends Record<string, any> ? UnwrapQueryableRecord<NonNullable<R[K]>> | Extract<R[K], undefined> : never;
668
668
  };
669
669
  /**
670
- * include()에서 관계 경로를 타입 안전하게 지정하기 위한 Proxy 타입
671
- * ColumnPrimitive가 아닌 필드(FK, FKT 관계)만 접근 가능
670
+ * include()에서 relationship 경로를 type 안전하게 지정하기 위한 Proxy type
671
+ * ColumnPrimitive가 아닌 필드(FK, FKT relationship)만 access 가능
672
672
  *
673
673
  * @example
674
674
  * ```typescript
675
- * // item.user.company 접근 시 내부적으로 ["user", "company"] 경로 수집
675
+ * // item.user.company access 시 내부적으로 ["user", "company"] 경로 수집
676
676
  * db.post.include(item => item.user.company)
677
677
  *
678
678
  * // item.title은 string(ColumnPrimitive)이므로 컴파일 에러
@@ -680,12 +680,12 @@ export type UnwrapQueryableRecord<R> = {
680
680
  * ```
681
681
  */
682
682
  /**
683
- * 배열이면 요소 타입 추출
683
+ * 배열이면 요소 type 추출
684
684
  */
685
685
  type UnwrapArray<TArray> = TArray extends (infer TElement)[] ? TElement : TArray;
686
686
  declare const PATH_SYMBOL: unique symbol;
687
687
  /**
688
- * include()용 타입 안전 경로 프록시
688
+ * include()용 type 안전 경로 프록시
689
689
  */
690
690
  export type PathProxy<TObject> = {
691
691
  [K in keyof TObject as TObject[K] extends ColumnPrimitive ? never : K]-?: PathProxy<UnwrapArray<TObject[K]>>;
@@ -693,14 +693,14 @@ export type PathProxy<TObject> = {
693
693
  readonly [PATH_SYMBOL]: string[];
694
694
  };
695
695
  /**
696
- * 테이블 또는 뷰에 대한 Queryable 팩토리 함수를 생성
696
+ * Table 또는 View에 대한 Queryable factory 함수를 Generate
697
697
  *
698
- * DbContext에서 테이블/뷰별 getter를 정의할 때 사용
698
+ * DbContext에서 Table/View별 getter를 정의할 때 사용
699
699
  *
700
- * @param db - DbContext 인스턴스
701
- * @param tableOrView - TableBuilder 또는 ViewBuilder 인스턴스
702
- * @param as - alias 지정 (선택, 미지정 시 자동 생성)
703
- * @returns Queryable을 반환하는 팩토리 함수
700
+ * @param db - DbContext instance
701
+ * @param tableOrView - TableBuilder 또는 ViewBuilder instance
702
+ * @param as - alias 지정 (selection, 미지정 시 automatic Create)
703
+ * @returns Queryable을 반환하는 factory function
704
704
  *
705
705
  * @example
706
706
  * ```typescript