sonamu 0.0.8 → 0.0.10

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 (67) hide show
  1. package/dist/api/index.d.ts +1 -1
  2. package/dist/api/index.d.ts.map +1 -1
  3. package/dist/api/index.js +1 -1
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/init.d.ts +35 -5
  6. package/dist/api/init.d.ts.map +1 -1
  7. package/dist/api/init.js +142 -79
  8. package/dist/api/init.js.map +1 -1
  9. package/dist/api/sonamu.d.ts +42 -0
  10. package/dist/api/sonamu.d.ts.map +1 -0
  11. package/dist/api/sonamu.js +175 -0
  12. package/dist/api/sonamu.js.map +1 -0
  13. package/dist/bin/cli.js +6 -21
  14. package/dist/bin/cli.js.map +1 -1
  15. package/dist/database/db.d.ts +1 -3
  16. package/dist/database/db.d.ts.map +1 -1
  17. package/dist/database/db.js +12 -23
  18. package/dist/database/db.js.map +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/smd/migrator.d.ts +0 -5
  24. package/dist/smd/migrator.d.ts.map +1 -1
  25. package/dist/smd/migrator.js +18 -19
  26. package/dist/smd/migrator.js.map +1 -1
  27. package/dist/smd/smd-manager.d.ts.map +1 -1
  28. package/dist/smd/smd-manager.js +2 -3
  29. package/dist/smd/smd-manager.js.map +1 -1
  30. package/dist/smd/smd.d.ts.map +1 -1
  31. package/dist/smd/smd.js +3 -4
  32. package/dist/smd/smd.js.map +1 -1
  33. package/dist/syncer/syncer.d.ts +8 -12
  34. package/dist/syncer/syncer.d.ts.map +1 -1
  35. package/dist/syncer/syncer.js +46 -43
  36. package/dist/syncer/syncer.js.map +1 -1
  37. package/dist/templates/generated_http.template.js +2 -2
  38. package/dist/templates/generated_http.template.js.map +1 -1
  39. package/dist/templates/service.template.d.ts +1 -1
  40. package/dist/templates/service.template.d.ts.map +1 -1
  41. package/dist/templates/service.template.js +3 -2
  42. package/dist/templates/service.template.js.map +1 -1
  43. package/dist/templates/view_form.template.d.ts +2 -2
  44. package/dist/templates/view_list.template.d.ts +2 -2
  45. package/dist/testing/fixture-manager.d.ts +6 -7
  46. package/dist/testing/fixture-manager.d.ts.map +1 -1
  47. package/dist/testing/fixture-manager.js +35 -42
  48. package/dist/testing/fixture-manager.js.map +1 -1
  49. package/dist/utils/utils.d.ts +1 -0
  50. package/dist/utils/utils.d.ts.map +1 -1
  51. package/dist/utils/utils.js +10 -3
  52. package/dist/utils/utils.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/api/index.ts +1 -1
  55. package/src/api/sonamu.ts +212 -0
  56. package/src/bin/cli.ts +6 -26
  57. package/src/database/db.ts +15 -27
  58. package/src/index.ts +1 -1
  59. package/src/smd/migrator.ts +18 -31
  60. package/src/smd/smd-manager.ts +3 -4
  61. package/src/smd/smd.ts +7 -8
  62. package/src/syncer/syncer.ts +58 -68
  63. package/src/templates/generated_http.template.ts +2 -2
  64. package/src/templates/service.template.ts +6 -5
  65. package/src/testing/fixture-manager.ts +44 -54
  66. package/src/utils/utils.ts +6 -1
  67. package/src/api/init.ts +0 -129
