sonamu 0.2.31 → 0.2.32

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.
package/dist/bin/cli.js CHANGED
@@ -324,7 +324,7 @@ function ui() {
324
324
  return __awaiter(this, void 0, void 0, function* () {
325
325
  try {
326
326
  const sonamuUI = yield Promise.resolve(`${"@sonamu-kit/ui"}`).then(s => __importStar(require(s)));
327
- sonamuUI.startServers(api_1.Sonamu.appRootPath);
327
+ sonamuUI.startServers(api_1.Sonamu.apiRootPath);
328
328
  }
329
329
  catch (e) {
330
330
  if (e instanceof Error && e.message.includes("isn't declared")) {
@@ -0,0 +1,15 @@
1
+ import { Knex } from "knex";
2
+ export type RowWithId<Id extends string> = {
3
+ [key in Id]: any;
4
+ } & Record<string, any>;
5
+ /**
6
+ * Batch update rows in a table. Technically its a patch since it only updates the specified columns. Any omitted columns will not be affected
7
+ * @param knex
8
+ * @param tableName
9
+ * @param id
10
+ * @param rows
11
+ * @param chunkSize
12
+ * @param trx
13
+ */
14
+ export declare function batchUpdate<Id extends string>(knex: Knex, tableName: string, id: Id, rows: RowWithId<Id>[], chunkSize?: number, trx?: Knex.Transaction | null): Promise<void>;
15
+ //# sourceMappingURL=_batch_update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_batch_update.d.ts","sourceRoot":"","sources":["../../src/database/_batch_update.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,MAAM,IAAI;KACxC,GAAG,IAAI,EAAE,GAAG,GAAG;CACjB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAExB;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,EAAE,SAAS,MAAM,EACjD,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EACrB,SAAS,SAAK,EACd,GAAG,GAAE,IAAI,CAAC,WAAW,GAAG,IAAW,iBA0BpC"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ /*
3
+ 아래의 링크에서 참고해서 가져온 소스코드
4
+ https://github.com/knex/knex/issues/5716
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.batchUpdate = void 0;
17
+ /**
18
+ * Batch update rows in a table. Technically its a patch since it only updates the specified columns. Any omitted columns will not be affected
19
+ * @param knex
20
+ * @param tableName
21
+ * @param id
22
+ * @param rows
23
+ * @param chunkSize
24
+ * @param trx
25
+ */
26
+ function batchUpdate(knex, tableName, id, rows, chunkSize = 50, trx = null) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const chunks = [];
29
+ for (let i = 0; i < rows.length; i += chunkSize) {
30
+ chunks.push(rows.slice(i, i + chunkSize));
31
+ }
32
+ const executeUpdate = (chunk, transaction) => __awaiter(this, void 0, void 0, function* () {
33
+ const sql = generateBatchUpdateSQL(knex, tableName, chunk, id);
34
+ return knex.raw(sql).transacting(transaction);
35
+ });
36
+ if (trx) {
37
+ for (const chunk of chunks) {
38
+ yield executeUpdate(chunk, trx);
39
+ }
40
+ }
41
+ else {
42
+ yield knex.transaction((newTrx) => __awaiter(this, void 0, void 0, function* () {
43
+ for (const chunk of chunks) {
44
+ yield executeUpdate(chunk, newTrx);
45
+ }
46
+ }));
47
+ }
48
+ });
49
+ }
50
+ exports.batchUpdate = batchUpdate;
51
+ /**
52
+ * Generate a set of unique keys in a data array
53
+ *
54
+ * Example:
55
+ * [ { a: 1, b: 2 }, { a: 3, c: 4 } ] => Set([ "a", "b", "c" ])
56
+ * @param data
57
+ */
58
+ function generateKeySetFromData(data) {
59
+ const keySet = new Set();
60
+ for (const row of data) {
61
+ for (const key of Object.keys(row)) {
62
+ keySet.add(key);
63
+ }
64
+ }
65
+ return keySet;
66
+ }
67
+ function generateBatchUpdateSQL(knex, tableName, data, identifier) {
68
+ const keySet = generateKeySetFromData(data);
69
+ const bindings = [];
70
+ const cases = [];
71
+ for (const key of keySet) {
72
+ if (key === identifier)
73
+ continue;
74
+ const rows = [];
75
+ for (const row of data) {
76
+ if (Object.hasOwnProperty.call(row, key)) {
77
+ rows.push(`WHEN \`${identifier}\` = ? THEN ?`);
78
+ bindings.push(row[identifier], row[key]);
79
+ }
80
+ }
81
+ const whenThen = rows.join(" ");
82
+ cases.push(`\`${key}\` = CASE ${whenThen} ELSE \`${key}\` END`);
83
+ }
84
+ const whereInIds = data.map((row) => row[identifier]);
85
+ const whereInPlaceholders = whereInIds.map(() => "?").join(", ");
86
+ const sql = knex.raw(`UPDATE \`${tableName}\` SET ${cases.join(", ")} WHERE ${identifier} IN (${whereInPlaceholders})`, [...bindings, ...whereInIds]);
87
+ return sql.toString();
88
+ }
89
+ //# sourceMappingURL=_batch_update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_batch_update.js","sourceRoot":"","sources":["../../src/database/_batch_update.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upsert-builder.d.ts","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,aAAa,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACtD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AACF,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAOrD;AAED,qBAAa,aAAa;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;IAK/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAsBtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,QAAQ,CAAC,CAAC,SAAS,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;SACF,GAAG,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,GACL,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO;KACZ,GACA,KAAK;IA4EF,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAGvD,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3D,cAAc,CAClB,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC;IAoGd,WAAW,CACf,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,IAAI,CAAC;CAuBjB"}
1
+ {"version":3,"file":"upsert-builder.d.ts","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,KAAK,SAAS,GAAG;IACf,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,aAAa,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACtD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AACF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AACF,wBAAgB,UAAU,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,KAAK,CAOrD;AAED,qBAAa,aAAa;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;;IAK/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAsBtC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC,QAAQ,CAAC,CAAC,SAAS,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE;SACF,GAAG,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,GACL,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO;KACZ,GACA,KAAK;IA4EF,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAGvD,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3D,cAAc,CAClB,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC;IAoGd,WAAW,CACf,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,IAAI,CAAC;CA0BjB"}
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -31,13 +8,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32
9
  });
