@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
@@ -1,16 +1,16 @@
1
1
  /**
2
- * 검색 쿼리 파싱 결과 (LIKE 패턴)
2
+ * Search query parsing result (LIKE pattern)
3
3
  */
4
4
  export interface ParsedSearchQuery {
5
- /** 일반 검색어 (OR 조건) - LIKE 패턴 */
5
+ /** General search terms (OR condition) - LIKE pattern */
6
6
  or: string[];
7
- /** 필수 검색어 (AND 조건, + 접두사 또는 따옴표) - LIKE 패턴 */
7
+ /** Required search terms (AND condition, + prefix or quotes) - LIKE pattern */
8
8
  must: string[];
9
- /** 제외 검색어 (NOT 조건, - 접두사) - LIKE 패턴 */
9
+ /** Excluded search terms (NOT condition, - prefix) - LIKE pattern */
10
10
  not: string[];
11
11
  }
12
12
 
13
- // 이스케이프 시퀀스를 플레이스홀더로 치환
13
+ // Replace escape sequences with placeholders
14
14
  const ESC = {
15
15
  BACKSLASH: "\x00BACKSLASH\x00",
16
16
  ASTERISK: "\x00ASTERISK\x00",
@@ -21,63 +21,63 @@ const ESC = {
21
21
  };
22
22
 
23
23
  /**
24
- * 검색 쿼리 문자열을 파싱하여 SQL LIKE 패턴으로 변환한다.
24
+ * Parse search query string and convert to SQL LIKE pattern.
25
25
  *
26
- * ## 검색 문법
26
+ * ## Search Syntax
27
27
  *
28
- * | 문법 | 의미 | 예시 |
29
- * |------|------|------|
30
- * | `term1 term2` | OR ( 하나 포함) | `사과 바나나` |
31
- * | `+term` | 필수 포함 (AND) | `+사과 +바나나` |
32
- * | `-term` | 제외 (NOT) | `사과 -바나나` |
33
- * | `"exact phrase"` | 정확히 일치 (필수) | `"맛있는 과일"` |
34
- * | `*` | 와일드카드 | `app*` → `app%` |
28
+ * | Syntax | Meaning | Example |
29
+ * |--------|---------|---------|
30
+ * | `term1 term2` | OR (one of them) | `apple banana` |
31
+ * | `+term` | Required (AND) | `+apple +banana` |
32
+ * | `-term` | Excluded (NOT) | `apple -banana` |
33
+ * | `"exact phrase"` | Exact match (required) | `"delicious fruit"` |
34
+ * | `*` | Wildcard | `app*` → `app%` |
35
35
  *
36
- * ## 이스케이프
36
+ * ## Escape Sequences
37
37
  *
38
- * | 입력 | 의미 |
39
- * |------|------|
40
- * | `\\` | 리터럴 `\` |
41
- * | `\*` | 리터럴 `*` |
42
- * | `\%` | 리터럴 `%` |
43
- * | `\"` | 리터럴 `"` |
44
- * | `\+` | 리터럴 `+` |
45
- * | `\-` | 리터럴 `-` |
38
+ * | Input | Meaning |
39
+ * |-------|---------|
40
+ * | `\\` | Literal `\` |
41
+ * | `\*` | Literal `*` |
42
+ * | `\%` | Literal `%` |
43
+ * | `\"` | Literal `"` |
44
+ * | `\+` | Literal `+` |
45
+ * | `\-` | Literal `-` |
46
46
  *
47
- * ## 특수 케이스
47
+ * ## Special Cases
48
48
  *
49
- * - 닫히지 않은 따옴표(`"text`) 따옴표를 포함한 일반 텍스트로 처리된다.
49
+ * - Unclosed quotes (`"text`) are treated as regular text including the quote character.
50
50
  *
51
- * ## 예시
51
+ * ## Examples
52
52
  *
53
53
  * ```typescript
54
- * parseSearchQuery('사과 "맛있는 과일" -바나나 +딸기')
55
- * // 결과:
54
+ * parseSearchQuery('apple "delicious fruit" -banana +strawberry')
55
+ * // Result:
56
56
  * // {
57
- * // or: ["%사과%"],
58
- * // must: ["%맛있는 과일%", "%딸기%"],
59
- * // not: ["%바나나%"]
57
+ * // or: ["%apple%"],
58
+ * // must: ["%delicious fruit%", "%strawberry%"],
59
+ * // not: ["%banana%"]
60
60
  * // }
61
61
  *
62
62
  * parseSearchQuery('app* test')
63
- * // 결과:
63
+ * // Result:
64
64
  * // {
65
- * // or: ["app%", "%test%"], // app*는 "app으로 시작", test 포함검색
65
+ * // or: ["app%", "%test%"], // app* starts with "app", test is substring match
66
66
  * // must: [],
67
67
  * // not: []
68
68
  * // }
69
69
  *
70
- * parseSearchQuery('app\\*test') // 이스케이프된 *
71
- * // 결과:
70
+ * parseSearchQuery('app\\*test') // escaped *
71
+ * // Result:
72
72
  * // {
73
- * // or: ["%app*test%"], // 리터럴 *
73
+ * // or: ["%app*test%"], // literal *
74
74
  * // must: [],
75
75
  * // not: []
76
76
  * // }
77
77
  * ```
78
78
  *
79
- * @param searchText 검색 쿼리 문자열
80
- * @returns 파싱된 검색 쿼리 객체 (LIKE 패턴)
79
+ * @param searchText Search query string
80
+ * @returns Parsed search query object (LIKE pattern)
81
81
  */
82
82
  export function parseSearchQuery(searchText: string): ParsedSearchQuery {
83
83
  const result: ParsedSearchQuery = {
@@ -98,7 +98,7 @@ export function parseSearchQuery(searchText: string): ParsedSearchQuery {
98
98
  .replace(/\\\+/g, ESC.PLUS)
99
99
  .replace(/\\-/g, ESC.MINUS);
100
100
 
101
- // 따옴표로 묶인 부분 추출
101
+ // Extract quoted sections
102
102
  const quotedRegex = /([+-]?)"([^"]*)"/g;
103
103
  let match: RegExpExecArray | null;
104
104
 
@@ -115,21 +115,21 @@ export function parseSearchQuery(searchText: string): ParsedSearchQuery {
115
115
  } else if (prefix === "-") {
116
116
  result.not.push(pattern);
117
117
  } else {
118
- // 따옴표로 묶인 must 처리 (정확히 일치 = 필수)
118
+ // Quoted text is treated as must (exact match = required)
119
119
  result.must.push(pattern);
120
120
  }
121
121
  }
122
122
 
123
- // 따옴표 부분 제거
123
+ // Remove quoted sections
124
124
  processed = processed.replace(/[+-]?"[^"]*"/g, " ");
125
125
 
126
- // 공백으로 토큰 분리
126
+ // Split tokens by whitespace
127
127
  const tokens = processed.split(/\s+/).filter((t) => t.length > 0);
128
128
 
129
129
  for (let token of tokens) {
130
130
  let targetArray = result.or;
131
131
 
132
- // + 또는 - 접두사 처리
132
+ // Handle + or - prefix
133
133
  if (token.startsWith("+")) {
134
134
  targetArray = result.must;
135
135
  token = token.slice(1);
@@ -148,42 +148,42 @@ export function parseSearchQuery(searchText: string): ParsedSearchQuery {
148
148
  }
149
149
 
150
150
  /**
151
- * 검색어를 SQL LIKE 패턴으로 변환 (내부 함수)
151
+ * Convert search term to SQL LIKE pattern (internal function)
152
152
  *
153
- * 와일드카드 규칙:
154
- * - `사과` (와일드카드 없음) → `%사과%` (포함 검색, 기본)
155
- * - `사과*``사과%` (시작)
156
- * - `*사과``%사과` ()
157
- * - `*사과*``%사과%` (명시적 포함)
158
- * - `사*과``사%과` (중간)
153
+ * Wildcard rules:
154
+ * - `apple` (no wildcard) → `%apple%` (substring match, default)
155
+ * - `apple*``apple%` (starts with)
156
+ * - `*apple``%apple` (ends with)
157
+ * - `*apple*``%apple%` (explicit substring)
158
+ * - `a*ple``a%ple` (in the middle)
159
159
  */
160
160
  function termToLikePattern(term: string): string {
161
- // 와일드카드 *를 임시 마커로 변환 (이스케이프된 것은 ESC.ASTERISK로 이미 처리됨)
161
+ // Convert wildcard * to temporary marker (escaped ones are already handled as ESC.ASTERISK)
162
162
  const WILDCARD = "\x01WILDCARD\x01";
163
163
  const hasWildcard = term.includes("*");
164
164
  let pattern = term.replace(/\*/g, WILDCARD);
165
165
 
166
- // SQL LIKE 특수문자 이스케이프 (\ → \\, % → \%, _ → \_, [ → \[)
166
+ // Escape SQL LIKE special characters (\ → \\, % → \%, _ → \_, [ → \[)
167
167
  pattern = pattern
168
168
  .replace(/\\/g, "\\\\")
169
169
  .replace(/%/g, "\\%")
170
170
  .replace(/_/g, "\\_")
171
171
  .replace(/\[/g, "\\[");
172
172
 
173
- // 와일드카드 마커 → % (SQL 와일드카드)
173
+ // Convert wildcard marker → % (SQL wildcard)
174
174
  pattern = pattern.replaceAll(WILDCARD, "%");
175
175
 
176
- // 이스케이프 플레이스홀더 복원
176
+ // Restore escape placeholders
177
177
  pattern = pattern
178
178
  .replaceAll(ESC.BACKSLASH, "\\\\") // \\ → SQL \\
179
- .replaceAll(ESC.ASTERISK, "*") // \* → 리터럴 * (SQL에서 특수문자 아님)
179
+ .replaceAll(ESC.ASTERISK, "*") // \* → literal * (not special in SQL)
180
180
  .replaceAll(ESC.PERCENT, "\\%") // \% → SQL \%
181
181
  .replaceAll(ESC.QUOTE, '"')
182
182
  .replaceAll(ESC.PLUS, "+")
183
183
  .replaceAll(ESC.MINUS, "-");
184
184
 
185
- // 와일드카드가 없으면 양쪽에 % 추가 (기본 포함 검색)
186
- // 와일드카드가 있으면 사용자가 지정한 패턴 그대로 사용
185
+ // If no wildcard, add % on both sides (default substring search)
186
+ // If wildcard exists, use the pattern as specified by the user
187
187
  if (hasWildcard) {
188
188
  return pattern;
189
189
  }
@@ -2,8 +2,8 @@ import type { ColumnPrimitive, ColumnPrimitiveStr } from "../types/column";
2
2
  import type { Expr, WhereExpr } from "../types/expr";
3
3
 
4
4
  /**
5
- * 타입 안전한 표현식 래퍼
6
- * TypeScript 제네릭으로 표현식의 반환 타입을 추적
5
+ * Type-safe expression wrapper
6
+ * Tracks expression return type using TypeScript generics
7
7
  */
8
8
  export class ExprUnit<TPrimitive extends ColumnPrimitive> {
9
9
  readonly $infer!: TPrimitive;
@@ -19,13 +19,13 @@ export class ExprUnit<TPrimitive extends ColumnPrimitive> {
19
19
  }
20
20
 
21
21
  /**
22
- * WHERE 절용 표현식 래퍼
22
+ * Expression wrapper for WHERE clause
23
23
  */
24
24
  export class WhereExprUnit {
25
25
  constructor(readonly expr: WhereExpr) {}
26
26
  }
27
27
 
28
28
  /**
29
- * ExprUnit 또는 리터럴 값을 받을 있는 입력 타입
29
+ * Input type that accepts ExprUnit or literal values
30
30
  */
31
31
  export type ExprInput<TPrimitive extends ColumnPrimitive> = ExprUnit<TPrimitive> | TPrimitive;