@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
@@ -4,25 +4,25 @@ import { MysqlExprRenderer } from "./mysql-expr-renderer.js";
4
4
  /**
5
5
  * MySQL QueryBuilder
6
6
  *
7
- * MySQL specifics:
8
- * - No OUTPUT support: workaround via multi-statement pattern (INSERT + SET @var + SELECT)
9
- * - INSERT OUTPUT: uses LAST_INSERT_ID() for AI column, extracts PK from record for non-AI
10
- * - UPDATE/UPSERT OUTPUT: saves PK to temp table first since WHERE condition may change after UPDATE, then SELECT
11
- * - DELETE OUTPUT: saves output columns to temp table before delete
12
- * - switchFk: global setting (SET FOREIGN_KEY_CHECKS), table parameter is ignored
13
- * - Index is automatically created when adding FK
7
+ * MySQL 고유 사항:
8
+ * - OUTPUT 미지원: multi-statement 패턴으로 우회 (INSERT + SET @var + SELECT)
9
+ * - INSERT OUTPUT: AI column은 LAST_INSERT_ID() 사용, AI 레코드에서 PK 추출
10
+ * - UPDATE/UPSERT OUTPUT: UPDATE WHERE 조건이 변경될 있으므로 먼저 PK를 임시 테이블에 저장 SELECT
11
+ * - DELETE OUTPUT: 삭제 output column을 임시 테이블에 저장
12
+ * - switchFk: 전역 설정 (SET FOREIGN_KEY_CHECKS), table 파라미터 무시
13
+ * - FK 추가 인덱스 자동 생성
14
14
  */
