@simplysm/orm-common 14.0.1 → 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 (59) hide show
  1. package/README.md +135 -0
  2. package/dist/exec/queryable.js +18 -18
  3. package/dist/exec/queryable.js.map +1 -1
  4. package/dist/expr/expr.d.ts +102 -102
  5. package/dist/expr/expr.js +105 -105
  6. package/dist/expr/expr.js.map +1 -1
  7. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +1 -1
  8. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  9. package/dist/query-builder/mssql/mssql-expr-renderer.js +17 -17
  10. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -1
  11. package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
  12. package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
  13. package/dist/query-builder/mssql/mssql-query-builder.js +26 -26
  14. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -1
  15. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +1 -1
  16. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  17. package/dist/query-builder/mysql/mysql-expr-renderer.js +14 -14
  18. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -1
  19. package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
  20. package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
  21. package/dist/query-builder/mysql/mysql-query-builder.js +67 -67
  22. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -1
  23. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +1 -1
  24. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  25. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +13 -13
  26. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -1
  27. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
  28. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
  29. package/dist/query-builder/postgresql/postgresql-query-builder.js +47 -47
  30. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -1
  31. package/dist/schema/factory/relation-builder.d.ts +8 -8
  32. package/dist/schema/factory/relation-builder.js +9 -9
  33. package/dist/schema/factory/relation-builder.js.map +1 -1
  34. package/dist/schema/view-builder.js +2 -2
  35. package/dist/schema/view-builder.js.map +1 -1
  36. package/dist/types/column.d.ts +21 -21
  37. package/dist/types/column.js +5 -5
  38. package/dist/utils/result-parser.d.ts +11 -11
  39. package/dist/utils/result-parser.js +48 -48
  40. package/dist/utils/result-parser.js.map +1 -1
  41. package/docs/core.md +206 -0
  42. package/docs/expression.md +217 -0
  43. package/docs/query-builder.md +126 -0
  44. package/docs/queryable.md +236 -0
  45. package/docs/schema-builders.md +352 -0
  46. package/docs/types.md +501 -0
  47. package/package.json +7 -3
  48. package/src/exec/queryable.ts +18 -18
  49. package/src/expr/expr.ts +105 -105
  50. package/src/query-builder/mssql/mssql-expr-renderer.ts +17 -17
  51. package/src/query-builder/mssql/mssql-query-builder.ts +26 -26
  52. package/src/query-builder/mysql/mysql-expr-renderer.ts +14 -14
  53. package/src/query-builder/mysql/mysql-query-builder.ts +67 -67
  54. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +13 -13
  55. package/src/query-builder/postgresql/postgresql-query-builder.ts +47 -47
  56. package/src/schema/factory/relation-builder.ts +9 -9
  57. package/src/schema/view-builder.ts +2 -2
  58. package/src/types/column.ts +23 -23
  59. package/src/utils/result-parser.ts +49 -49
@@ -135,15 +135,15 @@ export declare class ForeignKeyTargetBuilder<TTargetTableFn extends () => TableB
135
135
  *
136
136
  * @example
137
137
  * ```typescript
138
- * // Relation definition from View to Table
138
+ * // View에서 Table로의 관계 정의
139
139
  * const UserSummary = View("UserSummary")
140
140
  * .query((db: MyDb) => db.user().select(...))
141
141
  * .relations((r) => ({
142
- * // View → Table (no FK creation)
142
+ * // View → Table (FK 미생성)
143
143
  * company: r.relationKey(["companyId"], () => Company),
144
144
  * }));
145
145
  *
146
- * // Relation definition from Table without FK
146
+ * // FK 없는 Table 관계 정의
147
147
  * const Report = Table("Report")
148
148
  * .columns((c) => ({ userId: c.bigint() }))
149
149
  * .relations((r) => ({
@@ -195,7 +195,7 @@ export declare class RelationKeyBuilder<TOwner extends TableBuilder<any, any> |
195
195
  * const Company = Table("Company")
196
196
  * .columns((c) => ({ id: c.bigint() }))
197
197
  * .relations((r) => ({
198
- * // Reverse-reference (no FK creation)
198
+ * // 역참조 (FK 미생성)
199
199
  * employees: r.relationKeyTarget(() => UserSummary, "company"),
200
200
  * }));
201
201
  * ```