33
10
  };
34
- var __asyncValues = (this && this.__asyncValues) || function (o) {
35
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
36
- var m = o[Symbol.asyncIterator], i;
37
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
38
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
39
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
40
- };
41
11
  var __rest = (this && this.__rest) || function (s, e) {
42
12
  var t = {};
43
13
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -52,9 +22,10 @@ var __rest = (this && this.__rest) || function (s, e) {
52
22
  Object.defineProperty(exports, "__esModule", { value: true });
53
23
  exports.UpsertBuilder = exports.isRefField = void 0;
54
24
  const uuid_1 = require("uuid");
55
- const lodash_1 = __importStar(require("lodash"));
25
+ const lodash_1 = require("lodash");
56
26
  const entity_manager_1 = require("../entity/entity-manager");
57
27
  const utils_1 = require("../utils/utils");
28
+ const _batch_update_1 = require("./_batch_update");
58
29
  function isRefField(field) {
59
30
  return (field !== undefined &&
60
31
  field !== null &&
@@ -208,11 +179,11 @@ class UpsertBuilder {
208
179
  references: [],
209
180
  refTables: [],
210
181
  });
211
- const extractFields = lodash_1.default.uniq(references).map((reference) => reference.split(".")[1]);
182
+ const extractFields = (0, lodash_1.uniq)(references).map((reference) => reference.split(".")[1]);
212
183
  // UUID 기준으로 id 추출
213
184
  const uuids = table.rows.map((row) => row.uuid);
214
185
  const upsertedRows = yield wdb(tableName)
215
- .select(lodash_1.default.uniq(["uuid", "id", ...extractFields]))
186
+ .select((0, lodash_1.uniq)(["uuid", "id", ...extractFields]))
216
187
  .whereIn("uuid", uuids);
217
188
  const uuidMap = new Map(upsertedRows.map((row) => [row.uuid, row]));
218
189
  // 해당 테이블 참조를 실제 밸류로 변경
@@ -242,10 +213,11 @@ class UpsertBuilder {
242
213
  });
243
214
  }
244
215
  updateBatch(wdb, tableName, options) {
245
- var _a, e_1, _b, _c;
216
+ var _a;
246
217
  return __awaiter(this, void 0, void 0, function* () {
247
218
  options = (0, lodash_1.defaults)(options, {
248
219
  chunkSize: 500,
220
+ where: "id",
249
221
  });
250
222
  if (this.hasTable(tableName) === false) {
251
223
  return;
@@ -254,26 +226,11 @@ class UpsertBuilder {
254
226
  if (table.rows.length === 0) {
255
227
  return;
256
228
  }
257
- const chunks = (0, lodash_1.chunk)(table.rows, options.chunkSize);
258
- try {
259
- for (var _d = true, chunks_1 = __asyncValues(chunks), chunks_1_1; chunks_1_1 = yield chunks_1.next(), _a = chunks_1_1.done, !_a; _d = true) {
260
- _c = chunks_1_1.value;
261
- _d = false;
262
- const chunk = _c;
263
- yield Promise.all(chunk.map((_e) => __awaiter(this, void 0, void 0, function* () {
264
- var { id } = _e, row = __rest(_e, ["id"]);
265
- const { uuid } = row, update = __rest(row, ["uuid"]);
266
- return yield wdb(tableName).where("id", id).update(update);
267
- })));
268
- }
269
- }
270
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
271
- finally {
272
- try {
273
- if (!_d && !_a && (_b = chunks_1.return)) yield _b.call(chunks_1);
274
- }
275
- finally { if (e_1) throw e_1.error; }
276
- }
229
+ const rows = table.rows.map((_row) => {
230
+ const { uuid } = _row, row = __rest(_row, ["uuid"]);
231
+ return row;
232
+ });
233
+ yield (0, _batch_update_1.batchUpdate)(wdb, tableName, (_a = options.where) !== null && _a !== void 0 ? _a : "id", rows, options.chunkSize);
277
234
  });
278
235
  }
279
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upsert-builder.js","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upsert-builder.js","sourceRoot":"","sources":["../../src/database/upsert-builder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAoC;AACpC,mCAAiD;AAEjD,6DAAyD;AACzD,0CAA6C;AAC7C,mDAAyD;AAazD,SAAgB,UAAU,CAAC,KAAU;IACnC,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,EAAE,KAAK,SAAS;QACtB,KAAK,CAAC,IAAI,KAAK,SAAS,CACzB,CAAC;AACJ,CAAC;AAPD,gCAOC;AAED,MAAa,aAAa;IAExB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,SAAiB;;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;gBACtB,IAAI;oBACF,OAAO,8BAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;iBAC9C;gBAAC,WAAM;oBACN,OAAO,IAAI,CAAC;iBACb;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;gBACzB,UAAU,EAAE,IAAI,GAAG,EAAE;gBACrB,IAAI,EAAE,EAAE;gBACR,aAAa,EAAE,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,mCAAI,EAAE;gBAC7C,UAAU,EAAE,IAAI,GAAG,EAAkB;aACtC,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,SAAiB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CACN,SAAiB,EACjB,GAUC;;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEvC,gCAAgC;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa;aACnC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChB,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO;iBACpC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACd,MAAM,GAAG,GAAG,GAAG,CAAC,MAA0B,CAAC,CAAC;gBAC5C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;oBACnB,OAAO,GAAG,CAAC,IAAI,CAAC;iBACjB;qBAAM;oBACL,OAAO,GAAG,CAAC,MAA0B,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,mBAAW,CAAC,CAAC,CAAC,8BAA8B;YAEtD,yBAAyB;YACzB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC;aACb;YACD,OAAO,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC,CAAC;aACD,MAAM,CAAC,mBAAW,CAAC,CAAC;QAEvB,aAAa;QACb,MAAM,IAAI,GAAW,CAAC,GAAG,EAAE;YACzB,4BAA4B;YAC5B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;oBAClC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;wBACnC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAC,gCAAgC;qBAC1E;iBACF;aACF;YAED,gBAAgB;YAChB,OAAO,IAAA,SAAM,GAAE,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC;QAEL,4BAA4B;QAC5B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aACvC;SACF;QAED,wDAAwD;QACxD,qBAAqB;QACrB,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAA0B,CAAC,CAAC;YAEjD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACxB,MAAA,QAAQ,CAAC,GAAG,oCAAZ,QAAQ,CAAC,GAAG,GAAK,IAAI,EAAC;gBACtB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACvD,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;aACtB;iBAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBACvC,uBAAuB;gBACvB,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACjE;iBAAM;gBACL,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;aACtB;YACD,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAS,CAAC,CAAC;QAEd,KAAK,CAAC,IAAI,CAAC,IAAI,iBACb,IAAI,IACD,GAAG,EACN,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAC,GAAyB,CAAC,IAAI,mCAAI,IAAI;SAC9C,CAAC;IACJ,CAAC;IAEK,MAAM,CAAC,GAAS,EAAE,SAAiB;;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;KAAA;IACK,UAAU,CAAC,GAAS,EAAE,SAAiB;;YAC3C,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC;KAAA;IAEK,cAAc,CAClB,GAAS,EACT,SAAiB,EACjB,IAAyB;;YAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;gBACtC,OAAO,EAAE,CAAC;aACX;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,eAAe,SAAS,aAAa,CAAC,CAAC;aACxD;iBAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,uBAAuB,CAAC,CAAC;aACtD;YAED,IACE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,CAC3D,CACF,EACD;gBACA,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,oBAAoB,CAAC,CAAC;aACnD;YAED,sBAAsB;YACtB,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CACzC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,QAAQ,CACb,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;YAEjC,6BAA6B;YAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACrB,MAAM,CAAC,CAAC;aACT;iBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;gBAC5B,MAAM,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChE;YAED,oCAAoC;YACpC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAC9D,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;gBACf,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CACnE,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAC9B,CAAC;gBACF,IAAI,SAAS,EAAE;oBACb,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB;gBAED,OAAO,CAAC,CAAC;YACX,CAAC,EACD;gBACE,UAAU,EAAE,EAAc;gBAC1B,SAAS,EAAE,EAAiB;aAC7B,CACF,CAAC;YAEF,MAAM,aAAa,GAAG,IAAA,aAAI,EAAC,UAAU,CAAC,CAAC,GAAG,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;YAEF,kBAAkB;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC;iBACtC,MAAM,CAAC,IAAA,aAAI,EAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;iBAC9C,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAChD,CAAC;YAEF,uBAAuB;YACvB,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAClC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;;wBAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;wBACtB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;4BAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,MAAM,KAAK,SAAS,EAAE;gCACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCACpB,MAAM,IAAI,KAAK,CACb,gBAAgB,IAAI,CAAC,IAAI,UAAU,SAAS,EAAE,CAC/C,CAAC;6BACH;4BACD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAA,IAAI,CAAC,GAAG,mCAAI,IAAI,CAAC,CAAC;yBACrC;oBACH,CAAC,CAAC,CAAC;oBACH,OAAO,GAAG,CAAC;gBACb,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAE9D,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC;aAChC;YAED,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAEK,WAAW,CACf,GAAS,EACT,SAAiB,EACjB,OAGC;;;YAED,OAAO,GAAG,IAAA,iBAAQ,EAAC,OAAO,EAAE;gBAC1B,SAAS,EAAE,GAAG;gBACd,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE;gBACtC,OAAO;aACR;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3B,OAAO;aACR;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnC,MAAM,EAAE,IAAI,KAAa,IAAI,EAAZ,GAAG,UAAK,IAAI,EAAvB,QAAgB,CAAO,CAAC;gBAC9B,OAAO,GAAwB,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,MAAM,IAAA,2BAAW,EACf,GAAG,EACH,SAAS,EACT,MAAA,OAAO,CAAC,KAAK,mCAAI,IAAI,EACrB,IAAI,EACJ,OAAO,CAAC,SAAS,CAClB,CAAC;;KACH;CACF;AAzQD,sCAyQC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
package/src/bin/cli.ts CHANGED
@@ -310,7 +310,7 @@ async function ui() {
310
310
  const sonamuUI: {
311
311
  startServers: (appRootPath: string) => void;
312
312
  } = await import("@sonamu-kit/ui" as string);
313
- sonamuUI.startServers(Sonamu.appRootPath);
313
+ sonamuUI.startServers(Sonamu.apiRootPath);
314
314
  } catch (e: unknown) {
315
315
  if (e instanceof Error && e.message.includes("isn't declared")) {
316
316
  console.log(`You need to install ${chalk.blue(`@sonamu-kit/ui`)} first.`);
@@ -0,0 +1,106 @@
1
+ /*
2
+ 아래의 링크에서 참고해서 가져온 소스코드
3
+ https://github.com/knex/knex/issues/5716
4
+ */
5
+
6
+ import { Knex } from "knex";
7
+
8
+ export type RowWithId<Id extends string> = {
9
+ [key in Id]: any;
10
+ } & Record<string, any>;
11
+
12
+ /**
13
+ * Batch update rows in a table. Technically its a patch since it only updates the specified columns. Any omitted columns will not be affected
14
+ * @param knex
15
+ * @param tableName
16
+ * @param id
17
+ * @param rows
18
+ * @param chunkSize
19
+ * @param trx
20
+ */
21
+ export async function batchUpdate<Id extends string>(
22
+ knex: Knex,
23
+ tableName: string,
24
+ id: Id,
25
+ rows: RowWithId<Id>[],
26
+ chunkSize = 50,
27
+ trx: Knex.Transaction | null = null
28
+ ) {
29
+ const chunks: RowWithId<Id>[][] = [];
30
+ for (let i = 0; i < rows.length; i += chunkSize) {
31
+ chunks.push(rows.slice(i, i + chunkSize));
32
+ }
33
+
34
+ const executeUpdate = async (
35
+ chunk: RowWithId<Id>[],
36
+ transaction: Knex.Transaction
37
+ ) => {
38
+ const sql = generateBatchUpdateSQL(knex, tableName, chunk, id);
39
+ return knex.raw(sql).transacting(transaction);
40
+ };
41
+
42
+ if (trx) {
43
+ for (const chunk of chunks) {
44
+ await executeUpdate(chunk, trx);
45
+ }
46
+ } else {
47
+ await knex.transaction(async (newTrx) => {
48
+ for (const chunk of chunks) {
49
+ await executeUpdate(chunk, newTrx);
50
+ }
51
+ });
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Generate a set of unique keys in a data array
57
+ *
58
+ * Example:
59
+ * [ { a: 1, b: 2 }, { a: 3, c: 4 } ] => Set([ "a", "b", "c" ])
60
+ * @param data
61
+ */
62
+ function generateKeySetFromData(data: Record<string, any>[]) {
63
+ const keySet: Set<string> = new Set();
64
+ for (const row of data) {
65
+ for (const key of Object.keys(row)) {
66
+ keySet.add(key);
67
+ }
68
+ }
69
+ return keySet;
70
+ }
71
+
72
+ function generateBatchUpdateSQL<Id extends string>(
73
+ knex: Knex,
74
+ tableName: string,
75
+ data: Record<string, any>[],
76
+ identifier: Id
77
+ ) {
78
+ const keySet = generateKeySetFromData(data);
79
+ const bindings = [];
80
+
81
+ const cases = [];
82
+ for (const key of keySet) {
83
+ if (key === identifier) continue;
84
+
85
+ const rows = [];
86
+ for (const row of data) {
87
+ if (Object.hasOwnProperty.call(row, key)) {
88
+ rows.push(`WHEN \`${identifier}\` = ? THEN ?`);
89
+ bindings.push(row[identifier], row[key]);
90
+ }
91
+ }
92
+
93
+ const whenThen = rows.join(" ");
94
+ cases.push(`\`${key}\` = CASE ${whenThen} ELSE \`${key}\` END`);
95
+ }
96
+
97
+ const whereInIds = data.map((row) => row[identifier]);
98
+ const whereInPlaceholders = whereInIds.map(() => "?").join(", ");
99
+ const sql = knex.raw(
100
+ `UPDATE \`${tableName}\` SET ${cases.join(
101
+ ", "
102
+ )} WHERE ${identifier} IN (${whereInPlaceholders})`,
103
+ [...bindings, ...whereInIds]
104
+ );
105
+ return sql.toString();
106
+ }
@@ -1,8 +1,9 @@
1
1
  import { v4 as uuidv4 } from "uuid";
2
- import _, { chunk, defaults, groupBy } from "lodash";
2
+ import { defaults, groupBy, uniq } from "lodash";
3
3
  import { Knex } from "knex";
4
4
  import { EntityManager } from "../entity/entity-manager";
5
5
  import { nonNullable } from "../utils/utils";
6
+ import { RowWithId, batchUpdate } from "./_batch_update";
6
7
 
7
8
  type TableData = {
8
9
  references: Set<string>;
@@ -213,14 +214,14 @@ export class UpsertBuilder {
213
214
  }
214
215
  );
215
216
 
216
- const extractFields = _.uniq(references).map(
217
+ const extractFields = uniq(references).map(
217
218
  (reference) => reference.split(".")[1]
218
219
  );
219
220
 
220
221
  // UUID 기준으로 id 추출
221
222
  const uuids = table.rows.map((row) => row.uuid);
222
223
  const upsertedRows = await wdb(tableName)
223
- .select(_.uniq(["uuid", "id", ...extractFields]))
224
+ .select(uniq(["uuid", "id", ...extractFields]))
224
225
  .whereIn("uuid", uuids);
225
226
  const uuidMap = new Map<string, any>(
226
227
  upsertedRows.map((row: any) => [row.uuid, row])
@@ -266,6 +267,7 @@ export class UpsertBuilder {
266
267
  ): Promise<void> {
267
268
  options = defaults(options, {
268
269
  chunkSize: 500,
270
+ where: "id",
269
271
  });
270
272
 
271
273
  if (this.hasTable(tableName) === false) {
@@ -276,14 +278,16 @@ export class UpsertBuilder {
276
278
  return;
277
279
  }
278
280
 
279
- const chunks = chunk(table.rows, options.chunkSize);
280
- for await (const chunk of chunks) {
281
- await Promise.all(
282
- chunk.map(async ({ id, ...row }) => {
283
- const { uuid, ...update } = row;
284
- return await wdb(tableName).where("id", id).update(update);
285
- })
286
- );
287
- }
281
+ const rows = table.rows.map((_row) => {
282
+ const { uuid, ...row } = _row;
283
+ return row as RowWithId<string>;
284
+ });
285
+ await batchUpdate(
286
+ wdb,
287
+ tableName,
288
+ options.where ?? "id",
289
+ rows,
290
+ options.chunkSize
291
+ );
288
292
  }
289
293
  }