@@ -1 +1 @@
1
- {"version":3,"file":"service.template.d.ts","sourceRoot":"","sources":["../../src/templates/service.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB,CAAC,KAAK,EAAE,cAAc;;;;IAOtC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;;;;;;;IAqBjE,aAAa,CACX,IAAI,EAAE,WAAW,EAAE,EACnB,SAAS,GAAE,MAAe,GACzB;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAyG5C,WAAW,CACT,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IA4BpB,oBAAoB,CAClB,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,QAAQ,EAAE;IA+BlC,SAAS,CACP,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IAkBpB,iBAAiB,CACf,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;CAQrB"}
1
+ {"version":3,"file":"service.template.d.ts","sourceRoot":"","sources":["../../src/templates/service.template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAc,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB,CAAC,KAAK,EAAE,cAAc;;;;IAOtC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE;;;;;;;IAqBjE,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG;QAClC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB;IAyGD,WAAW,CACT,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IA4BpB,oBAAoB,CAClB,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,QAAQ,EAAE;IA+BlC,SAAS,CACP,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM;IAkBpB,iBAAiB,CACf,GAAG,EAAE,WAAW,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM;CAQrB"}
@@ -7,6 +7,7 @@ const smd_manager_1 = require("../smd/smd-manager");
7
7
  const types_1 = require("../types/types");
8
8
  const code_converters_1 = require("../api/code-converters");
9
9
  const base_template_1 = require("./base-template");
10
+ const sonamu_1 = require("../api/sonamu");
10
11
  class Template__service extends base_template_1.Template {
11
12
  constructor() {
12
13
  super("service");
@@ -28,7 +29,7 @@ class Template__service extends base_template_1.Template {
28
29
  `import { fetch, ListResult, SWRError, SwrOptions, handleConditional } from '../sonamu.shared';`,
29
30
  ] });
30
31
  }
31
- getTypeSource(apis, apiPrefix = "/api") {
32
+ getTypeSource(apis) {
32
33
  const importKeys = [];
33
34
  // 제네릭에서 선언한 타입, importKeys에서 제외 필요
34
35
  let typeParamNames = [];
@@ -57,7 +58,7 @@ class Template__service extends base_template_1.Template {
57
58
  .join(", ")} }`;
58
59
  return (0, lodash_1.sortBy)(api.options.clients, (client) => client === "swr" ? 0 : 1)
59
60
  .map((client) => {
60
- const apiBaseUrl = `${apiPrefix}${api.path}`;
61
+ const apiBaseUrl = `${sonamu_1.Sonamu.config.route.prefix}${api.path}`;
61
62
  switch (client) {
62
63
  case "axios":
63
64
  return this.renderAxios(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, payloadDef);
@@ -1 +1 @@
1
- {"version":3,"file":"service.template.js","sourceRoot":"","sources":["../../src/templates/service.template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.template.js","sourceRoot":"","sources":["../../src/templates/service.template.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export declare class Template__view_form extends Template {
16
16
  body: string;
17
17
  importKeys: never[];
18
18
  preTemplates: {
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";
19
+ key: "smd" | "model" | "model_test" | "view_list" | "view_form" | "init_enums" | "init_types" | "init_generated" | "generated" | "generated_http" | "bridge" | "service" | "view_list_columns" | "view_search_input" | "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
22
  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;
50
49
  columns: {
51
50
  name: string;
52
51
  label: string;
53
52
  tc: string;
54
53
  }[];
54
+ smdId: string;
55
55
  columnImports: string;
56
56
  } | {
57
57
  smdId: string;
@@ -21,7 +21,7 @@ export declare class Template__view_list extends Template {
21
21
  body: string;
22
22
  importKeys: never[];
23
23
  preTemplates: {
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";
24
+ key: "smd" | "model" | "model_test" | "view_list" | "view_form" | "init_enums" | "init_types" | "init_generated" | "generated" | "generated_http" | "bridge" | "service" | "view_list_columns" | "view_search_input" | "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
27
  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;
55
54
  columns: {
56
55
  name: string;
57
56
  label: string;
58
57
  tc: string;
59
58
  }[];
59
+ smdId: string;
60
60
  columnImports: string;
61
61
  } | {
62
62
  smdId: string;
@@ -1,14 +1,13 @@
1
1
  import { Knex } from "knex";
2
- import { SonamuDBConfig } from "../database/db";
3
2
  export declare class FixtureManager {
4
3
  usingTables?: string[] | undefined;
5
- private config?;
4
+ private _tdb;
5
+ set tdb(tdb: Knex);
6
+ get tdb(): Knex;
7
+ private _fdb;
8
+ set fdb(fdb: Knex);
9
+ get fdb(): Knex;
6
10
  constructor(usingTables?: string[] | undefined);
7
- init(): Promise<{
8
- tdb: Knex;
9
- fdb: Knex;
10
- knexfile: SonamuDBConfig;
11
- }>;
12
11
  cleanAndSeed(): Promise<void>;
13
12
  initFixtureDB(): Promise<void>;
14
13
  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;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;IAkBnC,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"}
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;IAiBN,WAAW,CAAC;IAhB/B,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAEd;IAED,OAAO,CAAC,IAAI,CAAqB;IACjC,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAEhB;IACD,IAAI,GAAG,IAAI,IAAI,CAEd;gBAEkB,WAAW,CAAC,sBAAU;IAoBnC,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"}
@@ -24,17 +24,20 @@ const chalk_1 = __importDefault(require("chalk"));
24
24
  const child_process_1 = require("child_process");
25
25
  const knex_1 = __importDefault(require("knex"));
26
26
  const lodash_1 = require("lodash");
27
+ const api_1 = require("../api");
27
28
  const base_model_1 = require("../database/base-model");
28
- const db_1 = require("../database/db");
29
29
  const smd_manager_1 = require("../smd/smd-manager");
30
30
  const types_1 = require("../types/types");
31
31
  class FixtureManager {
32
32
  constructor(usingTables) {
33
33
  this.usingTables = usingTables;
34
+ this._tdb = null;
35
+ this._fdb = null;
36
+ this.tdb = (0, knex_1.default)(api_1.Sonamu.dbConfig.test);
37
+ this.fdb = (0, knex_1.default)(api_1.Sonamu.dbConfig.fixture_local);
34
38
  if (process.env.NODE_ENV === "test") {
35
39
  beforeAll(() => __awaiter(this, void 0, void 0, function* () {
36
- yield this.init();
37
- yield smd_manager_1.SMDManager.autoload(true);
40
+ yield api_1.Sonamu.init();
38
41
  }));
39
42
  beforeEach(() => __awaiter(this, void 0, void 0, function* () {
40
43
  yield this.cleanAndSeed();
@@ -45,50 +48,46 @@ class FixtureManager {
45
48
  }));
46
49
  }
47
50
  }
48
- init() {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- if (this.config) {
51
- return this.config;
52
- }
53
- const knexfile = yield db_1.DB.readKnexfile();
54
- this.config = {
55
- knexfile,
56
- tdb: (0, knex_1.default)(knexfile.test),
57
- fdb: (0, knex_1.default)(knexfile.fixture_local),
58
- };
59
- return this.config;
60
- });
51
+ set tdb(tdb) {
52
+ this._tdb = tdb;
53
+ }
54
+ get tdb() {
55
+ return this._tdb;
56
+ }
57
+ set fdb(fdb) {
58
+ this._fdb = fdb;
59
+ }
60
+ get fdb() {
61
+ return this._fdb;
61
62
  }
62
63
  cleanAndSeed() {
63
64
  var e_1, _a;
64
65
  return __awaiter(this, void 0, void 0, function* () {
65
- const { tdb, fdb, knexfile } = yield this.init();
66
- // console.time("FIXTURE-CleanAndSeed");
67
66
  let tableNames = [];
68
67
  if (this.usingTables === undefined) {
69
- const [tables] = yield tdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
68
+ const [tables] = yield this.tdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
70
69
  tableNames = tables.map((tableInfo) => tableInfo["Name"]);
71
70
  }
72
71
  else {
73
72
  tableNames = this.usingTables;
74
73
  }
75
- yield tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
74
+ yield this.tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
76
75
  try {
77
76
  for (var tableNames_1 = __asyncValues(tableNames), tableNames_1_1; tableNames_1_1 = yield tableNames_1.next(), !tableNames_1_1.done;) {
78
77
  let tableName = tableNames_1_1.value;
79
78
  if (tableName == "migrations") {
80
79
  continue;
81
80
  }
82
- const [[fdbChecksumRow]] = yield fdb.raw(`CHECKSUM TABLE ${tableName}`);
81
+ const [[fdbChecksumRow]] = yield this.fdb.raw(`CHECKSUM TABLE ${tableName}`);
83
82
  const fdbChecksum = fdbChecksumRow["Checksum"];
84
- const [[tdbChecksumRow]] = yield tdb.raw(`CHECKSUM TABLE ${tableName}`);
83
+ const [[tdbChecksumRow]] = yield this.tdb.raw(`CHECKSUM TABLE ${tableName}`);
85
84
  const tdbChecksum = tdbChecksumRow["Checksum"];
86
85
  if (fdbChecksum !== tdbChecksum) {
87
- yield tdb(tableName).truncate();
88
- const rawQuery = `INSERT INTO ${knexfile.test.connection.database}.${tableName}
89
- SELECT * FROM ${knexfile.fixture_local.connection
90
- .database}.${tableName}`;
91
- yield tdb.raw(rawQuery);
86
+ yield this.tdb(tableName).truncate();
87
+ const rawQuery = `INSERT INTO ${api_1.Sonamu.dbConfig.test.connection.database}.${tableName}
88
+ SELECT * FROM ${api_1.Sonamu.dbConfig.fixture_local
89
+ .connection.database}.${tableName}`;
90
+ yield this.tdb.raw(rawQuery);
92
91
  }
93
92
  }
94
93
  }
@@ -99,7 +98,7 @@ class FixtureManager {
99
98
  }
100
99
  finally { if (e_1) throw e_1.error; }
101
100
  }
102
- yield tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
101
+ yield this.tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
103
102
  });
104
103
  }
105
104
  // TODO: 추후 작업
@@ -132,9 +131,8 @@ class FixtureManager {
132
131
  }
133
132
  sync() {
134
133
  return __awaiter(this, void 0, void 0, function* () {
135
- const { fdb, knexfile } = yield this.init();
136
- const frdb = (0, knex_1.default)(knexfile.fixture_remote);
137
- const [tables] = yield fdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
134
+ const frdb = (0, knex_1.default)(api_1.Sonamu.dbConfig.fixture_remote);
135
+ const [tables] = yield this.fdb.raw("SHOW TABLE STATUS WHERE Engine IS NOT NULL");
138
136
  const tableNames = tables.map((table) => table.Name);
139
137
  console.log(chalk_1.default.magenta("SYNC..."));
140
138
  yield Promise.all(tableNames.map((tableName) => __awaiter(this, void 0, void 0, function* () {
@@ -142,9 +140,9 @@ class FixtureManager {
142
140
  return;
143
141
  }
144
142
  const remoteChecksum = yield this.getChecksum(frdb, tableName);
145
- const localChecksum = yield this.getChecksum(fdb, tableName);
143
+ const localChecksum = yield this.getChecksum(this.fdb, tableName);
146
144
  if (remoteChecksum !== localChecksum) {
147
- yield fdb.transaction((transaction) => __awaiter(this, void 0, void 0, function* () {
145
+ yield this.fdb.transaction((transaction) => __awaiter(this, void 0, void 0, function* () {
148
146
  yield transaction.raw(`SET FOREIGN_KEY_CHECKS = 0`);
149
147
  yield transaction(tableName).truncate();
150
148
  const rows = yield frdb(tableName);
@@ -185,7 +183,6 @@ class FixtureManager {
185
183
  }
186
184
  getImportQueries(smdId, field, id) {
187
185
  return __awaiter(this, void 0, void 0, function* () {
188
- const { knexfile } = yield this.init();
189
186
  console.log({ smdId, field, id });
190
187
  const smd = smd_manager_1.SMDManager.get(smdId);
191
188
  const wdb = base_model_1.BaseModel.getDB("w");
@@ -195,9 +192,9 @@ class FixtureManager {
195
192
  throw new Error(`${smdId}#${id} row를 찾을 수 없습니다.`);
196
193
  }
197
194
  // 픽스쳐DB, 실DB
198
- const fixtureDatabase = knexfile.fixture_remote.connection
195
+ const fixtureDatabase = api_1.Sonamu.dbConfig.fixture_remote.connection
199
196
  .database;
200
- const realDatabase = knexfile.production_master.connection
197
+ const realDatabase = api_1.Sonamu.dbConfig.production_master.connection
201
198
  .database;
202
199
  const selfQuery = `INSERT IGNORE INTO \`${fixtureDatabase}\`.\`${smd.table}\` (SELECT * FROM \`${realDatabase}\`.\`${smd.table}\` WHERE \`id\` = ${id})`;
203
200
  const args = Object.entries(smd.relations)
@@ -238,12 +235,8 @@ class FixtureManager {
238
235
  }
239
236
  destory() {
240
237
  return __awaiter(this, void 0, void 0, function* () {
241
- if (!this.config) {
242
- return;
243
- }
244
- const { tdb, fdb } = yield this.init();
245
- yield tdb.destroy();
246
- yield fdb.destroy();
238
+ yield this.tdb.destroy();
239
+ yield this.fdb.destroy();
247
240
  });
248
241
  }
249
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fixture-manager.js","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixture-manager.js","sourceRoot":"","sources":["../../src/testing/fixture-manager.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@ export declare function importMultiple(filePaths: string[]): Promise<{
4
4
  imported: any;
5
5
  }[]>;
6
6
  export declare function findAppRootPath(): Promise<string>;
7
+ export declare function findApiRootPath(): Promise<string>;
7
8
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
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,oBAepC"}
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,oBAGpC;AAED,wBAAsB,eAAe,oBAepC"}
@@ -35,7 +35,7 @@ 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.findAppRootPath = exports.importMultiple = exports.globAsync = void 0;
38
+ exports.findApiRootPath = 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
41
  const fs_1 = require("fs");
@@ -66,6 +66,13 @@ function importMultiple(filePaths) {
66
66
  }
67
67
  exports.importMultiple = importMultiple;
68
68
  function findAppRootPath() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const apiRootPath = yield findApiRootPath();
71
+ return apiRootPath.split(path_1.default.sep).slice(0, -1).join(path_1.default.sep);
72
+ });
73
+ }
74
+ exports.findAppRootPath = findAppRootPath;
75
+ function findApiRootPath() {
69
76
  return __awaiter(this, void 0, void 0, function* () {
70
77
  if (require.main === undefined) {
71
78
  throw new Error("Cannot find AppRoot using Sonamu");
@@ -76,12 +83,12 @@ function findAppRootPath() {
76
83
  }
77
84
  do {
78
85
  if ((0, fs_1.existsSync)(path_1.default.join(dir, "/package.json"))) {
79
- return dir.split(path_1.default.sep).slice(0, -1).join(path_1.default.sep);
86
+ return dir.split(path_1.default.sep).join(path_1.default.sep);
80
87
  }
81
88
  dir = dir.split(path_1.default.sep).slice(0, -1).join(path_1.default.sep);
82
89
  } while (dir.split(path_1.default.sep).length > 1);
83
90
  throw new Error("Cannot find AppRoot using Sonamu");
84
91
  });
85
92
  }
86
- exports.findAppRootPath = findAppRootPath;
93
+ exports.findApiRootPath = findApiRootPath;
87
94
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
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,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC3B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,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;AAfD,0CAeC"}
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,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;QAC5C,OAAO,WAAW,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;CAAA;AAHD,0CAGC;AAED,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,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC3B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;QACD,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,IAAI,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC;aAC3C;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;AAfD,0CAeC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.0.8",
3
+ "version": "0.0.10",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
package/src/api/index.ts CHANGED
@@ -2,4 +2,4 @@ export * from "./caster";
2
2
  export * from "./code-converters";
3
3
  export * from "./context";
4
4
  export * from "./decorators";
5
- export * from "./init";
5
+ export * from "./sonamu";
@@ -0,0 +1,212 @@
1
+ import chalk from "chalk";
2
+ import { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
3
+ import { IncomingMessage, Server, ServerResponse } from "http";
4
+ import { ZodError } from "zod";
5
+ import { getZodObjectFromApi } from "./code-converters";
6
+ import { Context } from "./context";
7
+ import { BadRequestException } from "../exceptions/so-exceptions";
8
+ import { SMDManager } from "../smd/smd-manager";
9
+ import { fastifyCaster } from "./caster";
10
+ import { ApiParamType } from "../types/types";
11
+ import { Syncer } from "../syncer/syncer";
12
+ import { isLocal } from "../utils/controller";
13
+ import { DB, SonamuDBConfig } from "../database/db";
14
+ import { BaseModel } from "../database/base-model";
15
+ import { findApiRootPath } from "../utils/utils";
16
+ import path from "path";
17
+ import { existsSync, readFileSync } from "fs";
18
+
19
+ export type SonamuConfig = {
20
+ api: {
21
+ dir: string;
22
+ };
23
+ sync: {
24
+ targets: string[];
25
+ };
26
+ route: {
27
+ prefix: string;
28
+ };
29
+ };
30
+ type SonamuFastifyConfig = {
31
+ contextProvider: (
32
+ defaultContext: Pick<Context, "headers" | "reply">,
33
+ request: FastifyRequest,
34
+ reply: FastifyReply
35
+ ) => Context;
36
+ };
37
+ class SonamuClass {
38
+ public isInitialized: boolean = false;
39
+
40
+ private _apiRootPath: string | null = null;
41
+ set apiRootPath(apiRootPath: string) {
42
+ this._apiRootPath = apiRootPath;
43
+ }
44
+ get apiRootPath(): string {
45
+ if (this._apiRootPath === null) {
46
+ throw new Error("Sonamu has not been initialized");
47
+ }
48
+ return this._apiRootPath!;
49
+ }
50
+ get appRootPath(): string {
51
+ return this.apiRootPath.split(path.sep).slice(0, -1).join(path.sep);
52
+ }
53
+
54
+ private _dbConfig: SonamuDBConfig | null = null;
55
+ set dbConfig(dbConfig: SonamuDBConfig) {
56
+ this._dbConfig = dbConfig;
57
+ }
58
+ get dbConfig(): SonamuDBConfig {
59
+ if (this._dbConfig === null) {
60
+ throw new Error("Sonamu has not been initialized");
61
+ }
62
+ return this._dbConfig!;
63
+ }
64
+
65
+ private _syncer: Syncer | null = null;
66
+ set syncer(syncer: Syncer) {
67
+ this._syncer = syncer;
68
+ }
69
+ get syncer(): Syncer {
70
+ if (this._syncer === null) {
71
+ throw new Error("Sonamu has not been initialized");
72
+ }
73
+ return this._syncer!;
74
+ }
75
+
76
+ private _config: SonamuConfig | null = null;
77
+ set config(config: SonamuConfig) {
78
+ this._config = config;
79
+ }
80
+ get config(): SonamuConfig {
81
+ if (this._config === null) {
82
+ throw new Error("Sonamu has not been initialized");
83
+ }
84
+ return this._config;
85
+ }
86
+
87
+ async init() {
88
+ if (this.isInitialized) {
89
+ return;
90
+ }
91
+ console.time(chalk.cyan("Sonamu.init"));
92
+
93
+ this.apiRootPath = await findApiRootPath();
94
+ const configPath = path.join(this.apiRootPath, "sonamu.config.json");
95
+ if (existsSync(configPath) === false) {
96
+ throw new Error(`Cannot find sonamu.config.json in ${configPath}`);
97
+ }
98
+ this.config = JSON.parse(
99
+ readFileSync(configPath).toString()
100
+ ) as SonamuConfig;
101
+
102
+ // DB 로드
103
+ this.dbConfig = await DB.readKnexfile();
104
+ console.log(chalk.green("DB Config Loaded!"));
105
+
106
+ // SMD 로드
107
+ await SMDManager.autoload();
108
+
109
+ // Syncer
110
+ this.syncer = new Syncer();
111
+
112
+ // Autoload: SMD / Models / Types / APIs
113
+ await this.syncer.autoloadModels();
114
+ await this.syncer.autoloadTypes();
115
+ await this.syncer.autoloadApis();
116
+
117
+ if (isLocal()) {
118
+ await this.syncer.sync();
119
+ }
120
+
121
+ this.isInitialized = true;
122
+ console.timeEnd(chalk.cyan("Sonamu.init"));
123
+ }
124
+
125
+ async withFastify(
126
+ server: FastifyInstance<Server, IncomingMessage, ServerResponse>,
127
+ config: SonamuFastifyConfig
128
+ ) {
129
+ if (this.isInitialized === false) {
130
+ await this.init();
131
+ }
132
+
133
+ // 전체 라우팅 리스트
134
+ server.get(
135
+ `${this.config.route.prefix}/routes`,
136
+ async (_request, _reply): Promise<any> => {
137
+ return this.syncer.apis;
138
+ }
139
+ );
140
+
141
+ // Healthcheck API
142
+ server.get(
143
+ `${this.config.route.prefix}/healthcheck`,
144
+ async (_request, _reply): Promise<string> => {
145
+ return "ok";
146
+ }
147
+ );
148
+
149
+ // API 라우팅 등록
150
+ this.syncer.apis.map((api) => {
151
+ // model
152
+ if (this.syncer.models[api.modelName] === undefined) {
153
+ throw new Error(`정의되지 않은 모델에 접근 ${api.modelName}`);
154
+ }
155
+ const model = this.syncer.models[api.modelName];
156
+
157
+ // 파라미터 정보로 zod 스키마 빌드
158
+ const ReqType = getZodObjectFromApi(api, this.syncer.types);
159
+
160
+ // route
161
+ server.route({
162
+ method: api.options.httpMethod!,
163
+ url: this.config.route.prefix + api.path,
164
+ handler: async (request, reply): Promise<unknown> => {
165
+ const which = api.options.httpMethod === "GET" ? "query" : "body";
166
+ let reqBody: {
167
+ [key: string]: unknown;
168
+ };
169
+ try {
170
+ reqBody = fastifyCaster(ReqType).parse(request[which] ?? {});
171
+ } catch (e) {
172
+ if (e instanceof ZodError) {
173
+ // TODO: BadRequest 에러 핸들링 (ZodError issues를 humanize하여 출력하는 로직 필요)
174
+ throw new BadRequestException(
175
+ `${(e as ZodError).issues[0].message}`,
176
+ e.errors
177
+ );
178
+ } else {
179
+ throw e;
180
+ }
181
+ }
182
+
183
+ const result = await (model as any)[api.methodName].apply(
184
+ model,
185
+ api.parameters.map((param) => {
186
+ // Context 인젝션
187
+ if (ApiParamType.isContext(param.type)) {
188
+ return config.contextProvider(
189
+ {
190
+ headers: request.headers,
191
+ reply,
192
+ },
193
+ request,
194
+ reply
195
+ );
196
+ } else {
197
+ return reqBody[param.name];
198
+ }
199
+ })
200
+ );
201
+ reply.type(api.options.contentType ?? "application/json");
202
+ return result;
203
+ },
204
+ }); // END server.route
205
+ });
206
+ }
207
+
208
+ async destroy(): Promise<void> {
209
+ await BaseModel.destroy();
210
+ }
211
+ }
212
+ export const Sonamu = new SonamuClass();