@@ -275,21 +275,21 @@ type RelationRkFactory<TOwner extends TableBuilder<any, any> | ViewBuilder<any,
275
275
  *
276
276
  * @example
277
277
  * ```typescript
278
- * // Table - both FK and RelationKey available
278
+ * // Table - FK RelationKey 모두 사용 가능
279
279
  * const Post = Table("Post")
280
280
  * .columns((c) => ({
281
281
  * id: c.bigint(),
282
282
  * authorId: c.bigint(),
283
283
  * }))
284
284
  * .relations((r) => ({
285
- * author: r.foreignKey(["authorId"], () => User), // FK Generate
285
+ * author: r.foreignKey(["authorId"], () => User), // FK 생성
286
286
  * }));
287
287
  *
288
- * // View - only RelationKey available
288
+ * // View - RelationKey 사용 가능
289
289
  * const UserSummary = View("UserSummary")
290
290
  * .query(...)
291
291
  * .relations((r) => ({
292
- * posts: r.relationKeyTarget(() => Post, "author"), // No FK creation
292
+ * posts: r.relationKeyTarget(() => Post, "author"), // FK 미생성
293
293
  * }));
294
294
  * ```
295
295
  */
@@ -116,7 +116,7 @@ export class ForeignKeyTargetBuilder {
116
116
  }
117
117
  }
118
118
  // ============================================
119
- // RelationKeyBuilder (same as FK but does not register FK in DB)
119
+ // RelationKeyBuilder (FK 동일하지만 DB에 FK 등록하지 않음)
120
120
  // ============================================
121
121
  /**
122
122
  * 논리적 관계 builder (N:1) - DB FK 미생성
@@ -129,15 +129,15 @@ export class ForeignKeyTargetBuilder {
129
129
  *
130
130
  * @example
131
131
  * ```typescript
132
- * // Relation definition from View to Table
132
+ * // View에서 Table로의 관계 정의
133
133
  * const UserSummary = View("UserSummary")
134
134
  * .query((db: MyDb) => db.user().select(...))
135
135
  * .relations((r) => ({
136
- * // View → Table (no FK creation)
136
+ * // View → Table (FK 미생성)
137
137
  * company: r.relationKey(["companyId"], () => Company),
138
138
  * }));
139
139
  *
140
- * // Relation definition from Table without FK
140
+ * // FK 없는 Table 관계 정의
141
141
  * const Report = Table("Report")
142
142
  * .columns((c) => ({ userId: c.bigint() }))
143
143
  * .relations((r) => ({
@@ -183,7 +183,7 @@ export class RelationKeyBuilder {
183
183
  * const Company = Table("Company")
184
184
  * .columns((c) => ({ id: c.bigint() }))
185
185
  * .relations((r) => ({
186
- * // Reverse-reference (no FK creation)
186
+ * // 역참조 (FK 미생성)
187
187
  * employees: r.relationKeyTarget(() => UserSummary, "company"),
188
188
  * }));
189
189
  * ```
@@ -235,21 +235,21 @@ export class RelationKeyTargetBuilder {
235
235
  *
236
236
  * @example
237
237
  * ```typescript
238
- * // Table - both FK and RelationKey available
238
+ * // Table - FK RelationKey 모두 사용 가능
239
239
  * const Post = Table("Post")
240
240
  * .columns((c) => ({
241
241
  * id: c.bigint(),
242
242
  * authorId: c.bigint(),
243
243
  * }))
244
244
  * .relations((r) => ({
245
- * author: r.foreignKey(["authorId"], () => User), // FK Generate
245
+ * author: r.foreignKey(["authorId"], () => User), // FK 생성
246
246
  * }));
247
247
  *
248
- * // View - only RelationKey available
248
+ * // View - RelationKey 사용 가능
249
249
  * const UserSummary = View("UserSummary")
250
250
  * .query(...)
251
251
  * .relations((r) => ({
252
- * posts: r.relationKeyTarget(() => Post, "author"), // No FK creation
252
+ * posts: r.relationKeyTarget(() => Post, "author"), // FK 미생성
253
253
  * }));
254
254
  * ```
255
255
  */
