sonamu 0.0.4 → 0.0.5

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.
@@ -4,7 +4,6 @@ import { IncomingMessage, Server, ServerResponse } from "http";
4
4
  import { Context } from "./context";
5
5
  export declare type SonamuInitConfig = {
6
6
  prefix: string;
7
- appRootPath: string;
8
7
  syncTargets: string[];
9
8
  contextProvider: (defaultContext: Pick<Context, "headers" | "reply">, request: FastifyRequest, reply: FastifyReply) => Context;
10
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,EAClD,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;CACd,CAAC;AACF,wBAAsB,IAAI,CACxB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAChE,MAAM,EAAE,gBAAgB,iBAgGzB;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,oBAAY,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,EAClD,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;CACd,CAAC;AACF,wBAAsB,IAAI,CACxB,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAChE,MAAM,EAAE,gBAAgB,iBAiGzB;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAE7C"}
package/dist/api/init.js CHANGED
@@ -24,6 +24,7 @@ const syncer_1 = require("../syncer/syncer");
24
24
  const controller_1 = require("../utils/controller");
25
25
  const db_1 = require("../database/db");
26
26
  const base_model_1 = require("../database/base-model");
27
+ const utils_1 = require("../utils/utils");
27
28
  function init(server, config) {
28
29
  return __awaiter(this, void 0, void 0, function* () {
29
30
  // 전체 라우팅 리스트
@@ -35,8 +36,9 @@ function init(server, config) {
35
36
  return "ok";
36
37
  }));
37
38
  // Syncer
39
+ const appRootPath = yield (0, utils_1.findAppRootPath)();
38
40
  const syncer = syncer_1.Syncer.getInstance({
39
- appRootPath: config.appRootPath,
41
+ appRootPath: appRootPath,
40
42
  targets: config.syncTargets,
41
43
  });
42
44
  // DB 설정파일 확인
@@ -45,9 +47,9 @@ function init(server, config) {
45
47
  // Autoload: SMD / Models / Types / APIs
46
48
  console.time(chalk_1.default.cyan("autoload&sync:"));
47
49
  yield smd_manager_1.SMDManager.autoload();
48
- const importedModels = yield syncer.autoloadModels(config.appRootPath);
49
- const references = yield syncer.autoloadTypes(config.appRootPath);
50
- const apis = yield syncer.autoloadApis(config.appRootPath);
50
+ const importedModels = yield syncer.autoloadModels(appRootPath);
51
+ const references = yield syncer.autoloadTypes(appRootPath);
52
+ const apis = yield syncer.autoloadApis(appRootPath);
51
53
  if ((0, controller_1.isLocal)()) {
52
54
  yield syncer.sync();
53
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,6BAA+B;AAC/B,uDAAwD;AAExD,+DAAkE;AAClE,oDAAgD;AAChD,0CAA8C;AAC9C,0CAA8C;AAC9C,6CAA0C;AAC1C,oDAA8C;AAC9C,uCAAoC;AACpC,uDAAmD;AAYnD,SAAsB,IAAI,CACxB,MAAgE,EAChE,MAAwB;;QAExB,aAAa;QACb,MAAM,CAAC,GAAG,CACR,GAAG,MAAM,CAAC,MAAM,SAAS,EACzB,CAAO,QAAQ,EAAE,MAAM,EAAgB,EAAE;YACvC,OAAO,IAAI,CAAC;QACd,CAAC,CAAA,CACF,CAAC;QAEF,kBAAkB;QAClB,MAAM,CAAC,GAAG,CACR,GAAG,MAAM,CAAC,MAAM,cAAc,EAC9B,CAAO,QAAQ,EAAE,MAAM,EAAmB,EAAE;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC,CAAA,CACF,CAAC;QAEF,SAAS;QACT,MAAM,MAAM,GAAG,eAAM,CAAC,WAAW,CAAC;YAChC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,WAAW;SAC5B,CAAC,CAAC;QAEH,aAAa;QACb,MAAM,OAAE,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAE9C,wCAAwC;QACxC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3C,MAAM,wBAAU,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,IAAA,oBAAO,GAAE,EAAE;YACb,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;SACrB;QACD,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE9C,aAAa;QACb,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,QAAQ;YACR,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;gBAC/C,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;aACpD;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5C,sBAAsB;YACtB,MAAM,OAAO,GAAG,IAAA,qCAAmB,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAErD,QAAQ;YACR,MAAM,CAAC,KAAK,CAAC;gBACX,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,UAAW;gBAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI;gBAC7B,OAAO,EAAE,CAAO,OAAO,EAAE,KAAK,EAAoB,EAAE;;oBAClD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;oBAClE,IAAI,OAEH,CAAC;oBACF,IAAI;wBACF,OAAO,GAAG,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAA,OAAO,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC,CAAC;qBAC9D;oBAAC,OAAO,CAAC,EAAE;wBACV,IAAI,CAAC,YAAY,cAAQ,EAAE;4BACzB,mEAAmE;4BACnE,MAAM,IAAI,mCAAmB,CAC3B,GAAI,CAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EACtC,CAAC,CAAC,MAAM,CACT,CAAC;yBACH;6BAAM;4BACL,MAAM,CAAC,CAAC;yBACT;qBACF;oBAED,MAAM,MAAM,GAAG,MAAO,KAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CACvD,KAAK,EACL,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3B,cAAc;wBACd,IAAI,oBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;4BACtC,OAAO,MAAM,CAAC,eAAe,CAC3B;gCACE,OAAO,EAAE,OAAO,CAAC,OAAO;gCACxB,KAAK;6BACN,EACD,OAAO,EACP,KAAK,CACN,CAAC;yBACH;6BAAM;4BACL,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;yBAC5B;oBACH,CAAC,CAAC,CACH,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,MAAA,GAAG,CAAC,OAAO,CAAC,WAAW,mCAAI,kBAAkB,CAAC,CAAC;oBAC1D,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAA;aACF,CAAC,CAAC,CAAC,mBAAmB;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAlGD,oBAkGC;AAED,SAAsB,OAAO;;QAC3B,MAAM,sBAAS,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;CAAA;AAFD,0BAEC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/api/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKlC,oBAAY,cAAc,GAAG;IAC3B,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC;IAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;IAC3B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;IAC5B,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;CAC/B,CAAC;AAEF,cAAM,OAAO;IACX,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAE5B,YAAY;IAgBlB,WAAW,IAAI,cAAc;IAQ7B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAmCtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAa/B;AACD,eAAO,MAAM,EAAE,SAAgB,CAAC"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKlC,oBAAY,cAAc,GAAG;IAC3B,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC;IAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;IAC3B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;IAC5B,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;CAC/B,CAAC;AAEF,cAAM,OAAO;IACX,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,CAAiB;IAE5B,YAAY,IAAI,OAAO,CAAC,cAAc,CAAC;IAoB7C,WAAW,IAAI,cAAc;IAQ7B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAmCtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAU/B;AACD,eAAO,MAAM,EAAE,SAAgB,CAAC"}
@@ -39,11 +39,14 @@ exports.DB = void 0;
39
39
  const knex_1 = __importDefault(require("knex"));
40
40
  const path_1 = __importDefault(require("path"));
41
41
  const so_exceptions_1 = require("../exceptions/so-exceptions");
42
- const syncer_1 = require("../syncer");
42
+ const utils_1 = require("../utils/utils");
43
43
  class DBClass {
44
44
  readKnexfile() {
45
45
  return __awaiter(this, void 0, void 0, function* () {
46
- const configPath = path_1.default.join(syncer_1.Syncer.getInstance().config.appRootPath, "/api/dist/configs/db");
46
+ if (this.knexfile) {
47
+ return this.knexfile;
48
+ }
49
+ const configPath = path_1.default.join(yield (0, utils_1.findAppRootPath)(), "/api/dist/configs/db");
47
50
  try {
48
51
  const knexfileModule = yield Promise.resolve().then(() => __importStar(require(configPath)));
49
52
  this.knexfile = knexfileModule.default;
@@ -57,7 +60,7 @@ class DBClass {
57
60
  if (this.knexfile) {
58
61
  return this.knexfile;
59
62
  }
60
- throw new so_exceptions_1.ServiceUnavailableException("DB설정 파일을 찾을 수 없습니다.");
63
+ throw new so_exceptions_1.ServiceUnavailableException("DB설정이 로드되지 않았습니다.");
61
64
  }
62
65
  getDB(which) {
63
66
  var _a, _b, _c;
@@ -92,9 +95,6 @@ class DBClass {
92
95
  destroy() {
93
96
  return __awaiter(this, void 0, void 0, function* () {
94
97
  if (this.wdb !== undefined) {
95
- if (this.wdb.destroy === undefined) {
96
- console.log(this.wdb);
97
- }
98
98
  yield this.wdb.destroy();
99
99
  this.wdb = undefined;
100
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAClC,gDAAwB;AACxB,+DAA0E;AAC1E,sCAAmC;AAYnC,MAAM,OAAO;IAKL,YAAY;;YAChB,MAAM,UAAU,GAAW,cAAI,CAAC,IAAI,CAClC,eAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,EACvC,sBAAsB,CACvB,CAAC;YACF,IAAI;gBACF,MAAM,cAAc,GAAG,wDAAa,UAAU,GAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAyB,CAAC;gBACzD,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;YAAC,WAAM,GAAE;YAEV,MAAM,IAAI,2CAA2B,CACnC,uBAAuB,UAAU,EAAE,CACpC,CAAC;QACJ,CAAC;KAAA;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,MAAM,IAAI,2CAA2B,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,KAAe;;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvB,IAAI,MAAmB,CAAC;YACxB,QAAQ,MAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,mCAAI,aAAa,EAAE;gBAC7C,KAAK,aAAa,CAAC;gBACnB,KAAK,SAAS;oBACZ,MAAM;wBACJ,KAAK,KAAK,GAAG;4BACX,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;4BAChC,CAAC,CAAC,MAAA,QAAQ,CAAC,mBAAmB,CAAC,mCAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC;oBACtE,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM;wBACJ,KAAK,KAAK,GAAG;4BACX,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;4BAC/B,CAAC,CAAC,MAAA,QAAQ,CAAC,kBAAkB,CAAC,mCAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;oBACpE,MAAM;gBACR,KAAK,MAAM;oBACT,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CACb,UAAU,OAAO,CAAC,GAAG,CAAC,QAAQ,uBAAuB,CACtD,CAAC;aACL;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAA,cAAI,EAAC,MAAM,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,YAAY,CAAE,CAAC;IAC7B,CAAC;IAEK,OAAO;;YACX,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;oBAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvB;gBACD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aACtB;YACD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aACtB;QACH,CAAC;KAAA;CACF;AACY,QAAA,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/database/db.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAClC,gDAAwB;AACxB,+DAA0E;AAC1E,0CAAiD;AAYjD,MAAM,OAAO;IAKL,YAAY;;YAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;YAED,MAAM,UAAU,GAAW,cAAI,CAAC,IAAI,CAClC,MAAM,IAAA,uBAAe,GAAE,EACvB,sBAAsB,CACvB,CAAC;YACF,IAAI;gBACF,MAAM,cAAc,GAAG,wDAAa,UAAU,GAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAyB,CAAC;gBACzD,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;YAAC,WAAM,GAAE;YAEV,MAAM,IAAI,2CAA2B,CACnC,uBAAuB,UAAU,EAAE,CACpC,CAAC;QACJ,CAAC;KAAA;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,MAAM,IAAI,2CAA2B,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,KAAe;;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvB,IAAI,MAAmB,CAAC;YACxB,QAAQ,MAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,mCAAI,aAAa,EAAE;gBAC7C,KAAK,aAAa,CAAC;gBACnB,KAAK,SAAS;oBACZ,MAAM;wBACJ,KAAK,KAAK,GAAG;4BACX,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;4BAChC,CAAC,CAAC,MAAA,QAAQ,CAAC,mBAAmB,CAAC,mCAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC;oBACtE,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM;wBACJ,KAAK,KAAK,GAAG;4BACX,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;4BAC/B,CAAC,CAAC,MAAA,QAAQ,CAAC,kBAAkB,CAAC,mCAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;oBACpE,MAAM;gBACR,KAAK,MAAM;oBACT,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CACb,UAAU,OAAO,CAAC,GAAG,CAAC,QAAQ,uBAAuB,CACtD,CAAC;aACL;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAA,cAAI,EAAC,MAAM,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,YAAY,CAAE,CAAC;IAC7B,CAAC;IAEK,OAAO;;YACX,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aACtB;YACD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aACtB;QACH,CAAC;KAAA;CACF;AACY,QAAA,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC"}
@@ -19,8 +19,8 @@ export declare class Template__view_form extends Template {
19
19
  key: "smd" | "init_enums" | "init_types" | "init_generated" | "generated" | "generated_http" | "model" | "model_test" | "bridge" | "service" | "view_list" | "view_list_columns" | "view_search_input" | "view_form" | "view_id_all_select" | "view_id_async_select" | "view_enums_select" | "view_enums_dropdown" | "view_enums_buttonset";
20
20
  options: {
21
21
  refCode?: string | undefined;
22
- title: string;
23
22
  smdId: string;
23
+ title: string;
24
24
  } | {
25
25
  def?: Record<string, Record<string, string>> | undefined;
26
26
  smdId: string;
@@ -46,12 +46,12 @@ export declare class Template__view_form extends Template {
46
46
  extra?: unknown;
47
47
  smdId: string;
48
48
  } | {
49
+ smdId: string;
49
50
  columns: {
50
51
  name: string;
51
52
  label: string;
52
53
  tc: string;
53
54
  }[];
54
- smdId: string;
55
55
  columnImports: string;
56
56
  } | {
57
57
  smdId: string;
@@ -24,8 +24,8 @@ export declare class Template__view_list extends Template {
24
24
  key: "smd" | "init_enums" | "init_types" | "init_generated" | "generated" | "generated_http" | "model" | "model_test" | "bridge" | "service" | "view_list" | "view_list_columns" | "view_search_input" | "view_form" | "view_id_all_select" | "view_id_async_select" | "view_enums_select" | "view_enums_dropdown" | "view_enums_buttonset";
25
25
  options: {
26
26
  refCode?: string | undefined;
27
- title: string;
28
27
  smdId: string;
28
+ title: string;
29
29
  } | {
30
30
  def?: Record<string, Record<string, string>> | undefined;
31
31
  smdId: string;
@@ -51,12 +51,12 @@ export declare class Template__view_list extends Template {
51
51
  extra?: unknown;
52
52
  smdId: string;
53
53
  } | {
54
+ smdId: string;
54
55
  columns: {
55
56
  name: string;
56
57
  label: string;
57
58
  tc: string;
58
59
  }[];
59
- smdId: string;
60
60
  columnImports: string;
61
61
  } | {
62
62
  smdId: string;
@@ -1,10 +1,14 @@
1
1
  import { Knex } from "knex";
2
+ import { SonamuDBConfig } from "../database/db";
2
3
  export declare class FixtureManager {
3
4
  usingTables?: string[] | undefined;
4
- private tdb;
5
- private fdb;
6
- private knexfile;
5
+ private config?;
7
6
  constructor(usingTables?: string[] | undefined);
7
+ init(): Promise<{
8
+ tdb: Knex;
9
+ fdb: Knex;
10
+ knexfile: SonamuDBConfig;
11
+ }>;
8
12
  cleanAndSeed(): Promise<void>;
9
13
  initFixtureDB(): Promise<void>;
10
14
  getChecksum(db: Knex, tableName: string): Promise<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"fixture-manager.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAUlC,qBAAa,cAAc;IAKN,WAAW,CAAC;IAJ/B,OAAO,CAAC,GAAG,CAAO;IAClB,OAAO,CAAC,GAAG,CAAO;IAClB,OAAO,CAAC,QAAQ,CAAiB;gBAEd,WAAW,CAAC,sBAAU;IAiBnC,YAAY;IAgDZ,aAAa;IA2Cb,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM;IAKvC,IAAI;IAkDJ,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAqB1C,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,MAAM,EAAE,CAAC;IA6Dd,OAAO;CAId"}
1
+ {"version":3,"file":"fixture-manager.d.ts","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAM,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOpD,qBAAa,cAAc;IAON,WAAW,CAAC;IAN/B,OAAO,CAAC,MAAM,CAAC,CAIb;gBAEiB,WAAW,CAAC,sBAAU;IAiBnC,IAAI,IAAI,OAAO,CAAC;QACpB,GAAG,EAAE,IAAI,CAAC;QACV,GAAG,EAAE,IAAI,CAAC;QACV,QAAQ,EAAE,cAAc,CAAC;KAC1B,CAAC;IAcI,YAAY;IA6CZ,aAAa;IA2Cb,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM;IAKvC,IAAI;IAmDJ,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;IAqB1C,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,MAAM,EAAE,CAAC;IA+Dd,OAAO;CAQd"}
@@ -8,6 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
12
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
+ var m = o[Symbol.asyncIterator], i;
14
+ 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);
15
+ 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); }); }; }
16
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
+ };
11
18
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
19
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
20
  };
@@ -24,10 +31,10 @@ const types_1 = require("../types/types");
24
31
  class FixtureManager {
25
32
  constructor(usingTables) {
26
33
  this.usingTables = usingTables;
27
- this.knexfile = db_1.DB.getKnexfile();
28
- this.tdb = (0, knex_1.default)(this.knexfile.test);
29
- this.fdb = (0, knex_1.default)(this.knexfile.fixture_local);
30
34
  if (process.env.NODE_ENV === "test") {
35
+ beforeAll(() => __awaiter(this, void 0, void 0, function* () {
36
+ yield this.init();
37
+ }));
31
38
  beforeEach(() => __awaiter(this, void 0, void 0, function* () {
32
39
  yield this.cleanAndSeed();
33
40
  }));
@@ -37,36 +44,61 @@ class FixtureManager {
37
44
  }));
38
45
  }
39
46
  }
47
+ init() {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ if (this.config) {
50
+ return this.config;
51
+ }
52
+ const knexfile = yield db_1.DB.readKnexfile();
53
+ this.config = {
54
+ knexfile,
55
+ tdb: (0, knex_1.default)(knexfile.test),
56
+ fdb: (0, knex_1.default)(knexfile.fixture_local),
57
+ };
58
+ return this.config;
59
+ });
60
+ }
40
61
  cleanAndSeed() {
62
+ var e_1, _a;
41
63
  return __awaiter(this, void 0, void 0, function* () {
64
+ const { tdb, fdb, knexfile } = yield this.init();
42
65
  // console.time("FIXTURE-CleanAndSeed");
43
66
  let tableNames = [];
44
67
  if (this.usingTables === undefined) {
45
- const [tables] = yield this.tdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
68
+ const [tables] = yield tdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
46
69
  tableNames = tables.map((tableInfo) => tableInfo["Name"]);
47
70
  }
48
71
  else {
49
72
  tableNames = this.usingTables;
50
73
  }
51
- yield this.tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
52
- for (let tableName of tableNames) {
53
- if (tableName == "migrations") {
54
- continue;
74
+ yield tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
75
+ try {
76
+ for (var tableNames_1 = __asyncValues(tableNames), tableNames_1_1; tableNames_1_1 = yield tableNames_1.next(), !tableNames_1_1.done;) {
77
+ let tableName = tableNames_1_1.value;
78
+ if (tableName == "migrations") {
79
+ continue;
80
+ }
81
+ const [[fdbChecksumRow]] = yield fdb.raw(`CHECKSUM TABLE ${tableName}`);
82
+ const fdbChecksum = fdbChecksumRow["Checksum"];
83
+ const [[tdbChecksumRow]] = yield tdb.raw(`CHECKSUM TABLE ${tableName}`);
84
+ const tdbChecksum = tdbChecksumRow["Checksum"];
85
+ if (fdbChecksum !== tdbChecksum) {
86
+ yield tdb(tableName).truncate();
87
+ const rawQuery = `INSERT INTO ${knexfile.test.connection.database}.${tableName}
88
+ SELECT * FROM ${knexfile.fixture_local.connection
89
+ .database}.${tableName}`;
90
+ yield tdb.raw(rawQuery);
91
+ }
55
92
  }
56
- const [[fdbChecksumRow]] = yield this.fdb.raw(`CHECKSUM TABLE ${tableName}`);
57
- const fdbChecksum = fdbChecksumRow["Checksum"];
58
- const [[tdbChecksumRow]] = yield this.tdb.raw(`CHECKSUM TABLE ${tableName}`);
59
- const tdbChecksum = tdbChecksumRow["Checksum"];
60
- if (fdbChecksum !== tdbChecksum) {
61
- yield this.tdb(tableName).truncate();
62
- const rawQuery = `INSERT INTO ${this.knexfile.test.connection.database}.${tableName}
63
- SELECT * FROM ${this.knexfile.fixture_local.connection
64
- .database}.${tableName}`;
65
- yield this.tdb.raw(rawQuery);
93
+ }
94
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
95
+ finally {
96
+ try {
97
+ if (tableNames_1_1 && !tableNames_1_1.done && (_a = tableNames_1.return)) yield _a.call(tableNames_1);
66
98
  }
99
+ finally { if (e_1) throw e_1.error; }
67
100
  }
68
- yield this.tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
69
- // console.timeEnd("FIXTURE-CleanAndSeed");
101
+ yield tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
70
102
  });
71
103
  }
72
104
  // TODO: 추후 작업
@@ -99,8 +131,9 @@ class FixtureManager {
99
131
  }
100
132
  sync() {
101
133
  return __awaiter(this, void 0, void 0, function* () {
102
- const frdb = (0, knex_1.default)(this.knexfile.fixture_remote);
103
- const [tables] = yield this.fdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
134
+ const { fdb, knexfile } = yield this.init();
135
+ const frdb = (0, knex_1.default)(knexfile.fixture_remote);
136
+ const [tables] = yield fdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
104
137
  const tableNames = tables.map((table) => table.Name);
105
138
  console.log(chalk_1.default.magenta("SYNC..."));
106
139
  yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
@@ -108,9 +141,9 @@ class FixtureManager {
108
141
  return;
109
142
  }
110
143
  const remoteChecksum = yield this.getChecksum(frdb, tableName);
111
- const localChecksum = yield this.getChecksum(this.fdb, tableName);
144
+ const localChecksum = yield this.getChecksum(fdb, tableName);
112
145
  if (remoteChecksum !== localChecksum) {
113
- yield this.fdb.transaction((transaction) => __awaiter(this, void 0, void 0, function* () {
146
+ yield fdb.transaction((transaction) => __awaiter(this, void 0, void 0, function* () {
114
147
  yield transaction.raw(`SET FOREIGN_KEY_CHECKS = 0`);
115
148
  yield transaction(tableName).truncate();
116
149
  const rows = yield frdb(tableName);
@@ -151,6 +184,7 @@ class FixtureManager {
151
184
  }
152
185
  getImportQueries(smdId, field, id) {
153
186
  return __awaiter(this, void 0, void 0, function* () {
187
+ const { knexfile } = yield this.init();
154
188
  console.log({ smdId, field, id });
155
189
  const smd = smd_manager_1.SMDManager.get(smdId);
156
190
  const wdb = base_model_1.BaseModel.getDB("w");
@@ -160,9 +194,9 @@ class FixtureManager {
160
194
  throw new Error(`${smdId}#${id} row를 찾을 수 없습니다.`);
161
195
  }
162
196
  // 픽스쳐DB, 실DB
163
- const fixtureDatabase = this.knexfile.fixture_remote.connection
197
+ const fixtureDatabase = knexfile.fixture_remote.connection
164
198
  .database;
165
- const realDatabase = this.knexfile.production_master.connection
199
+ const realDatabase = knexfile.production_master.connection
166
200
  .database;
167
201
  const selfQuery = `INSERT IGNORE INTO \`${fixtureDatabase}\`.\`${smd.table}\` (SELECT * FROM \`${realDatabase}\`.\`${smd.table}\` WHERE \`id\` = ${id})`;
168
202
  const args = Object.entries(smd.relations)
@@ -203,8 +237,12 @@ class FixtureManager {
203
237
  }
204
238
  destory() {
205
239
  return __awaiter(this, void 0, void 0, function* () {
206
- yield this.tdb.destroy();
207
- yield this.fdb.destroy();
240
+ if (!this.config) {
241
+ return;
242
+ }
243
+ const { tdb, fdb } = yield this.init();
244
+ yield tdb.destroy();
245
+ yield fdb.destroy();
208
246
  });
209
247
  }
210
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fixture-manager.js","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAyC;AACzC,gDAAkC;AAClC,mCAA8B;AAC9B,uDAAmD;AACnD,uCAAoD;AACpD,oDAAgD;AAChD,0CAGwB;AAExB,MAAa,cAAc;IAKzB,YAAmB,WAAsB;QAAtB,gBAAW,GAAX,WAAW,CAAW;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAE,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,IAAA,cAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,IAAA,cAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE7C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;YACnC,UAAU,CAAC,GAAS,EAAE;gBACpB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC,CAAA,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAS,EAAE;gBAClB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,sBAAS,CAAC,OAAO,EAAE,CAAC;YAC5B,CAAC,CAAA,CAAC,CAAC;SACJ;IACH,CAAC;IAEK,YAAY;;YAChB,wCAAwC;YAExC,IAAI,UAAU,GAAa,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;gBAClC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CACjC,4CAA4C,CAC7C,CAAC;gBACF,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;aAChE;iBAAM;gBACL,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;aAC/B;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YACjD,KAAK,IAAI,SAAS,IAAI,UAAU,EAAE;gBAChC,IAAI,SAAS,IAAI,YAAY,EAAE;oBAC7B,SAAS;iBACV;gBAED,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAC3C,kBAAkB,SAAS,EAAE,CAC9B,CAAC;gBACF,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBAE/C,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAC3C,kBAAkB,SAAS,EAAE,CAC9B,CAAC;gBACF,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBAE/C,IAAI,WAAW,KAAK,WAAW,EAAE;oBAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACrC,MAAM,QAAQ,GAAG,eACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAoC,CAAC,QAC3D,IAAI,SAAS;4BAEN,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAoC;yBAC9D,QACL,IAAI,SAAS,EAAE,CAAC;oBACpB,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC9B;aACF;YACD,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAEjD,2CAA2C;QAC7C,CAAC;KAAA;IAED,cAAc;IACR,aAAa;;YACjB,MAAM,WAAW,GAAG,qBAAqB,CAAC;YAE1C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,IAAA,wBAAQ,EACN,mCAAmC,WAAW,mIAAmI,CAClL,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACtD,IAAA,wBAAQ,EACN,iCAAiC,WAAW,iCAAiC,CAC9E,CAAC;YACF,IAAA,wBAAQ,EACN,iCAAiC,WAAW,mCAAmC,CAChF,CAAC;YACF,IAAA,wBAAQ,EACN,iCAAiC,WAAW,6CAA6C,CAC1F,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,IAAA,wBAAQ,EACN,uFAAuF,CACxF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,IAAA,wBAAQ,EACN,+BAA+B,WAAW,yCAAyC,CACpF,CAAC;YACF,IAAA,wBAAQ,EACN,+BAA+B,WAAW,2CAA2C,CACtF,CAAC;YACF,IAAA,wBAAQ,EACN,+BAA+B,WAAW,qDAAqD,CAChG,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,IAAA,wBAAQ,EACN,iCAAiC,WAAW,yCAAyC,CACtF,CAAC;YACF,IAAA,wBAAQ,EACN,iCAAiC,WAAW,2CAA2C,CACxF,CAAC;YACF,IAAA,wBAAQ,EACN,iCAAiC,WAAW,qDAAqD,CAClG,CAAC;QACJ,CAAC;KAAA;IAEK,WAAW,CAAC,EAAQ,EAAE,SAAiB;;YAC3C,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO,WAAW,CAAC,QAAQ,CAAC;QAC9B,CAAC;KAAA;IAEK,IAAI;;YACR,MAAM,IAAI,GAAG,IAAA,cAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CACjC,4CAA4C,CAC7C,CAAC;YACF,MAAM,UAAU,GAAa,MAAM,CAAC,GAAG,CACrC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAc,CACrC,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACtC,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAO,SAAS,EAAE,EAAE;gBACjC,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;oBAC3C,OAAO;iBACR;gBAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAElE,IAAI,cAAc,KAAK,aAAa,EAAE;oBACpC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAO,WAAW,EAAE,EAAE;wBAC/C,MAAM,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;wBACpD,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAExC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;wBACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;wBAChD,MAAM,WAAW;6BACd,MAAM,CACL,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;4BACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gCAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;oCAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iCACrC;4BACH,CAAC,CAAC,CAAC;4BACH,OAAO,GAAG,CAAC;wBACb,CAAC,CAAC,CACH;6BACA,IAAI,CAAC,SAAS,CAAC,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAClB,MAAM,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;oBACtD,CAAC,CAAA,CAAC,CAAC;iBACJ;YACH,CAAC,CAAA,CAAC,CACH,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAEpC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;KAAA;IAEK,aAAa,CAAC,KAAa,EAAE,GAAa;;YAC9C,MAAM,OAAO,GAAG,IAAA,aAAI,EAClB,CACE,MAAM,OAAO,CAAC,GAAG,CACf,GAAG,CAAC,GAAG,CAAC,CAAO,EAAE,EAAE,EAAE;gBACnB,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACtD,CAAC,CAAA,CAAC,CACH,CACF,CAAC,IAAI,EAAE,CACT,CAAC;YAEF,MAAM,GAAG,GAAG,sBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;gBACzB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC;oBACV,KAAK;oBACL,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC,CAAC;aACJ;QACH,CAAC;KAAA;IAEK,gBAAgB,CACpB,KAAa,EACb,KAAa,EACb,EAAU;;YAEV,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,wBAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,sBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEjC,mBAAmB;YACnB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,kBAAkB,CAAC,CAAC;aACnD;YAED,aAAa;YACb,MAAM,eAAe,GAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAkB;iBACrE,QAAQ,CAAC;YACZ,MAAM,YAAY,GAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAkB;iBACrE,QAAQ,CAAC;YAEZ,MAAM,SAAS,GAAG,wBAAwB,eAAe,QAAQ,GAAG,CAAC,KAAK,uBAAuB,YAAY,QAAQ,GAAG,CAAC,KAAK,qBAAqB,EAAE,GAAG,CAAC;YAEzJ,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;iBACvC,MAAM,CACL,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CACf,IAAA,kCAA0B,EAAC,QAAQ,CAAC;gBACpC,CAAC,IAAA,8BAAsB,EAAC,QAAQ,CAAC;oBAC/B,QAAQ,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAC7C;iBACA,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACpB;;;;;;;kBAOE;gBACF,IAAI,KAAa,CAAC;gBAClB,IAAI,EAAU,CAAC;gBACf,IAAI,IAAA,8BAAsB,EAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAC/D,KAAK,GAAG,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC;oBAC9B,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;iBAChB;qBAAM;oBACL,KAAK,GAAG,IAAI,CAAC;oBACb,EAAE,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;iBACjC;gBACD,OAAO;oBACL,KAAK,EAAE,QAAQ,CAAC,IAAI;oBACpB,KAAK;oBACL,EAAE;iBACH,CAAC;YACJ,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;YAEpC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,IAAI,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;gBACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC,CAAA,CAAC,CACH,CAAC;YAEF,OAAO,CAAC,GAAG,IAAA,aAAI,EAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3D,CAAC;KAAA;IAEK,OAAO;;YACX,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KAAA;CACF;AAlQD,wCAkQC"}
1
+ {"version":3,"file":"fixture-manager.js","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"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"}
@@ -352,12 +352,12 @@ export declare const TemplateOptions: z.ZodObject<{
352
352
  refCode: z.ZodOptional<z.ZodString>;
353
353
  }, "strip", z.ZodTypeAny, {
354
354
  refCode?: string | undefined;
355
- title: string;
356
355
  smdId: string;
356
+ title: string;
357
357
  }, {
358
358
  refCode?: string | undefined;
359
- title: string;
360
359
  smdId: string;
360
+ title: string;
361
361
  }>;
362
362
  init_enums: z.ZodObject<{
363
363
  smdId: z.ZodString;
@@ -458,20 +458,20 @@ export declare const TemplateOptions: z.ZodObject<{
458
458
  }>, "many">;
459
459
  columnImports: z.ZodString;
460
460
  }, "strip", z.ZodTypeAny, {
461
+ smdId: string;
461
462
  columns: {
462
463
  name: string;
463
464
  label: string;
464
465
  tc: string;
465
466
  }[];
466
- smdId: string;
467
467
  columnImports: string;
468
468
  }, {
469
+ smdId: string;
469
470
  columns: {
470
471
  name: string;
471
472
  label: string;
472
473
  tc: string;
473
474
  }[];
474
- smdId: string;
475
475
  columnImports: string;
476
476
  }>;
477
477
  view_search_input: z.ZodObject<{
@@ -547,8 +547,8 @@ export declare const TemplateOptions: z.ZodObject<{
547
547
  }, "strip", z.ZodTypeAny, {
548
548
  smd: {
549
549
  refCode?: string | undefined;
550
- title: string;
551
550
  smdId: string;
551
+ title: string;
552
552
  };
553
553
  init_enums: {
554
554
  def?: Record<string, Record<string, string>> | undefined;
@@ -585,12 +585,12 @@ export declare const TemplateOptions: z.ZodObject<{
585
585
  smdId: string;
586
586
  };
587
587
  view_list_columns: {
588
+ smdId: string;
588
589
  columns: {
589
590
  name: string;
590
591
  label: string;
591
592
  tc: string;
592
593
  }[];
593
- smdId: string;
594
594
  columnImports: string;
595
595
  };
596
596
  view_search_input: {
@@ -624,8 +624,8 @@ export declare const TemplateOptions: z.ZodObject<{
624
624
  }, {
625
625
  smd: {
626
626
  refCode?: string | undefined;
627
- title: string;
628
627
  smdId: string;
628
+ title: string;
629
629
  };
630
630
  init_enums: {
631
631
  def?: Record<string, Record<string, string>> | undefined;
@@ -662,12 +662,12 @@ export declare const TemplateOptions: z.ZodObject<{
662
662
  smdId: string;
663
663
  };
664
664
  view_list_columns: {
665
+ smdId: string;
665
666
  columns: {
666
667
  name: string;
667
668
  label: string;
668
669
  tc: string;
669
670
  }[];
670
- smdId: string;
671
671
  columnImports: string;
672
672
  };
673
673
  view_search_input: {
@@ -714,11 +714,11 @@ export declare const PathAndCode: z.ZodObject<{
714
714
  path: z.ZodString;
715
715
  code: z.ZodString;
716
716
  }, "strip", z.ZodTypeAny, {
717
- code: string;
718
717
  path: string;
719
- }, {
720
718
  code: string;
719
+ }, {
721
720
  path: string;
721
+ code: string;
722
722
  }>;
723
723
  export declare type PathAndCode = z.infer<typeof PathAndCode>;
724
724
  export {};
@@ -3,4 +3,5 @@ export declare function importMultiple(filePaths: string[]): Promise<{
3
3
  filePath: string;
4
4
  imported: any;
5
5
  }[]>;
6
+ export declare function findAppRootPath(): Promise<string>;
6
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUhE;AACD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,EAAE,CAAC,CAWhD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUhE;AACD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,EAAE,CAAC,CAWhD;AACD,wBAAsB,eAAe,oBAYpC"}
@@ -35,9 +35,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.importMultiple = exports.globAsync = void 0;
38
+ exports.findAppRootPath = exports.importMultiple = exports.globAsync = void 0;
39
39
  const path_1 = __importDefault(require("path"));
40
40
  const glob_1 = __importDefault(require("glob"));
41
+ const fs_1 = require("fs");
41
42
  function globAsync(pathPattern) {
42
43
  return new Promise((resolve, reject) => {
43
44
  (0, glob_1.default)(path_1.default.resolve(pathPattern), (err, files) => {
@@ -64,4 +65,20 @@ function importMultiple(filePaths) {
64
65
  });
65
66
  }
66
67
  exports.importMultiple = importMultiple;
68
+ function findAppRootPath() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ if (require.main === undefined) {
71
+ throw new Error("Cannot find AppRoot using Sonamu");
72
+ }
73
+ let dir = path_1.default.dirname(require.main.path);
74
+ do {
75
+ if ((0, fs_1.existsSync)(path_1.default.join(dir, "/package.json"))) {
76
+ return dir.split(path_1.default.sep).slice(0, -1).join(path_1.default.sep);
77
+ }
78
+ dir = dir.split(path_1.default.sep).slice(0, -1).join(path_1.default.sep);
79
+ } while (dir.split(path_1.default.sep).length > 1);
80
+ throw new Error("Cannot find AppRoot using Sonamu");
81
+ });
82
+ }
83
+ exports.findAppRootPath = findAppRootPath;
67
84
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,gDAAwB;AAExB,SAAgB,SAAS,CAAC,WAAmB;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,cAAI,EAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,8BAUC;AACD,SAAsB,cAAc,CAClC,SAAmB;;QAEnB,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,CAAO,QAAQ,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,wDAAa,UAAU,GAAC,CAAC;YAC1C,OAAO;gBACL,QAAQ;gBACR,QAAQ;aACT,CAAC;QACJ,CAAC,CAAA,CAAC,CACH,CAAC;IACJ,CAAC;CAAA;AAbD,wCAaC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,gDAAwB;AACxB,2BAAgC;AAEhC,SAAgB,SAAS,CAAC,WAAmB;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,cAAI,EAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC7C,IAAI,GAAG,EAAE;gBACP,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,8BAUC;AACD,SAAsB,cAAc,CAClC,SAAmB;;QAEnB,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,CAAO,QAAQ,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,wDAAa,UAAU,GAAC,CAAC;YAC1C,OAAO;gBACL,QAAQ;gBACR,QAAQ;aACT,CAAC;QACJ,CAAC,CAAA,CAAC,CACH,CAAC;IACJ,CAAC;CAAA;AAbD,wCAaC;AACD,SAAsB,eAAe;;QACnC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,IAAI,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,GAAG;YACD,IAAI,IAAA,eAAU,EAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,EAAE;gBAC/C,OAAO,GAAG,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC;aACxD;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC;SACvD,QAAQ,GAAG,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CAAA;AAZD,0CAYC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
package/src/api/init.ts CHANGED
@@ -12,10 +12,10 @@ import { Syncer } from "../syncer/syncer";
12
12
  import { isLocal } from "../utils/controller";
13
13
  import { DB } from "../database/db";
14
14
  import { BaseModel } from "../database/base-model";
15
+ import { findAppRootPath } from "../utils/utils";
15
16
 
16
17
  export type SonamuInitConfig = {
17
18
  prefix: string;
18
- appRootPath: string;
19
19
  syncTargets: string[];
20
20
  contextProvider: (
21
21
  defaultContext: Pick<Context, "headers" | "reply">,
@@ -44,8 +44,9 @@ export async function init(
44
44
  );
45
45
 
46
46
  // Syncer
47
+ const appRootPath = await findAppRootPath();
47
48
  const syncer = Syncer.getInstance({
48
- appRootPath: config.appRootPath,
49
+ appRootPath: appRootPath,
49
50
  targets: config.syncTargets,
50
51
  });
51
52
 
@@ -56,9 +57,9 @@ export async function init(
56
57
  // Autoload: SMD / Models / Types / APIs
57
58
  console.time(chalk.cyan("autoload&sync:"));
58
59
  await SMDManager.autoload();
59
- const importedModels = await syncer.autoloadModels(config.appRootPath);
60
- const references = await syncer.autoloadTypes(config.appRootPath);
61
- const apis = await syncer.autoloadApis(config.appRootPath);
60
+ const importedModels = await syncer.autoloadModels(appRootPath);
61
+ const references = await syncer.autoloadTypes(appRootPath);
62
+ const apis = await syncer.autoloadApis(appRootPath);
62
63
  if (isLocal()) {
63
64
  await syncer.sync();
64
65
  }
@@ -2,7 +2,7 @@ export type DBPreset = "w" | "r";
2
2
  import knex, { Knex } from "knex";
3
3
  import path from "path";
4
4
  import { ServiceUnavailableException } from "../exceptions/so-exceptions";
5
- import { Syncer } from "../syncer";
5
+ import { findAppRootPath } from "../utils/utils";
6
6
 
7
7
  export type SonamuDBConfig = {
8
8
  development_master: Knex.Config;
@@ -19,9 +19,13 @@ class DBClass {
19
19
  private rdb?: Knex;
20
20
  private knexfile?: SonamuDBConfig;
21
21
 
22
- async readKnexfile() {
22
+ async readKnexfile(): Promise<SonamuDBConfig> {
23
+ if (this.knexfile) {
24
+ return this.knexfile;
25
+ }
26
+
23
27
  const configPath: string = path.join(
24
- Syncer.getInstance().config.appRootPath,
28
+ await findAppRootPath(),
25
29
  "/api/dist/configs/db"
26
30
  );
27
31
  try {
@@ -40,7 +44,7 @@ class DBClass {
40
44
  return this.knexfile;
41
45
  }
42
46
 
43
- throw new ServiceUnavailableException("DB설정 파일을 찾을 수 없습니다.");
47
+ throw new ServiceUnavailableException("DB설정이 로드되지 않았습니다.");
44
48
  }
45
49
 
46
50
  getDB(which: DBPreset): Knex {
@@ -80,9 +84,6 @@ class DBClass {
80
84
 
81
85
  async destroy(): Promise<void> {
82
86
  if (this.wdb !== undefined) {
83
- if (this.wdb.destroy === undefined) {
84
- console.log(this.wdb);
85
- }
86
87
  await this.wdb.destroy();
87
88
  this.wdb = undefined;
88
89
  }
@@ -11,16 +11,18 @@ import {
11
11
  } from "../types/types";
12
12
 
13
13
  export class FixtureManager {
14
- private tdb: Knex;
15
- private fdb: Knex;
16
- private knexfile: SonamuDBConfig;
14
+ private config?: {
15
+ tdb: Knex;
16
+ fdb: Knex;
17
+ knexfile: SonamuDBConfig;
18
+ };
17
19
 
18
20
  constructor(public usingTables?: string[]) {
19
- this.knexfile = DB.getKnexfile();
20
- this.tdb = knex(this.knexfile.test);
21
- this.fdb = knex(this.knexfile.fixture_local);
22
-
23
21
  if (process.env.NODE_ENV === "test") {
22
+ beforeAll(async () => {
23
+ await this.init();
24
+ });
25
+
24
26
  beforeEach(async () => {
25
27
  await this.cleanAndSeed();
26
28
  });
@@ -32,13 +34,32 @@ export class FixtureManager {
32
34
  }
33
35
  }
34
36
 
37
+ async init(): Promise<{
38
+ tdb: Knex;
39
+ fdb: Knex;
40
+ knexfile: SonamuDBConfig;
41
+ }> {
42
+ if (this.config) {
43
+ return this.config;
44
+ }
45
+
46
+ const knexfile = await DB.readKnexfile();
47
+ this.config = {
48
+ knexfile,
49
+ tdb: knex(knexfile.test),
50
+ fdb: knex(knexfile.fixture_local),
51
+ };
52
+ return this.config;
53
+ }
54
+
35
55
  async cleanAndSeed() {
56
+ const { tdb, fdb, knexfile } = await this.init();
36
57
  // console.time("FIXTURE-CleanAndSeed");
37
58
 
38
59
  let tableNames: string[] = [];
39
60
 
40
61
  if (this.usingTables === undefined) {
41
- const [tables] = await this.tdb.raw(
62
+ const [tables] = await tdb.raw(
42
63
  "SHOW TABLE STATUS WHERE Engine IS NOT NULL"
43
64
  );
44
65
  tableNames = tables.map((tableInfo: any) => tableInfo["Name"]);
@@ -46,35 +67,31 @@ export class FixtureManager {
46
67
  tableNames = this.usingTables;
47
68
  }
48
69
 
49
- await this.tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
50
- for (let tableName of tableNames) {
70
+ await tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
71
+ for await (let tableName of tableNames) {
51
72
  if (tableName == "migrations") {
52
73
  continue;
53
74
  }
54
75
 
55
- const [[fdbChecksumRow]] = await this.fdb.raw(
56
- `CHECKSUM TABLE ${tableName}`
57
- );
76
+ const [[fdbChecksumRow]] = await fdb.raw(`CHECKSUM TABLE ${tableName}`);
58
77
  const fdbChecksum = fdbChecksumRow["Checksum"];
59
78
 
60
- const [[tdbChecksumRow]] = await this.tdb.raw(
61
- `CHECKSUM TABLE ${tableName}`
62
- );
79
+ const [[tdbChecksumRow]] = await tdb.raw(`CHECKSUM TABLE ${tableName}`);
63
80
  const tdbChecksum = tdbChecksumRow["Checksum"];
64
81
 
65
82
  if (fdbChecksum !== tdbChecksum) {
66
- await this.tdb(tableName).truncate();
83
+ await tdb(tableName).truncate();
67
84
  const rawQuery = `INSERT INTO ${
68
- (this.knexfile.test.connection as Knex.ConnectionConfig).database
85
+ (knexfile.test.connection as Knex.ConnectionConfig).database
69
86
  }.${tableName}
70
87
  SELECT * FROM ${
71
- (this.knexfile.fixture_local.connection as Knex.ConnectionConfig)
88
+ (knexfile.fixture_local.connection as Knex.ConnectionConfig)
72
89
  .database
73
90
  }.${tableName}`;
74
- await this.tdb.raw(rawQuery);
91
+ await tdb.raw(rawQuery);
75
92
  }
76
93
  }
77
- await this.tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
94
+ await tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
78
95
 
79
96
  // console.timeEnd("FIXTURE-CleanAndSeed");
80
97
  }
@@ -129,9 +146,10 @@ export class FixtureManager {
129
146
  }
130
147
 
131
148
  async sync() {
132
- const frdb = knex(this.knexfile.fixture_remote);
149
+ const { fdb, knexfile } = await this.init();
150
+ const frdb = knex(knexfile.fixture_remote);
133
151
 
134
- const [tables] = await this.fdb.raw(
152
+ const [tables] = await fdb.raw(
135
153
  "SHOW TABLE STATUS WHERE Engine IS NOT NULL"
136
154
  );
137
155
  const tableNames: string[] = tables.map(
@@ -146,10 +164,10 @@ export class FixtureManager {
146
164
  }
147
165
 
148
166
  const remoteChecksum = await this.getChecksum(frdb, tableName);
149
- const localChecksum = await this.getChecksum(this.fdb, tableName);
167
+ const localChecksum = await this.getChecksum(fdb, tableName);
150
168
 
151
169
  if (remoteChecksum !== localChecksum) {
152
- await this.fdb.transaction(async (transaction) => {
170
+ await fdb.transaction(async (transaction) => {
153
171
  await transaction.raw(`SET FOREIGN_KEY_CHECKS = 0`);
154
172
  await transaction(tableName).truncate();
155
173
 
@@ -204,6 +222,8 @@ export class FixtureManager {
204
222
  field: string,
205
223
  id: number
206
224
  ): Promise<string[]> {
225
+ const { knexfile } = await this.init();
226
+
207
227
  console.log({ smdId, field, id });
208
228
  const smd = SMDManager.get(smdId);
209
229
  const wdb = BaseModel.getDB("w");
@@ -215,9 +235,9 @@ export class FixtureManager {
215
235
  }
216
236
 
217
237
  // 픽스쳐DB, 실DB
218
- const fixtureDatabase = (this.knexfile.fixture_remote.connection as any)
238
+ const fixtureDatabase = (knexfile.fixture_remote.connection as any)
219
239
  .database;
220
- const realDatabase = (this.knexfile.production_master.connection as any)
240
+ const realDatabase = (knexfile.production_master.connection as any)
221
241
  .database;
222
242
 
223
243
  const selfQuery = `INSERT IGNORE INTO \`${fixtureDatabase}\`.\`${smd.table}\` (SELECT * FROM \`${realDatabase}\`.\`${smd.table}\` WHERE \`id\` = ${id})`;
@@ -265,7 +285,11 @@ export class FixtureManager {
265
285
  }
266
286
 
267
287
  async destory() {
268
- await this.tdb.destroy();
269
- await this.fdb.destroy();
288
+ if (!this.config) {
289
+ return;
290
+ }
291
+ const { tdb, fdb } = await this.init();
292
+ await tdb.destroy();
293
+ await fdb.destroy();
270
294
  }
271
295
  }
@@ -1,5 +1,6 @@
1
1
  import path from "path";
2
2
  import glob from "glob";
3
+ import { existsSync } from "fs";
3
4
 
4
5
  export function globAsync(pathPattern: string): Promise<string[]> {
5
6
  return new Promise((resolve, reject) => {
@@ -26,3 +27,16 @@ export async function importMultiple(
26
27
  })
27
28
  );
28
29
  }
30
+ export async function findAppRootPath() {
31
+ if (require.main === undefined) {
32
+ throw new Error("Cannot find AppRoot using Sonamu");
33
+ }
34
+ let dir = path.dirname(require.main.path);
35
+ do {
36
+ if (existsSync(path.join(dir, "/package.json"))) {
37
+ return dir.split(path.sep).slice(0, -1).join(path.sep);
38
+ }
39
+ dir = dir.split(path.sep).slice(0, -1).join(path.sep);
40
+ } while (dir.split(path.sep).length > 1);
41
+ throw new Error("Cannot find AppRoot using Sonamu");
42
+ }