15
15
  export class MysqlQueryBuilder extends QueryBuilderBase {
16
16
  expr = new MysqlExprRenderer((def) => this.select(def).sql);
17
17
  //#region ========== Utilities ==========
18
- /** Render table name (MySQL: ignores schema, uses database.table only) */
18
+ /** 테이블명 렌더링 (MySQL: schema 무시, database.table 사용) */
19
19
  tableName(obj) {
20
20
  if (obj.database != null) {
21
21
  return `${this.expr.wrap(obj.database)}.${this.expr.wrap(obj.name)}`;
22
22
  }
23
23
  return this.expr.wrap(obj.name);
24
24
  }
25
- /** Render LIMIT clause */
25
+ /** LIMIT 렌더링 */
26
26
  renderLimit(limit, top) {
27
27
  if (limit != null) {
28
28
  const [offset, count] = limit;
@@ -35,14 +35,14 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
35
35
  }
36
36
  renderJoin(join) {
37
37
  const alias = this.expr.wrap(join.as);
38
- // Detect if LATERAL JOIN is needed
38
+ // LATERAL JOIN 필요한지 감지
39
39
  if (this.needsLateral(join)) {
40
- // If from is an array (UNION ALL), use renderFrom(join.from),
41
- // otherwise (orderBy, top, select, etc.) use renderFrom(join) to generate subquery
40
+ // from 배열(UNION ALL)이면 renderFrom(join.from) 사용,
41
+ // (orderBy, top, select )이면 renderFrom(join)으로 서브쿼리 생성
42
42
  const from = Array.isArray(join.from) ? this.renderFrom(join.from) : this.renderFrom(join);
43
43
  return ` LEFT OUTER JOIN LATERAL ${from} AS ${alias} ON TRUE`;
44
44
  }
45
- // Normal JOIN
45
+ // 일반 JOIN
46
46
  const from = this.renderFrom(join.from);
47
47
  const where = join.where != null && join.where.length > 0
48
48
  ? ` ON ${this.expr.renderWhere(join.where)}`
@@ -78,7 +78,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
78
78
  }
79
79
  // LOCK
80
80
  if (def.lock) {
81
- // MySQL: SELECT ... FOR UPDATE (appended at the end)
81
+ // MySQL: SELECT ... FOR UPDATE (끝에 추가)
82
82
  }
83
83
  // JOINs
84
84
  sql += this.renderJoins(def.joins);
@@ -92,7 +92,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
92
92
  sql += this.renderOrderBy(def.orderBy);
93
93
  // LIMIT
94
94
  sql += this.renderLimit(def.limit, def.top);
95
- // LOCK (FOR UPDATE at end)
95
+ // LOCK (끝에 FOR UPDATE 추가)
96
96
  if (def.lock) {
97
97
  sql += " FOR UPDATE";
98
98
  }
@@ -107,7 +107,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
107
107
  }
108
108
  const columns = Object.keys(def.records[0]);
109
109
  const colList = columns.map((c) => this.expr.wrap(c)).join(", ");
110
- // No OUTPUT needed: simple batch INSERT
110
+ // OUTPUT 불필요: 단순 배치 INSERT
111
111
  if (def.output == null) {
112
112
  const valuesList = def.records.map((record) => {
113
113
  const values = columns.map((c) => this.expr.escapeValue(record[c]));
@@ -115,16 +115,16 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
115
115
  });
116
116
  return { sql: `INSERT INTO ${table} (${colList}) VALUES ${valuesList.join(", ")}` };
117
117
  }
118
- // OUTPUT needed: execute INSERT + SELECT via multi-statement
119
- // Result sets: [INSERT result, SELECT result, INSERT result, SELECT result, ...]
120
- // → Extract only SELECT results with resultSetIndex=1, resultSetStride=2
118
+ // OUTPUT 필요: multi-statement로 INSERT + SELECT 실행
119
+ // 결과 셋: [INSERT 결과, SELECT 결과, INSERT 결과, SELECT 결과, ...]
120
+ // → resultSetIndex=1, resultSetStride=2로 SELECT 결과만 추출
121
121
  const output = def.output;
122
122
  const outputCols = output.columns.map((c) => this.expr.wrap(c)).join(", ");
123
123
  const statements = [];
124
124
  for (const record of def.records) {
125
125
  const values = columns.map((c) => this.expr.escapeValue(record[c])).join(", ");
126
126
  statements.push(`INSERT INTO ${table} (${colList}) VALUES (${values})`);
127
- // SELECT by PK (uses LAST_INSERT_ID() for aiColName)
127
+ // PK로 SELECT (aiColName에는 LAST_INSERT_ID() 사용)
128
128
  const whereForSelect = output.pkColNames.map((pk) => {
129
129
  const wrappedPk = this.expr.wrap(pk);
130
130
  if (pk === output.aiColName) {
@@ -145,20 +145,20 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
145
145
  const columns = Object.keys(def.record);
146
146
  const colList = columns.map((c) => this.expr.wrap(c)).join(", ");
147
147
  const values = columns.map((c) => this.expr.escapeValue(def.record[c])).join(", ");
148
- // Render existsSelectQuery as SELECT 1 AS _
148
+ // existsSelectQuery SELECT 1 AS _로 렌더링
149
149
  const existsQuerySql = this.select({
150
150
  ...def.existsSelectQuery,
151
151
  select: { _: { type: "value", value: 1 } },
152
152
  }).sql;
153
- // No OUTPUT needed: simple INSERT IF NOT EXISTS
153
+ // OUTPUT 불필요: 단순 INSERT IF NOT EXISTS
154
154
  if (def.output == null) {
155
155
  const sql = `INSERT INTO ${table} (${colList}) SELECT ${values} WHERE NOT EXISTS (${existsQuerySql})`;
156
156
  return { sql };
157
157
  }
158
- // OUTPUT needed: multi-statement (INSERT + SET @affected + SELECT)
158
+ // OUTPUT 필요: multi-statement (INSERT + SET @affected + SELECT)
159
159
  const output = def.output;
160
160
  const outputCols = output.columns.map((c) => this.expr.wrap(c)).join(", ");
161
- // SELECT WHERE condition for OUTPUT
161
+ // OUTPUT용 SELECT WHERE 조건
162
162
  const whereForSelect = output.pkColNames.map((pk) => {
163
163
  const wrappedPk = this.expr.wrap(pk);
164
164
  if (pk === output.aiColName) {
@@ -166,32 +166,32 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
166
166
  }
167
167
  return `${wrappedPk} = ${this.expr.escapeValue(def.record[pk])}`;
168
168
  });
169
- // multi-statement: INSERT → SET @affected → SELECT (result only if inserted)
169
+ // multi-statement: INSERT → SET @affected → SELECT (삽입된 경우에만 결과 반환)
170
170
  const statements = [
171
171
  `INSERT INTO ${table} (${colList}) SELECT ${values} WHERE NOT EXISTS (${existsQuerySql})`,
172
172
  `SET @sd_affected = ROW_COUNT()`,
173
173
  `SELECT ${outputCols} FROM ${table} WHERE ${whereForSelect.join(" AND ")} AND @sd_affected > 0`,
174
174
  ];
175
- // results[0]=INSERT, results[1]=SET(empty result), results[2]=SELECT
175
+ // results[0]=INSERT, results[1]=SET( 결과), results[2]=SELECT
176
176
  return { sql: statements.join(";\n"), resultSetIndex: 2 };
177
177
  }
178
178
  insertInto(def) {
179
179
  const table = this.tableName(def.table);
180
180
  const selectSql = this.select(def.recordsSelectQuery).sql;
181
- // Extract columns from INSERT INTO SELECT
181
+ // INSERT INTO SELECT에서 column 추출
182
182
  const selectDef = def.recordsSelectQuery;
183
183
  const colList = selectDef.select != null
184
184
  ? Object.keys(selectDef.select)
185
185
  .map((c) => this.expr.wrap(c))
186
186
  .join(", ")
187
187
  : "*";
188
- // No OUTPUT needed: simple INSERT INTO SELECT
188
+ // OUTPUT 불필요: 단순 INSERT INTO SELECT
189
189
  if (def.output == null) {
190
190
  return { sql: `INSERT INTO ${table} (${colList}) ${selectSql}` };
191
191
  }
192
- // OUTPUT needed: multi-statement
192
+ // OUTPUT 필요: multi-statement
193
193
  const outputCols = def.output.columns.map((c) => this.expr.wrap(c)).join(", ");
194
- // When PK is AI: query range via LAST_INSERT_ID() + ROW_COUNT()
194
+ // PK AI 경우: LAST_INSERT_ID() + ROW_COUNT()로 범위 조회
195
195
  if (def.output.aiColName != null) {
196
196
  const aiCol = this.expr.wrap(def.output.aiColName);
197
197
  const statements = [
@@ -199,18 +199,18 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
199
199
  `SET @sd_first_id = LAST_INSERT_ID(), @sd_count = ROW_COUNT()`,
200
200
  `SELECT ${outputCols} FROM ${table} WHERE ${aiCol} >= @sd_first_id AND ${aiCol} < @sd_first_id + @sd_count`,
201
201
  ];
202
- // results[0]=INSERT, results[1]=SET(empty result), results[2]=SELECT
202
+ // results[0]=INSERT, results[1]=SET( 결과), results[2]=SELECT
203
203
  return { sql: statements.join(";\n"), resultSetIndex: 2 };
204
204
  }
205
- // PK is not AI: save PKs to temp table then query
205
+ // PK AI가 아닌 경우: PK를 임시 테이블에 저장 조회
206
206
  const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
207
- // Generate SELECT extracting only PK columns from recordsSelectQuery
207
+ // recordsSelectQuery에서 PK column만 추출하는 SELECT 생성
208
208
  const pkSelectDef = {
209
209
  ...def.recordsSelectQuery,
210
210
  select: Object.fromEntries(def.output.pkColNames.map((pk) => [pk, def.recordsSelectQuery.select[pk]])),
211
211
  };
212
212
  const pkSelectSql = this.select(pkSelectDef).sql;
213
- // SELECT from target using PK from temp table
213
+ // 임시 테이블의 PK 사용하여 대상에서 SELECT
214
214
  const pkConditions = def.output.pkColNames.map((pk) => {
215
215
  const wrappedPk = this.expr.wrap(pk);
216
216
  return `${table}.${wrappedPk} = ${tempTableName}.${wrappedPk}`;
@@ -221,7 +221,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
221
221
  `SELECT ${outputCols} FROM ${table}, ${tempTableName} WHERE ${pkConditions.join(" AND ")}`,
222
222
  `DROP TEMPORARY TABLE ${tempTableName}`,
223
223
  ];
224
- // results[0]=CREATE, results[1]=INSERT, results[2]=SELECT, results[3]=DROP
224
+ // results[0]=CREATE, results[1]=INSERT, results[2]=SELECT, results[3]=DROP 결과
225
225
  return { sql: statements.join(";\n"), resultSetIndex: 2 };
226
226
  }
227
227
  //#endregion
@@ -231,7 +231,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
231
231
  const alias = this.expr.wrap(def.as);
232
232
  // SET
233
233
  const setParts = Object.entries(def.record).map(([col, expr]) => `${alias}.${this.expr.wrap(col)} = ${this.expr.render(expr)}`);
234
- // No OUTPUT needed: simple UPDATE
234
+ // OUTPUT 불필요: 단순 UPDATE
235
235
  if (def.output == null) {
236
236
  let sql = `UPDATE ${table} AS ${alias}`;
237
237
  sql += this.renderJoins(def.joins);
@@ -242,10 +242,10 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
242
242
  }
243
243
  return { sql };
244
244
  }
245
- // OUTPUT needed: multi-statement (save PK to temp table + UPDATE + SELECT + DROP)
245
+ // OUTPUT 필요: multi-statement (PK 임시 테이블에 저장 + UPDATE + SELECT + DROP)
246
246
  const outputCols = def.output.columns.map((c) => `${alias}.${this.expr.wrap(c)}`).join(", ");
247
247
  const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
248
- // Save target PKs to temp table (since WHERE condition may change after UPDATE)
248
+ // 대상 PK를 임시 테이블에 저장 (UPDATE WHERE 조건이 변경될 있으므로)
249
249
  const pkSelectCols = def.output.pkColNames
250
250
  .map((pk) => `${alias}.${this.expr.wrap(pk)} AS ${this.expr.wrap(pk)}`)
251
251
  .join(", ");
@@ -259,13 +259,13 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
259
259
  updateSql += this.renderWhere(def.where);
260
260
  if (def.top != null)
261
261
  updateSql += ` LIMIT ${def.top}`;
262
- // SELECT using PK from temp table (query updated values)
262
+ // 임시 테이블의 PK SELECT (업데이트된 조회)
263
263
  const pkConditions = def.output.pkColNames.map((pk) => {
264
264
  const wrappedPk = this.expr.wrap(pk);
265
265
  return `${alias}.${wrappedPk} = ${tempTableName}.${wrappedPk}`;
266
266
  });
267
267
  const selectSql = `SELECT ${outputCols} FROM ${table} AS ${alias}, ${tempTableName} WHERE ${pkConditions.join(" AND ")}`;
268
- // Drop temp table
268
+ // 임시 테이블 삭제
269
269
  const dropSql = `DROP TEMPORARY TABLE ${tempTableName}`;
270
270
  const statements = [createTempSql, updateSql, selectSql, dropSql];
271
271
  return { sql: statements.join(";\n"), resultSetIndex: 2 };
@@ -275,7 +275,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
275
275
  delete(def) {
276
276
  const table = this.tableName(def.table);
277
277
  const alias = this.expr.wrap(def.as);
278
- // No OUTPUT needed: simple DELETE
278
+ // OUTPUT 불필요: 단순 DELETE
279
279
  if (def.output == null) {
280
280
  let sql = `DELETE ${alias} FROM ${table} AS ${alias}`;
281
281
  sql += this.renderJoins(def.joins);
@@ -285,22 +285,22 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
285
285
  }
286
286
  return { sql };
287
287
  }
288
- // OUTPUT needed: multi-statement (save to temp table before delete + DELETE + SELECT + DROP)
288
+ // OUTPUT 필요: multi-statement (삭제 임시 테이블에 저장 + DELETE + SELECT + DROP)
289
289
  const outputCols = def.output.columns.map((c) => `${alias}.${this.expr.wrap(c)}`).join(", ");
290
290
  const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
291
- // Save to temp table before delete
291
+ // 삭제 임시 테이블에 저장
292
292
  let createTempSql = `CREATE TEMPORARY TABLE ${tempTableName} AS SELECT ${outputCols} FROM ${table} AS ${alias}`;
293
293
  createTempSql += this.renderJoins(def.joins);
294
294
  createTempSql += this.renderWhere(def.where);
295
- // Execute DELETE
295
+ // DELETE 실행
296
296
  let deleteSql = `DELETE ${alias} FROM ${table} AS ${alias}`;
297
297
  deleteSql += this.renderJoins(def.joins);
298
298
  deleteSql += this.renderWhere(def.where);
299
299
  if (def.top != null)
300
300
  deleteSql += ` LIMIT ${def.top}`;
301
- // Return results from temp table
301
+ // 임시 테이블에서 결과 반환
302
302
  const selectSql = `SELECT * FROM ${tempTableName}`;
303
- // Drop temp table
303
+ // 임시 테이블 삭제
304
304
  const dropSql = `DROP TEMPORARY TABLE ${tempTableName}`;
305
305
  const statements = [createTempSql, deleteSql, selectSql, dropSql];
306
306
  return { sql: statements.join(";\n"), resultSetIndex: 2 };
@@ -311,13 +311,13 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
311
311
  const table = this.tableName(def.table);
312
312
  const alias = this.expr.wrap(def.existsSelectQuery.as);
313
313
  const existsQuerySql = this.select(def.existsSelectQuery).sql;
314
- // UPDATE SET part (alias.column format)
314
+ // UPDATE SET 부분 (alias.column 형식)
315
315
  const updateSetParts = Object.entries(def.updateRecord).map(([col, e]) => `${alias}.${this.expr.wrap(col)} = ${this.expr.render(e)}`);
316
- // INSERT part
316
+ // INSERT 부분
317
317
  const insertColumns = Object.keys(def.insertRecord);
318
318
  const insertColList = insertColumns.map((c) => this.expr.wrap(c)).join(", ");
319
319
  const insertValues = insertColumns.map((c) => this.expr.render(def.insertRecord[c])).join(", ");
320
- // Extract WHERE condition (from existsSelectQuery's where)
320
+ // WHERE 조건 추출 (existsSelectQuery where에서)
321
321
  const whereCondition = def.existsSelectQuery.where != null && def.existsSelectQuery.where.length > 0
322
322
  ? this.expr.renderWhere(def.existsSelectQuery.where)
323
323
  : "1=1";
@@ -331,25 +331,25 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
331
331
  ];
332
332
  return { sql: statements.join(";\n") };
333
333
  }
334
- // OUTPUT needed: multi-statement (CREATE TEMP + UPDATE + INSERT + SELECT + DROP)
334
+ // OUTPUT 필요: multi-statement (CREATE TEMP + UPDATE + INSERT + SELECT + DROP)
335
335
  const outputCols = def.output.columns.map((c) => this.expr.wrap(c)).join(", ");
336
336
  const tempTableName = this.expr.wrap("SD_TEMP_" + Uuid.generate().toString().replace(/-/g, ""));
337
- // Save target PKs to temp table (since WHERE condition may change after UPDATE)
337
+ // 대상 PK를 임시 테이블에 저장 (UPDATE WHERE 조건이 변경될 있으므로)
338
338
  const pkSelectCols = def.output.pkColNames.map((pk) => this.expr.wrap(pk)).join(", ");
339
339
  const createTempSql = `CREATE TEMPORARY TABLE ${tempTableName} AS SELECT ${pkSelectCols} FROM ${table} AS ${alias} WHERE ${whereCondition}`;
340
- // UPDATE (update if exists)
340
+ // UPDATE (존재하면 업데이트)
341
341
  const updateSql = `UPDATE ${table} AS ${alias} SET ${updateSetParts.join(", ")} WHERE ${whereCondition}`;
342
- // INSERT (NOT EXISTS Pattern)
342
+ // INSERT (NOT EXISTS 패턴)
343
343
  const insertSql = `INSERT INTO ${table} (${insertColList}) SELECT ${insertValues} WHERE NOT EXISTS (${existsQuerySql})`;
344
- // SELECT: query UPDATE result or INSERT result (merged with UNION ALL)
345
- // UPDATE case: query by PK from temp table
344
+ // SELECT: UPDATE 결과 또는 INSERT 결과 조회 (UNION ALL로 병합)
345
+ // UPDATE 경우: 임시 테이블의 PK 조회
346
346
  const output = def.output;
347
347
  const updatePkConditions = output.pkColNames.map((pk) => {
348
348
  const wrappedPk = this.expr.wrap(pk);
349
349
  return `${table}.${wrappedPk} IN (SELECT ${wrappedPk} FROM ${tempTableName})`;
350
350
  });
351
351
  const selectUpdateSql = `SELECT ${outputCols} FROM ${table} WHERE ${updatePkConditions.join(" AND ")}`;
352
- // INSERT case: query by PK from insertRecord (LAST_INSERT_ID() for AI, only when temp table is empty)
352
+ // INSERT 경우: insertRecord의 PK 조회 (AI에는 LAST_INSERT_ID() 사용, 임시 테이블이 비어있을 때만)
353
353
  const insertPkConditions = output.pkColNames.map((pk) => {
354
354
  const wrappedPk = this.expr.wrap(pk);
355
355
  if (pk === output.aiColName) {
@@ -360,7 +360,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
360
360
  });
361
361
  const selectInsertSql = `SELECT ${outputCols} FROM ${table} WHERE ${insertPkConditions.join(" AND ")} AND NOT EXISTS (SELECT 1 FROM ${tempTableName})`;
362
362
  const selectSql = `${selectUpdateSql} UNION ALL ${selectInsertSql}`;
363
- // DROP
363
+ // 임시 테이블 삭제
364
364
  const dropSql = `DROP TEMPORARY TABLE ${tempTableName}`;
365
365
  const statements = [createTempSql, updateSql, insertSql, selectSql, dropSql];
366
366
  return { sql: statements.join(";\n"), resultSetIndex: 3 };
@@ -371,7 +371,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
371
371
  const table = this.tableName(def.table);
372
372
  const colDefs = def.columns.map((col) => {
373
373
  let colSql = `${this.expr.wrap(col.name)} ${this.expr.renderDataType(col.dataType)}`;
374
- // nullable: true → NULL, else → NOT NULL
374
+ // nullable: true → NULL, 아니면 → NOT NULL
375
375
  if (col.nullable === true) {
376
376
  colSql += " NULL";
377
377
  }
@@ -386,7 +386,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
386
386
  }
387
387
  return colSql;
388
388
  });
389
- // Primary Key with CONSTRAINT name
389
+ // CONSTRAINT 이름이 포함된 Primary Key
390
390
  if (def.primaryKey != null && def.primaryKey.length > 0) {
391
391
  const pkCols = def.primaryKey.map((c) => this.expr.wrap(c)).join(", ");
392
392
  const pkName = this.expr.wrap(`PK_${def.table.name}`);
@@ -401,7 +401,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
401
401
  return { sql: `RENAME TABLE ${this.tableName(def.table)} TO ${this.expr.wrap(def.newName)}` };
402
402
  }
403
403
  truncate(def) {
404
- // MySQL: TRUNCATE automatically resets AUTO_INCREMENT
404
+ // MySQL: TRUNCATE AUTO_INCREMENT를 자동으로 초기화
405
405
  return { sql: `TRUNCATE TABLE ${this.tableName(def.table)}` };
406
406
  }
407
407
  //#endregion
@@ -451,7 +451,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
451
451
  }
452
452
  renameColumn(def) {
453
453
  const table = this.tableName(def.table);
454
- // MySQL 8.0+: RENAME COLUMN supported
454
+ // MySQL 8.0+: RENAME COLUMN 지원
455
455
  return {
456
456
  sql: `ALTER TABLE ${table} RENAME COLUMN ${this.expr.wrap(def.column)} TO ${this.expr.wrap(def.newName)}`,
457
457
  };
@@ -472,7 +472,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
472
472
  const fkCols = fk.fkColumns.map((c) => this.expr.wrap(c)).join(", ");
473
473
  const targetTable = this.tableName(fk.targetTable);
474
474
  const targetCols = fk.targetPkColumns.map((c) => this.expr.wrap(c)).join(", ");
475
- // MySQL automatically creates index when adding FK, so no separate index needed
475
+ // MySQL FK 추가 인덱스를 자동 생성하므로 별도 인덱스 불필요
476
476
  return {
477
477
  sql: `ALTER TABLE ${table} ADD CONSTRAINT ${this.expr.wrap(fk.name)} FOREIGN KEY (${fkCols}) REFERENCES ${targetTable} (${targetCols})`,
478
478
  };
@@ -504,7 +504,7 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
504
504
  }
505
505
  createProc(def) {
506
506
  const proc = this.tableName(def.procedure);
507
- // Process params
507
+ // 파라미터 처리
508
508
  const paramList = def.params
509
509
  ?.map((p) => {
510
510
  let sql = `IN ${this.expr.wrap(p.name)} ${this.expr.renderDataType(p.dataType)}`;
@@ -539,8 +539,8 @@ export class MysqlQueryBuilder extends QueryBuilderBase {
539
539
  //#endregion
540
540
  //#region ========== Utils ==========
541
541
  clearSchema(def) {
542
- // MySQL: DROP all tables (in MySQL, database and schema are synonymous)
543
- // Query table list from information_schema then DROP
542
+ // MySQL: 모든 테이블 삭제 (MySQL에서 database schema 동의어)
543
+ // information_schema에서 테이블 목록 조회 DROP
544
544
  // SQL 인젝션 방지: 식별자 유효성 검사
545
545
  if (!/^[a-zA-Z0-9_]+$/.test(def.database)) {
546
546
  throw new Error(`잘못된 데이터베이스 이름: ${def.database}`);
@@ -559,13 +559,13 @@ SET FOREIGN_KEY_CHECKS = 1`,
559
559
  };
560
560
  }
561
561
  schemaExists(def) {
562
- // MySQL: database and schema are synonymous
562
+ // MySQL: database schema 동의어
563
563
  const dbName = this.expr.escapeString(def.database);
564
564
  return {
565
565
  sql: `SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${dbName}'`,
566
566
  };
567
567
  }
568
- /** MySQL only supports global setting (table parameter is ignored) */
568
+ /** MySQL 전역 설정만 지원 (table 파라미터 무시) */
569
569
  switchFk(def) {
570
570
  return def.enabled
571
571
  ? { sql: "SET FOREIGN_KEY_CHECKS = 1" }
@@ -1 +1 @@
1
- {"version":3,"file":"mysql-query-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql-query-builder.js","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\mysql\\mysql-query-builder.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare class PostgresqlExprRenderer extends ExprRendererBase {
11
11
  escapeString(value: string): string;
12
12
  /** 값 이스케이프 */
13
13
  escapeValue(value: unknown): string;
14
- /** DataType → SQL type */
14
+ /** DataType → SQL 타입 변환 */
15
15
  renderDataType(dataType: DataType): string;
16
16
  protected column(expr: ExprColumn): string;
17
17
  protected value(expr: ExprValue): string;
@@ -1 +1 @@
1
- {"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-expr-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgresql-expr-renderer.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\query-builder\\postgresql\\postgresql-expr-renderer.ts"],"names":[],"mappings":"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"}