@@ -1 +1 @@
1
- {"version":3,"file":"relation-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\schema\\factory\\relation-builder.ts"],"names":[],"mappings":"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"}
@@ -140,8 +140,8 @@ export class ViewBuilder {
140
140
  * @see {@link ForeignKeyTargetBuilder} FK reverse-reference builder
141
141
  */
142
142
  relations(fn) {
143
- // Casting is unavoidable due to TypeScript generic type inference limitations
144
- // Resolves type mismatch between TRelations type parameter and newly created relation type T
143
+ // TypeScript 제네릭 타입 추론 한계로 인해 캐스팅이 불가피
144
+ // TRelations 타입 파라미터와 새로 생성된 관계 타입 T 간의 타입 불일치 해결
145
145
  return new ViewBuilder({
146
146
  ...this.meta,
147
147
  relations: fn(createRelationFactory(() => this)),
@@ -1 +1 @@
1
- {"version":3,"file":"view-builder.js","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,WAAW;IAoBX;IAfX,qBAAqB;IACZ,UAAU,CAAc;IACjC,eAAe;IACN,YAAY,CAAS;IAE9B;;;;;;;;OAQG;IACH,YACW,IAOR;QAPQ,SAAI,GAAJ,IAAI,CAOZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CACH,MAA8C;QAE9C,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CACP,EAAkF;QAElF,8EAA8E;QAC9E,6FAA6F;QAC7F,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAA6B,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAC7E,CAAQ,CAAC;IACZ,CAAC;CACF;AAED,+CAA+C;AAC/C,UAAU;AACV,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"view-builder.js","sourceRoot":"","sources":["..\\..\\src\\schema\\view-builder.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,GAGtB,MAAM,4BAA4B,CAAC;AAEpC,+CAA+C;AAC/C,cAAc;AACd,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,WAAW;IAoBX;IAfX,qBAAqB;IACZ,UAAU,CAAc;IACjC,eAAe;IACN,YAAY,CAAS;IAE9B;;;;;;;;OAQG;IACH,YACW,IAOR;QAPQ,SAAI,GAAJ,IAAI,CAOZ;IACA,CAAC;IAEJ;;;;;OAKG;IACH,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,MAAc;QACnB,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CACH,MAA8C;QAE9C,OAAO,IAAI,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CACP,EAAkF;QAElF,uCAAuC;QACvC,kDAAkD;QAClD,OAAO,IAAI,WAAW,CAAC;YACrB,GAAG,IAAI,CAAC,IAAI;YACZ,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAA6B,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAC7E,CAAQ,CAAC;IACZ,CAAC;CACF;AAED,+CAA+C;AAC/C,UAAU;AACV,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { DateOnly, DateTime, Time, Uuid, type Bytes } from "@simplysm/core-common";
2
2
  /**
3
- * SQL data type definition
3
+ * SQL 데이터 타입 정의
4
4
  *
5
- * DBMS Mapping:
5
+ * DBMS 매핑:
6
6
  * - `int`: INT (4 bytes)
7
7
  * - `bigint`: BIGINT (8 bytes)
8
8
  * - `float`: FLOAT/REAL (4 bytes)
@@ -59,9 +59,9 @@ export type DataType = {
59
59
  type: "uuid";
60
60
  };
61
61
  /**
62
- * Column primitive type mapping
62
+ * Column 원시 타입 매핑
63
63
  *
64
- * TypeScript type name (string) → Actual TypeScript type mapping
64
+ * TypeScript 타입 이름 (문자열) → 실제 TypeScript 타입 매핑
65
65
  *
66
66
  * @example
67
67
  * ```typescript
@@ -80,7 +80,7 @@ export type ColumnPrimitiveMap = {
80
80
  Bytes: Bytes;
81
81
  };
82
82
  /**
83
- * Column primitive type name (string)
83
+ * Column 원시 타입 이름 (문자열)
84
84
  *
85
85
  * @example
86
86
  * ```typescript
@@ -90,13 +90,13 @@ export type ColumnPrimitiveMap = {
90
90
  */
91
91
  export type ColumnPrimitiveStr = keyof ColumnPrimitiveMap;
92
92
  /**
93
- * All primitive types that can be stored in columns
93
+ * Column에 저장 가능한 모든 원시 타입
94
94
  *
95
- * undefined represents NULL
95
+ * undefined NULL을 나타냄
96
96
  */
97
97
  export type ColumnPrimitive = ColumnPrimitiveMap[ColumnPrimitiveStr] | undefined;
98
98
  /**
99
- * SQL DataType → TypeScript type name mapping
99
+ * SQL DataType → TypeScript 타입 이름 매핑
100
100
  *
101
101
  * @example
102
102
  * ```typescript
@@ -121,7 +121,7 @@ export declare const dataTypeStrToColumnPrimitiveStr: {
121
121
  uuid: "Uuid";
122
122
  };
123
123
  /**
124
- * TypeScript Type inference from DataType
124
+ * DataType으로부터 TypeScript 타입 추론
125
125
  *
126
126
  * @template T - DataType
127
127
  *
@@ -133,11 +133,11 @@ export declare const dataTypeStrToColumnPrimitiveStr: {
133
133
  */
134
134
  export type InferColumnPrimitiveFromDataType<TDataType extends DataType> = ColumnPrimitiveMap[(typeof dataTypeStrToColumnPrimitiveStr)[TDataType["type"]]];
135
135
  /**
136
- * Infer ColumnPrimitiveStr from runtime value
136
+ * 런타임 값에서 ColumnPrimitiveStr 추론
137
137
  *
138
- * @param value - Column value
139
- * @returns ColumnPrimitiveStr type name
140
- * @throws Error if value type is unknown
138
+ * @param value - Column
139
+ * @returns ColumnPrimitiveStr 타입 이름
140
+ * @throws 타입이 없을 때 Error
141
141
  *
142
142
  * @example
143
143
  * ```typescript
@@ -148,16 +148,16 @@ export type InferColumnPrimitiveFromDataType<TDataType extends DataType> = Colum
148
148
  */
149
149
  export declare function inferColumnPrimitiveStr(value: ColumnPrimitive): ColumnPrimitiveStr;
150
150
  /**
151
- * Column metadata
151
+ * Column 메타데이터
152
152
  *
153
- * Generated by ColumnBuilder and passed to TableBuilder
153
+ * ColumnBuilder에서 생성되어 TableBuilder에 전달됨
154
154
  *
155
- * @property type - TypeScript type name (ColumnPrimitiveStr)
156
- * @property dataType - SQL data type
157
- * @property autoIncrement - Whether to auto-increment
158
- * @property nullable - Whether to allow NULL
159
- * @property default - Default value
160
- * @property description - Column description (DDL comment)
155
+ * @property type - TypeScript 타입 이름 (ColumnPrimitiveStr)
156
+ * @property dataType - SQL 데이터 타입
157
+ * @property autoIncrement - 자동 증가 여부
158
+ * @property nullable - NULL 허용 여부
159
+ * @property default - 기본값
160
+ * @property description - Column 설명 (DDL 코멘트)
161
161
  *
162
162
  * @see {@link ColumnBuilder} Column builder
163
163
  */
@@ -3,7 +3,7 @@ import { DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
3
3
  // DataType ↔ ColumnPrimitive Mapping
4
4
  // ============================================
5
5
  /**
6
- * SQL DataType → TypeScript type name mapping
6
+ * SQL DataType → TypeScript 타입 이름 매핑
7
7
  *
8
8
  * @example
9
9
  * ```typescript
@@ -28,11 +28,11 @@ export const dataTypeStrToColumnPrimitiveStr = {
28
28
  uuid: "Uuid",
29
29
  };
30
30
  /**
31
- * Infer ColumnPrimitiveStr from runtime value
31
+ * 런타임 값에서 ColumnPrimitiveStr 추론
32
32
  *
33
- * @param value - Column value
34
- * @returns ColumnPrimitiveStr type name
35
- * @throws Error if value type is unknown
33
+ * @param value - Column
34
+ * @returns ColumnPrimitiveStr 타입 이름
35
+ * @throws 타입이 없을 때 Error
36
36
  *
37
37
  * @example
38
38
  * ```typescript
@@ -1,27 +1,27 @@
1
1
  import type { ResultMeta } from "../types/db";
2
2
  /**
3
- * Transform DB query result to TypeScript object via ResultMeta
3
+ * ResultMeta를 통해 DB 쿼리 결과를 TypeScript 객체로 변환
4
4
  *
5
- * @param rawResults - Raw result array from database
6
- * @param meta - Type transformation and JOIN structure information (required)
7
- * @returns Type-transformed and nested result array. Returns undefined if input is empty or no valid results
8
- * @throws Error if type parsing fails
5
+ * @param rawResults - 데이터베이스에서 반환된 원시 결과 배열
6
+ * @param meta - 타입 변환 JOIN 구조 정보 (필수)
7
+ * @returns 타입 변환 중첩된 결과 배열. 입력이 비어있거나 유효한 결과가 없으면 undefined 반환
8
+ * @throws 타입 파싱 실패 Error
9
9
  *
10
10
  * @remarks
11
- * - meta required: no need to call this function without meta (input = output)
12
- * - async only: no synchronous version provided for large-scale processing to allow external interrupts
13
- * - browser/node compatible: yields via setTimeout(resolve, 0)
14
- * - empty result handling: returns undefined if input array is empty or all records are empty objects after parsing
11
+ * - meta 필수: meta 없이는 함수를 호출할 필요 없음 (입력 = 출력)
12
+ * - async 전용: 대규모 처리 외부 인터럽트 허용을 위해 동기 버전 미제공
13
+ * - 브라우저/Node 호환: setTimeout(resolve, 0)으로 양보
14
+ * - 결과 처리: 입력 배열이 비어있거나 파싱 모든 레코드가 객체이면 undefined 반환
15
15
  *
16
16
  * @example
17
17
  * ```typescript
18
- * // 1. Simple type parsing
18
+ * // 1. 단순 타입 파싱
19
19
  * const raw = [{ id: "1", createdAt: "2026-01-07T10:00:00.000Z" }];
20
20
  * const meta = { columns: { id: "number", createdAt: "DateTime" }, joins: {} };
21
21
  * const result = await parseQueryResult(raw, meta);
22
22
  * // [{ id: 1, createdAt: DateTime(...) }]
23
23
  *
24
- * // 2. JOIN result nesting
24
+ * // 2. JOIN 결과 중첩
25
25
  * const raw = [
26
26
  * { id: 1, name: "User1", "posts.id": 10, "posts.title": "Post1" },
27
27
  * { id: 1, name: "User1", "posts.id": 11, "posts.title": "Post2" },
@@ -1,6 +1,6 @@
1
1
  import { bytes, obj, DateOnly, DateTime, Time, Uuid } from "@simplysm/core-common";
2
2
  // ============================================
3
- // Type Parsers
3
+ // 타입 파서
4
4
  // ============================================
5
5
  /**
6
6
  * 값을 지정된 타입으로 파싱
@@ -98,7 +98,7 @@ function isEmptyObject(record) {
98
98
  return Object.keys(record).length === 0;
99
99
  }
100
100
  // ============================================
101
- // Main Function
101
+ // 메인 함수
102
102
  // ============================================
103
103
  /** 양보 간격: N개 레코드마다 이벤트 루프에 양보 */
104
104
  const YIELD_INTERVAL = 100;
@@ -107,28 +107,28 @@ const yieldToEventLoop = typeof setImmediate !== "undefined"
107
107
  ? () => new Promise((resolve) => setImmediate(resolve))
108
108
  : () => new Promise((resolve) => setTimeout(resolve, 0));
109
109
  /**
110
- * Transform DB query result to TypeScript object via ResultMeta
110
+ * ResultMeta를 통해 DB 쿼리 결과를 TypeScript 객체로 변환
111
111
  *
112
- * @param rawResults - Raw result array from database
113
- * @param meta - Type transformation and JOIN structure information (required)
114
- * @returns Type-transformed and nested result array. Returns undefined if input is empty or no valid results
115
- * @throws Error if type parsing fails
112
+ * @param rawResults - 데이터베이스에서 반환된 원시 결과 배열
113
+ * @param meta - 타입 변환 JOIN 구조 정보 (필수)
114
+ * @returns 타입 변환 중첩된 결과 배열. 입력이 비어있거나 유효한 결과가 없으면 undefined 반환
115
+ * @throws 타입 파싱 실패 Error
116
116
  *
117
117
  * @remarks
118
- * - meta required: no need to call this function without meta (input = output)
119
- * - async only: no synchronous version provided for large-scale processing to allow external interrupts
120
- * - browser/node compatible: yields via setTimeout(resolve, 0)
121
- * - empty result handling: returns undefined if input array is empty or all records are empty objects after parsing
118
+ * - meta 필수: meta 없이는 함수를 호출할 필요 없음 (입력 = 출력)
119
+ * - async 전용: 대규모 처리 외부 인터럽트 허용을 위해 동기 버전 미제공
120
+ * - 브라우저/Node 호환: setTimeout(resolve, 0)으로 양보
121
+ * - 결과 처리: 입력 배열이 비어있거나 파싱 모든 레코드가 객체이면 undefined 반환
122
122
  *
123
123
  * @example
124
124
  * ```typescript
125
- * // 1. Simple type parsing
125
+ * // 1. 단순 타입 파싱
126
126
  * const raw = [{ id: "1", createdAt: "2026-01-07T10:00:00.000Z" }];
127
127
  * const meta = { columns: { id: "number", createdAt: "DateTime" }, joins: {} };
128
128
  * const result = await parseQueryResult(raw, meta);
129
129
  * // [{ id: 1, createdAt: DateTime(...) }]
130
130
  *
131
- * // 2. JOIN result nesting
131
+ * // 2. JOIN 결과 중첩
132
132
  * const raw = [
133
133
  * { id: 1, name: "User1", "posts.id": 10, "posts.title": "Post1" },
134
134
  * { id: 1, name: "User1", "posts.id": 11, "posts.title": "Post2" },
@@ -142,16 +142,16 @@ const yieldToEventLoop = typeof setImmediate !== "undefined"
142
142
  * ```
143
143
  */
144
144
  export async function parseQueryResult(rawResults, meta) {
145
- // Handle empty input
145
+ // 입력 처리
146
146
  if (rawResults.length === 0) {
147
147
  return undefined;
148
148
  }
149
149
  const joinKeys = Object.keys(meta.joins);
150
- // No JOINs: simple type parsing only
150
+ // JOIN 없음: 단순 타입 파싱만 수행
151
151
  if (joinKeys.length === 0) {
152
152
  return parseSimpleRecords(rawResults, meta.columns);
153
153
  }
154
- // With JOINs: grouping + nesting
154
+ // JOIN 있음: 그룹핑 + 중첩
155
155
  return parseJoinedRecords(rawResults, meta);
156
156
  }
157
157
  /**
@@ -189,7 +189,7 @@ function sortJoinKeysByDepth(joinKeys) {
189
189
  * JOIN이 있는 레코드 파싱 (재귀 그룹핑)
190
190
  */
191
191
  async function parseJoinedRecords(rawResults, meta) {
192
- // 1. Transform all records to nested structure
192
+ // 1. 모든 레코드를 중첩 구조로 변환
193
193
  const columnInfos = buildColumnInfos(meta.columns);
194
194
  const nestedRecords = [];
195
195
  for (let i = 0; i < rawResults.length; i++) {
@@ -198,11 +198,11 @@ async function parseJoinedRecords(rawResults, meta) {
198
198
  }
199
199
  nestedRecords.push(flatToNested(rawResults[i], columnInfos));
200
200
  }
201
- // 2. Sort JOIN keys by depth (shallower ones first)
201
+ // 2. JOIN key를 깊이순으로 정렬 (얕은 우선)
202
202
  const sortedJoinKeys = sortJoinKeysByDepth(Object.keys(meta.joins));
203
- // 3. Recursively group from root level
203
+ // 3. 루트 레벨부터 재귀적으로 그룹핑
204
204
  const results = groupRecordsRecursively(nestedRecords, sortedJoinKeys, meta.joins, "");
205
- // 4. Filter empty results
205
+ // 4. 결과 필터링
206
206
  const filteredResults = results.filter((r) => !isEmptyObject(r));
207
207
  return filteredResults.length > 0 ? filteredResults : undefined;
208
208
  }
@@ -225,41 +225,41 @@ function serializeGroupKey(groupKey, cachedKeyOrder) {
225
225
  return result;
226
226
  }
227
227
  /**
228
- * Recursively group records for current path
228
+ * 현재 경로에 대해 레코드를 재귀적으로 그룹핑
229
229
  *
230
- * Achieves O(n) complexity with Map-based grouping
230
+ * Map 기반 그룹핑으로 O(n) 복잡도 달성
231
231
  *
232
- * @param records - Record array to group
233
- * @param allJoinKeys - All JOIN keys (sorted by depth)
234
- * @param joinsConfig - JOIN configuration
235
- * @param currentPath - Current path (e.g., "", "posts", "posts.comments")
232
+ * @param records - 그룹핑할 레코드 배열
233
+ * @param allJoinKeys - 모든 JOIN key (깊이순 정렬)
234
+ * @param joinsConfig - JOIN 설정
235
+ * @param currentPath - 현재 경로 (예: "", "posts", "posts.comments")
236
236
  */
237
237
  function groupRecordsRecursively(records, allJoinKeys, joinsConfig, currentPath) {
238
- // Find JOIN keys directly corresponding to current path
239
- // e.g., currentPath="" → ["posts", "company"]
240
- // e.g., currentPath="posts" → ["posts.comments"]
238
+ // 현재 경로에 직접 대응하는 JOIN key 찾기
239
+ // 예: currentPath="" → ["posts", "company"]
240
+ // 예: currentPath="posts" → ["posts.comments"]
241
241
  const childJoinKeys = allJoinKeys.filter((key) => {
242
242
  if (currentPath === "") {
243
- // Root level: keys without dots
243
+ // 루트 레벨: 점이 없는 key
244
244
  return !key.includes(".");
245
245
  }
246
246
  else {
247
- // Sublevel: current path + "." + key
247
+ // 하위 레벨: 현재 경로 + "." + key
248
248
  return (key.startsWith(currentPath + ".") && key.slice(currentPath.length + 1).indexOf(".") === -1);
249
249
  }
250
250
  });
251
251
  if (childJoinKeys.length === 0) {
252
- // No more JOINs to group
252
+ // 이상 그룹핑할 JOIN 없음
253
253
  return records;
254
254
  }
255
- // Map-based grouping (O(n) complexity)
255
+ // Map 기반 그룹핑 (O(n) 복잡도)
256
256
  const groupMap = new Map();
257
- // Precompute join key exclusion set for O(1) lookup
257
+ // O(1) 조회를 위한 JOIN key 제외 집합 사전 계산
258
258
  const joinKeyExclusions = buildJoinKeyExclusionSet(childJoinKeys);
259
- // Key order caching (determined from first record and reused)
259
+ // Key 순서 캐싱 ( 번째 레코드에서 결정 재사용)
260
260
  let groupKeyOrder;
261
261
  for (const record of records) {
262
- // Extract and serialize group key (excluding JOIN keys)
262
+ // 그룹 key 추출 직렬화 (JOIN key 제외)
263
263
  const groupKey = extractGroupKey(record, joinKeyExclusions);
264
264
  if (groupKeyOrder == null) {
265
265
  groupKeyOrder = Object.keys(groupKey).sort((a, b) => a.localeCompare(b));
@@ -267,46 +267,46 @@ function groupRecordsRecursively(records, allJoinKeys, joinsConfig, currentPath)
267
267
  const keyStr = serializeGroupKey(groupKey, groupKeyOrder);
268
268
  const existingGroup = groupMap.get(keyStr);
269
269
  if (existingGroup != null) {
270
- // Merge JOIN data to existing group
270
+ // 기존 그룹에 JOIN 데이터 병합
271
271
  for (const joinKey of childJoinKeys) {
272
272
  const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
273
273
  mergeJoinData(existingGroup, record, localKey, joinsConfig[joinKey].isSingle);
274
274
  }
275
275
  }
276
276
  else {
277
- // Generate new group
277
+ // 그룹 생성
278
278
  const newGroup = { ...record };
279
- // Initialize each JOIN key as array or single object
279
+ // JOIN key 배열 또는 단일 객체로 초기화
280
280
  for (const joinKey of childJoinKeys) {
281
281
  const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
282
282
  const joinData = newGroup[localKey];
283
283
  if (joinData != null && !isEmptyObject(joinData)) {
284
284
  if (!joinsConfig[joinKey].isSingle) {
285
- // Transform to array
285
+ // 배열로 변환
286
286
  newGroup[localKey] = [joinData];
287
287
  }
288
288
  }
289
289
  else {
290
- // Delete key if data is empty
290
+ // 데이터가 비어있으면 key 삭제
291
291
  delete newGroup[localKey];
292
292
  }
293
293
  }
294
294
  groupMap.set(keyStr, newGroup);
295
295
  }
296
296
  }
297
- // Transform Map to array
297
+ // Map 배열로 변환
298
298
  const grouped = Array.from(groupMap.values());
299
- // Recursively process sublevel of each JOIN
299
+ // JOIN의 하위 레벨을 재귀적으로 처리
300
300
  for (const group of grouped) {
301
301
  for (const joinKey of childJoinKeys) {
302
302
  const localKey = currentPath === "" ? joinKey : joinKey.slice(currentPath.length + 1);
303
303
  const joinData = group[localKey];
304
304
  if (Array.isArray(joinData) && joinData.length > 0) {
305
- // Array case: process sublevel recursively
305
+ // 배열인 경우: 하위 레벨을 재귀적으로 처리
306
306
  group[localKey] = groupRecordsRecursively(joinData, allJoinKeys, joinsConfig, joinKey);
307
307
  }
308
308
  else if (joinData != null && typeof joinData === "object" && !Array.isArray(joinData)) {
309
- // Single object case (isSingle: true)
309
+ // 단일 객체인 경우 (isSingle: true)
310
310
  const processed = groupRecordsRecursively([joinData], allJoinKeys, joinsConfig, joinKey);
311
311
  if (processed.length > 0) {
312
312
  group[localKey] = processed[0];
@@ -314,7 +314,7 @@ function groupRecordsRecursively(records, allJoinKeys, joinsConfig, currentPath)
314
314
  }
315
315
  }
316
316
  }
317
- // Remove __hashSet__ internal property (temporary property for duplicate checking)
317
+ // __hashSet__ 내부 속성 제거 (중복 검사용 임시 속성)
318
318
  for (const group of grouped) {
319
319
  for (const key of Object.keys(group)) {
320
320
  if (key.startsWith("__hashSet__")) {
@@ -365,7 +365,7 @@ function mergeJoinData(existingGroup, newRecord, localKey, isSingle) {
365
365
  }
366
366
  const existingJoinData = existingGroup[localKey];
367
367
  if (isSingle) {
368
- // isSingle: true - error if data exists and values differ
368
+ // isSingle: true - 데이터가 존재하고 값이 다르면 에러
369
369
  if (existingJoinData != null) {
370
370
  if (!obj.equal(existingJoinData, newJoinData)) {
371
371
  throw new Error(`isSingle 관계 '${localKey}'에 여러 개의 다른 결과가 있습니다.`);
@@ -376,7 +376,7 @@ function mergeJoinData(existingGroup, newRecord, localKey, isSingle) {
376
376
  }
377
377
  }
378
378
  else {
379
- // isSingle: false → Add to array
379
+ // isSingle: false → 배열에 추가
380
380
  const hashSetKey = `__hashSet__${localKey}`;
381
381
  if (!Array.isArray(existingJoinData)) {
382
382
  existingGroup[localKey] = [newJoinData];
@@ -1 +1 @@
1
- {"version":3,"file":"result-parser.js","sourceRoot":"","sources":["..\\..\\src\\utils\\result-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result-parser.js","sourceRoot":"","sources":["..\\..\\src\\utils\\result-parser.ts"],"names":[],"mappings":"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"}