@simitgroup/simpleapp-generator 1.0.9 → 1.0.14

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 (40) hide show
  1. package/README.md +124 -1
  2. package/dist/createproject.js +39 -18
  3. package/dist/createproject.js.map +1 -1
  4. package/dist/generate.js +47 -20
  5. package/dist/generate.js.map +1 -1
  6. package/dist/index.js +36 -25
  7. package/dist/index.js.map +1 -1
  8. package/dist/processors/jsonschemabuilder.js +38 -8
  9. package/dist/processors/jsonschemabuilder.js.map +1 -1
  10. package/dist/storage.js +5 -0
  11. package/dist/storage.js.map +1 -0
  12. package/package.json +10 -5
  13. package/src/createproject.ts +40 -14
  14. package/src/generate.ts +60 -28
  15. package/src/index.ts +31 -20
  16. package/src/processors/jsonschemabuilder.ts +48 -14
  17. package/src/storage.ts +3 -0
  18. package/src/type.ts +23 -1
  19. package/templates/SimpleAppClient.eta +10 -5
  20. package/templates/SimpleAppService.eta +65 -17
  21. package/templates/basic/model.eta +1 -1
  22. package/templates/basic/pageindex.vue.eta +50 -0
  23. package/templates/basic/pageindexwithid.vue.eta +1 -0
  24. package/templates/basic/{apiclient.eta → simpleappclient.eta} +6 -3
  25. package/templates/nuxt/app.vue.eta +8 -0
  26. package/templates/nuxt/components.crudsimple.vue.eta +95 -0
  27. package/templates/nuxt/components.debugdocdata.vue.eta +20 -0
  28. package/templates/nuxt/components.eventmonitor.vue.eta +79 -0
  29. package/templates/nuxt/components.menus.vue.eta +8 -0
  30. package/templates/nuxt/composables.getautocomplete.ts.eta +24 -0
  31. package/templates/nuxt/composables.getmenus.ts.eta +8 -0
  32. package/templates/nuxt/env.eta +3 -0
  33. package/templates/nuxt/layouts.default.vue.eta +10 -0
  34. package/templates/{nuxt.config.eta → nuxt/nuxt.config.ts.eta} +6 -3
  35. package/templates/nuxt/pages.index.vue.eta +3 -0
  36. package/templates/{nuxt.plugins.eta → nuxt/plugins.simpleapp.ts.eta} +11 -4
  37. package/templates/nuxt/server.api.ts.eta +131 -0
  38. package/templates/nuxt/tailwind.config.ts.eta +9 -0
  39. package/templates/nuxt/tailwind.css.eta +28 -0
  40. package/templates/nuxt.env.eta +0 -2
package/README.md CHANGED
@@ -1,3 +1,68 @@
1
+ after generate
2
+ 1. `./backend/tsconfig.ts` add bolow into compile options
3
+ ```typescript
4
+ "resolveJsonModule": true,
5
+ "esModuleInterop": true,
6
+ ```
7
+ 2.`./backend/.env` change mongodb setting as below example:
8
+ ```bash
9
+ MONGODB_URL='mongodb://mongoadmin:secret@localhost:27017/admin?authMechanism=DEFAULT'
10
+ ```
11
+ 3. download http://localhost:8080/api into `./openapi.yaml`
12
+ 4. regenerate code (for frontend can function completely)
13
+ 5.
14
+
15
+ 9. beautify default tailwind ui
16
+ 10.plugin for ajv
17
+ long string format for description
18
+ errors formating
19
+ 7. load backend tsconfig and add more property: **
20
+ 8. simpleapp generate currentfolder error **
21
+
22
+
23
+ # Todo
24
+ x1. override app.vue *
25
+ x2. create layout
26
+ simpleapp (first time only)
27
+ /default *
28
+ x3. components/ (first time only)
29
+ x /MonitorEvent.vue *
30
+ x /CrudBasic.vue **
31
+ x /Menubar *
32
+ 4. create page/docs (everytime)
33
+ /index.ts
34
+ //create page if docs/documentname not exists ***
35
+ //override if docs/documentname/delete-me-for-avoid-override exists *
36
+ 5. login/logout sessions
37
+ x6. auto create *
38
+ x server/api to backend *
39
+
40
+
41
+
42
+
43
+
44
+ 1. define foreign key relationship in json schema2
45
+ 2. auto index and block deletion
46
+ 3. when delete identify foreign connected documents
47
+ 4. how to unique key
48
+ 5. how to multi-tenancy
49
+ 6. login/logout in nuxt
50
+ 7. jwt in nestjs
51
+ 8. format errors at server side link back client side
52
+ 9. how to auto toast
53
+ 10.server side custom validation link back client side
54
+ 11.permission controls
55
+ 12.find records
56
+ 13.audit trail
57
+ 14.data isolation by org, branch and tenant
58
+ 15.statistics, aggregations
59
+ 16.auto generate frontend page
60
+ 17.
61
+
62
+
63
+
64
+
65
+
1
66
  # simpleapp-generator
2
67
  ## this project still in alpha stage!
3
68
 
@@ -44,6 +109,13 @@ Key Ideal:
44
109
  - you can regenerate source code multiple time without worry your customization gone (there is a way!)
45
110
 
46
111
 
112
+ Init Nuxt script
113
+ 1. npm i -D @sidebase/nuxt-auth
114
+ 2. pnpm i --save next-auth@4.21.1
115
+ npm i -D @sidebase/nuxt-session
116
+
117
+
118
+
47
119
  ## You shall know
48
120
  This project assume you familiar with below:
49
121
  1. typescript (no typescript, not reliable frontend)
@@ -55,6 +127,10 @@ There is special format value:
55
127
  1. `field-autcomplete-code`:field for document code, like `student_code,document_no`
56
128
  2. `field-autocomplete-label`: field for document name, like `student_name, product_name`
57
129
 
130
+ # Special properties:
131
+ ## object:
132
+ * autocomplete-src=category => autocomplete list from server-url/category/autocomplete
133
+
58
134
  You need to install mongodb and openapi generator:
59
135
  1. https://www.mongodb.com/docs/manual/installation/
60
136
  2. https://openapi-generator.tech/docs/installation/
@@ -669,4 +745,51 @@ async newFindOne(@Param('id') id: string) {
669
745
  `person.addHobbies('hobby1')`,`person.addAddress({})`,`person.delAddress(index:number)` edit `newFindOne`:
670
746
  ```
671
747
  ```
672
- 6. create bothend code for `person`
748
+ 6. create bothend code for `person`
749
+
750
+
751
+
752
+ foreign key
753
+ cat
754
+ category_id
755
+ category_code
756
+ category_name
757
+
758
+ product
759
+ product_id
760
+ product_code
761
+ product_name
762
+ category => category_id: category_code
763
+
764
+
765
+
766
+ invoice
767
+ invoice_id
768
+ invoice_no
769
+ invoice_date
770
+ total
771
+ details =>
772
+ product => product_id: product_code
773
+ qty
774
+ price
775
+ subtotal
776
+
777
+ order
778
+ order_id
779
+ order_no
780
+ order_date
781
+ total
782
+ details =>
783
+ product => product_id: product_code
784
+ qty
785
+ price
786
+ subtotal
787
+
788
+
789
+ cat => foreignkey: []
790
+ prd => foreignkey: category => category
791
+ invoice => foreignkey: detail.product=>product
792
+ order => foreignkey: detail.product=>product
793
+
794
+ cat =[product.category]
795
+ product=[invoice.detail.product, order.detail.product]
@@ -56,25 +56,46 @@ const checkNestCli = (callback) => {
56
56
  const createNuxt = (targetfolder, callback) => {
57
57
  log.info("setting up nuxt frontend ${targetfolder}");
58
58
  log.info(`frontend nuxt project "${targetfolder}" created, installing module`);
59
- (0, child_process_1.exec)(`cd ${targetfolder};mkdir plugins;pnpm install;pnpm install -D prettier`, (error, stdout, stderr) => {
59
+ (0, child_process_1.exec)(`cd ${targetfolder};pnpm install;pnpm install -D @types/node prettier @nuxtjs/tailwindcss`, (error, stdout, stderr) => {
60
60
  //;pnpm install
61
- if (!error) {
62
- (0, child_process_1.exec)(`pnpm install --save ajv ajv-formats primeflex primeicons primevue axios json-schema @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
63
- const eta = new Eta({ views: constants.templatedir });
64
- const variables = [];
65
- const txtEnv = eta.render('./nuxt.env.eta', variables);
66
- (0, fs_1.writeFileSync)(`${targetfolder}/.env`, txtEnv);
67
- const txtConfig = eta.render('./nuxt.config.eta', variables);
68
- (0, fs_1.writeFileSync)(`${targetfolder}/nuxt.config.ts`, txtConfig);
69
- const txtPlugins = eta.render('./nuxt.plugins.eta', variables);
70
- (0, fs_1.writeFileSync)(`${targetfolder}/plugins/simpleapp.ts`, txtPlugins);
71
- log.info("nuxt project completed");
72
- callback();
73
- });
74
- }
75
- else {
76
- throw error;
77
- }
61
+ console.log(error, stdout, stderr);
62
+ (0, child_process_1.exec)(`cd ${targetfolder};pnpm install --save ajv ajv-formats primeflex primeicons prettier primevue axios json-schema mitt @simitgroup/simpleapp-vue-component@latest`, (error, stdout, stderr) => {
63
+ console.log(error, stdout, stderr);
64
+ (0, fs_1.mkdirSync)(`${targetfolder}/assets/css/`, { recursive: true });
65
+ (0, fs_1.mkdirSync)(`${targetfolder}/layouts`, { recursive: true });
66
+ (0, fs_1.mkdirSync)(`${targetfolder}/components`, { recursive: true });
67
+ (0, fs_1.mkdirSync)(`${targetfolder}/server/api`, { recursive: true });
68
+ (0, fs_1.mkdirSync)(`${targetfolder}/pages`, { recursive: true });
69
+ (0, fs_1.mkdirSync)(`${targetfolder}/plugins`, { recursive: true });
70
+ const eta = new Eta({ views: `${constants.templatedir}/nuxt` });
71
+ const variables = [];
72
+ const writes = {
73
+ './app.vue.eta': 'app.vue',
74
+ './components.eventmonitor.vue.eta': 'components/EventMonitor.vue',
75
+ './components.menus.vue.eta': 'components/Menus.vue',
76
+ './components.crudsimple.vue.eta': 'components/CrudSimple.vue',
77
+ './components.debugdocdata.vue.eta': 'components/DebugDocumentData.vue',
78
+ './layouts.default.vue.eta': 'layouts/default.vue',
79
+ './server.api.ts.eta': 'server/api/[...].ts',
80
+ './nuxt.config.ts.eta': 'nuxt.config.ts',
81
+ './pages.index.vue.eta': 'pages/index.vue',
82
+ './plugins.simpleapp.ts.eta': 'plugins/simpleapp.ts',
83
+ './tailwind.config.ts.eta': 'tailwind.config.ts',
84
+ './tailwind.css.eta': 'assets/css/tailwind.css',
85
+ './env.eta': '.env',
86
+ };
87
+ const templates = Object.getOwnPropertyNames(writes);
88
+ for (let i = 0; i < templates.length; i++) {
89
+ const template = templates[i];
90
+ const filename = writes[template];
91
+ const txt = eta.render(template, variables);
92
+ const file = `${targetfolder}/${filename}`;
93
+ log.info("writing ", file);
94
+ (0, fs_1.writeFileSync)(file, txt);
95
+ }
96
+ log.info("nuxt project completed");
97
+ callback();
98
+ });
78
99
  });
79
100
  };
80
101
  exports.createNuxt = createNuxt;
@@ -1 +1 @@
1
- {"version":3,"file":"createproject.js","sourceRoot":"","sources":["../src/createproject.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createproject.js","sourceRoot":"","sources":["../src/createproject.ts"],"names":[],"mappings":"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"}
package/dist/generate.js CHANGED
@@ -28,6 +28,7 @@ exports.initialize = void 0;
28
28
  // import { readJsonSchemaBuilder } from './processors/jsonschemabuilder';
29
29
  const constants = __importStar(require("./constant"));
30
30
  const jsonschemabuilder_1 = require("./processors/jsonschemabuilder");
31
+ const storage_1 = require("./storage");
31
32
  const tslog_1 = require("tslog");
32
33
  const log = new tslog_1.Logger();
33
34
  const clc = require("cli-color");
@@ -40,9 +41,10 @@ const extHfb = '.xhfb.json';
40
41
  const extjsonschema = '.jsonschema.json';
41
42
  let jsonschemas = {};
42
43
  const docs = [];
43
- const initialize = (defFolder, backendfolder, frontendfolder) => {
44
+ const initialize = async (defFolder, backendfolder, frontendfolder) => {
44
45
  prepareEnvironments(backendfolder, frontendfolder);
45
46
  let activatemodules = [];
47
+ //
46
48
  const files = (0, fs_1.readdirSync)(defFolder);
47
49
  // readdir(defFolder, (err, files) => {
48
50
  // files.forEach((file) => {
@@ -59,7 +61,11 @@ const initialize = (defFolder, backendfolder, frontendfolder) => {
59
61
  log.info(`Load ` + clc.green(file));
60
62
  rendertype = 'basic';
61
63
  jsonschemas[docname] = jsondata;
62
- allmodels = (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata);
64
+ // foreignkeys:
65
+ // tmpforeignkeys:TypeForeignKey
66
+ allmodels = await (0, jsonschemabuilder_1.readJsonSchemaBuilder)(doctype, docname, jsondata, storage_1.foreignkeys);
67
+ //foreignkeycatalogues
68
+ // foreignkeys
63
69
  generate(docname, doctype, rendertype, allmodels, backendfolder, frontendfolder);
64
70
  activatemodules.push({ doctype: doctype, docname: capitalizeFirstLetter(docname) });
65
71
  }
@@ -67,17 +73,20 @@ const initialize = (defFolder, backendfolder, frontendfolder) => {
67
73
  log.warn(`Load ` + clc.yellow(file) + ` but it is not supported`);
68
74
  }
69
75
  }
76
+ // log.warn("foreignkeys---",foreignkeys)
70
77
  log.info("Activated backend modules: ", activatemodules);
71
78
  // log.info(activatemodules)
72
- loadSimpleAppModules(activatemodules, backendfolder);
79
+ finalize(activatemodules, backendfolder, frontendfolder);
73
80
  return Promise.resolve(true);
74
81
  };
75
82
  exports.initialize = initialize;
76
83
  const generate = (docname, doctype, rendertype, allmodels, backendfolder, frontendfolder) => {
77
84
  const targetfolder = `${backendfolder}/src/docs/${doctype}`;
85
+ const frontendpagefolder = `${frontendfolder}/pages`;
78
86
  try {
79
87
  (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
80
- (0, fs_1.mkdirSync)(`${frontendfolder}/server/docs/`, { recursive: true });
88
+ (0, fs_1.mkdirSync)(`${frontendfolder}/simpleapp/simpleappdocs/`, { recursive: true });
89
+ (0, fs_1.mkdirSync)(frontendpagefolder, { recursive: true });
81
90
  }
82
91
  catch (err) {
83
92
  //do nothing if folder exists
@@ -175,7 +184,7 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
175
184
  // prepare readme
176
185
  const txtReadme = eta.render('./readme', variables);
177
186
  (0, fs_1.writeFileSync)(`${targetfolder}/README.md`, txtReadme);
178
- const frontendfile = `${frontendfolder}/server/docs/${variables.typename}Doc.ts`;
187
+ const frontendfile = `${frontendfolder}/simpleapp/simpleappdocs/${variables.typename}Doc.ts`;
179
188
  let frontEndCode = '';
180
189
  if ((0, fs_1.existsSync)(frontendfile)) {
181
190
  const clientcodes = (0, fs_1.readFileSync)(frontendfile).toString();
@@ -187,25 +196,33 @@ const generate = (docname, doctype, rendertype, allmodels, backendfolder, fronte
187
196
  }
188
197
  }
189
198
  variables.frontEndCode = frontEndCode !== null && frontEndCode !== void 0 ? frontEndCode : '';
190
- const txtDocClient = eta.render('./apiclient', variables);
199
+ const txtDocClient = eta.render('./simpleappclient.eta', variables);
191
200
  (0, fs_1.writeFileSync)(frontendfile, txtDocClient);
192
- // // fs.writeFileSync(`${targetfolder}/${doctype}.uischema.ts`, txtUISchema);
193
- log.info(`- write completed: ` + clc.green(doctype));
194
- //create type
195
- //create service
196
- //create controller
197
- //create module
198
- //create apischema
199
- //create beforesave if not exists
200
- // console.log(schema, res);
201
+ generateClientPage(variables, eta, frontendpagefolder);
202
+ log.info(`- write completed: ${doctype}`);
203
+ }
204
+ };
205
+ const generateClientPage = (variables, eta, frontendpagefolder) => {
206
+ const docname = variables.name;
207
+ const targetfolder = `${frontendpagefolder}/${docname}`;
208
+ const overridefilename = `${targetfolder}/delete-me-for-avoid-override`;
209
+ if (!(0, fs_1.existsSync)(targetfolder)) {
210
+ (0, fs_1.mkdirSync)(targetfolder);
211
+ (0, fs_1.writeFileSync)(overridefilename, 'delete this file to prevent override by generator');
212
+ }
213
+ if ((0, fs_1.existsSync)(overridefilename)) {
214
+ const txtIndex = eta.render('./pageindex.vue.eta', variables);
215
+ const txtIndexwithid = eta.render('./pageindexwithid.vue.eta', variables);
216
+ (0, fs_1.writeFileSync)(`${targetfolder}/index.vue`, txtIndex);
217
+ (0, fs_1.writeFileSync)(`${targetfolder}/[id].vue`, txtIndexwithid);
201
218
  }
202
219
  };
203
220
  const prepareEnvironments = (backendfolder, frontendfolder) => {
204
221
  const targetfolder = `${backendfolder}/src/class`;
205
- const targetfrontendfolder = `${frontendfolder}/server`;
222
+ const targetfrontendfolder = `${frontendfolder}/server/api`;
206
223
  try {
207
224
  (0, fs_1.mkdirSync)(targetfolder, { recursive: true });
208
- (0, fs_1.mkdirSync)(targetfrontendfolder);
225
+ (0, fs_1.mkdirSync)(targetfrontendfolder, { recursive: true });
209
226
  }
210
227
  catch (error) {
211
228
  //do nothing
@@ -215,13 +232,23 @@ const prepareEnvironments = (backendfolder, frontendfolder) => {
215
232
  //copy over backend controller
216
233
  (0, fs_1.copyFileSync)(`${constants.templatedir}/SimpleAppController.eta`, `${targetfolder}/SimpleAppController.ts`);
217
234
  //copy over frontend apiabstract class
218
- // copyFileSync(`${constants.templatedir}/SimpleAppClient.eta`,`${targetfrontendfolder}/SimpleAppClient.ts`)
235
+ // copyFileSync(`${constants.templatedir}/nuxt.apigateway.eta`,`${targetfrontendfolder}/[...].ts`)
219
236
  //prepare backend config.ts
220
237
  //copy over frontend config.ts
221
238
  };
222
- const loadSimpleAppModules = (modules, targetfolder) => {
239
+ const finalize = (modules, backendfolder, frontendfolder) => {
240
+ log.info("Finalizing foreignkey:", storage_1.foreignkeys);
241
+ (0, fs_1.mkdirSync)(`${backendfolder}/src/dicts/`, { recursive: true });
242
+ (0, fs_1.mkdirSync)(`${frontendfolder}/composables/`, { recursive: true });
223
243
  const eta = new Eta({ views: constants.templatedir });
224
244
  const txtMainModule = eta.render('app.module.eta', modules);
225
- (0, fs_1.writeFileSync)(`${targetfolder}/src/app.module.ts`, txtMainModule);
245
+ (0, fs_1.writeFileSync)(`${backendfolder}/src/app.module.ts`, txtMainModule);
246
+ const foreignkeyfile = `${backendfolder}/src/dicts/foreignkeys.json`;
247
+ (0, fs_1.writeFileSync)(foreignkeyfile, JSON.stringify(storage_1.foreignkeys));
248
+ console.log("write to foreignkey file ", foreignkeyfile);
249
+ const txtCatalogue = eta.render('./nuxt/composables.getautocomplete.ts.eta', modules);
250
+ (0, fs_1.writeFileSync)(`${frontendfolder}/composables/getAutocomplete.ts`, txtCatalogue);
251
+ const txtMenus = eta.render('./nuxt/composables.getmenus.ts.eta', modules);
252
+ (0, fs_1.writeFileSync)(`${frontendfolder}/composables/getMenus.ts`, txtMenus);
226
253
  };
227
254
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAkE;AAClE,0EAA0E;AAC1E,sDAAuC;AACvC,sEAAoE;AAIpE,iCAAwC;AACxC,MAAM,GAAG,GAAoB,IAAI,cAAM,EAAE,CAAC;AAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAGjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,2BAAoG;AACpG,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/B,MAAM,EAAE,qBAAqB,EAAE,GAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnD,MAAM,KAAK,GAAG,WAAW,CAAC;AAC1B,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,MAAM,aAAa,GAAG,kBAAkB,CAAC;AACzC,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB,MAAM,IAAI,GAAG,EAAE,CAAC;AAET,MAAM,UAAU,GAAI,CAAC,SAAgB,EAAC,aAAoB,EAAC,cAAqB,EAAE,EAAE;IACzF,mBAAmB,CAAC,aAAa,EAAC,cAAc,CAAC,CAAA;IACnD,IAAI,eAAe,GAAgB,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,SAAS,CAAC,CAAA;IACpC,uCAAuC;IACrC,4BAA4B;IAC5B,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAE,KAAK,CAAC,MAAM,EAAC,CAAC,EAAE,EAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,UAAU,GAAG,OAAO,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,iBAAY,EAAC,SAAS,GAAE,IAAI,CAAC,GAAG,GAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACxC,IAAI,SAAS,GAAgB,EAAiB,CAAC;QAE/C,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YAChC,GAAG,CAAC,IAAI,CAAC,OAAO,GAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACjC,UAAU,GAAG,OAAO,CAAC;YACrB,WAAW,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC;YAChC,SAAS,GAAG,IAAA,yCAAqB,EAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,aAAa,EAAC,cAAc,CAAC,CAAC;YAC/E,eAAe,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,qBAAqB,CAAC,OAAO,CAAC,EAAC,CAAC,CAAA;SAC/E;aAAM;YACL,GAAG,CAAC,IAAI,CAAC,OAAO,GAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,CAAA;SAChE;KAEF;IACD,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAC,eAAe,CAAC,CAAA;IACvD,4BAA4B;IAC5B,oBAAoB,CAAC,eAAe,EAAC,aAAa,CAAC,CAAA;IACnD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC,CAAA;AAhCU,QAAA,UAAU,cAgCpB;AAIH,MAAM,QAAQ,GAAG,CACf,OAAe,EACf,OAAe,EACf,UAAkB,EAClB,SAAsB,EACtB,aAAoB,EACpB,cAAqB,EACrB,EAAE;IACF,MAAM,YAAY,GAAG,GAAG,aAAa,aAAa,OAAO,EAAE,CAAC;IAE5D,IAAI;QAEF,IAAA,cAAS,EAAC,YAAY,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAA,cAAS,EAAC,GAAG,cAAc,eAAe,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KAEjE;IAAC,OAAO,GAAG,EAAE;QACZ,6BAA6B;KAC9B;YAAS;QACR,MAAM,cAAc,GAAG,GAAG,SAAS,CAAC,WAAW,IAAI,UAAU,EAAE,CAAA;QAC/D,GAAG,CAAC,IAAI,CAAC,cAAc,OAAO,KAAK,OAAO,KAAK,cAAc,EAAE,CAAC,CAAA;QAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;YAClB,KAAK,EAAE,cAAc;YACrB,cAAc,EACZ,sFAAsF;gBACtF,iIAAiI;SACpI,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,SAAS;YACjB,gBAAgB,EAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACpE,gBAAgB,EAAC,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACpE,MAAM,EAAE,SAAS,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YACvD,aAAa,EAAE,qBAAqB,CAAC,OAAO,CAAC;YAC7C,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC;YACxC,iBAAiB,EACf,OAAO,GAAG,YAAY,GAAG,qBAAqB,CAAC,OAAO,CAAC;YACzD,YAAY,EAAE,OAAO,GAAG,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC;YAChE,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC;YAChC,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,cAAc,EAAC,EAAE;SAClB,CAAC;QAEF,wDAAwD;QAExD,8DAA8D;QAE9D,6BAA6B;QAC7B,wCAAwC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChD,IAAA,kBAAa,EAAC,GAAG,YAAY,IAAI,OAAO,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,qEAAqE;QACrE,kEAAkE;QAClE,MAAM;QAEN,sDAAsD;QACtD,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAA,kBAAa,EAAC,GAAG,YAAY,IAAI,OAAO,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAEzE,mEAAmE;QACnE,MAAM,iBAAiB,GAAG,GAAG,YAAY,IAAI,OAAO,gBAAgB,CAAC;QACrE,IAAI,CAAC,IAAA,eAAU,EAAC,iBAAiB,CAAC,EAAE;YAClC,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAC5D,IAAA,kBAAa,EACX,GAAG,YAAY,IAAI,OAAO,gBAAgB,EAC1C,aAAa,CACd,CAAC;SACH;QACD,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,IAAA,kBAAa,EAAC,GAAG,YAAY,IAAI,OAAO,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE/D,yBAAyB;QACzB,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAA,kBAAa,EAAC,GAAG,YAAY,IAAI,OAAO,eAAe,EAAE,YAAY,CAAC,CAAC;QAEvE,0BAA0B;QAC1B,8BAA8B;QAE9B,MAAM,WAAW,GAAG,GAAG,YAAY,IAAI,OAAO,aAAa,CAAC;QAC5D,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAA,iBAAY,EAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE1D,qDAAqD;YACrD,MAAM,MAAM,GACV,2DAA2D,CAAC;YAC9D,MAAM,MAAM,GACV,2DAA2D,CAAC;YAC9D,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,aAAa,EAAE;gBACjB,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;aAChC;YAED,IAAI,aAAa,EAAE;gBACjB,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;aAChC;SACF;QAED,SAAS,CAAC,WAAW,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,8CAA8C,CAAC;QACtF,SAAS,CAAC,WAAW,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,8CAA8C,CAAC;QACtF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtD,IAAA,kBAAa,EAAC,GAAG,YAAY,IAAI,OAAO,aAAa,EAAE,UAAU,CAAC,CAAC;QAEnE,4EAA4E;QAC5E,MAAM,cAAc,GAAG,GAAG,YAAY,IAAI,OAAO,gBAAgB,CAAC;QAClE,IAAI,cAAc,GAAG,EAAE,CAAA;QACvB,IAAI,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE;YAC9B,gDAAgD;YAChD,MAAM,qBAAqB,GAAG,IAAA,iBAAY,EAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtE,MAAM,eAAe,GAAG,iEAAiE,CAAC;YAC1F,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACtE,IAAI,gBAAgB,EAAE;gBACpB,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;aACtC;SACF;QACD,SAAS,CAAC,cAAc,GAAG,cAAc,IAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,sDAAsD,CAAC;QACxH,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAA,kBAAa,EAAC,cAAc,EAAE,aAAa,CAAC,CAAC;QAE7C,iBAAiB;QACjB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,IAAA,kBAAa,EAAC,GAAG,YAAY,IAAI,OAAO,YAAY,EAAE,SAAS,CAAC,CAAC;QAEjE,iBAAiB;QACjB,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,IAAA,kBAAa,EAAC,GAAG,YAAY,YAAY,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,YAAY,GAAG,GAAG,cAAc,gBAAgB,SAAS,CAAC,QAAQ,QAAQ,CAAC;QACjF,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,IAAA,eAAU,EAAC,YAAY,CAAC,EAAE;YAC5B,MAAM,WAAW,GAAG,IAAA,iBAAY,EAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAE1D,+CAA+C;YAC/C,MAAM,MAAM,GACV,6DAA6D,CAAC;YAEhE,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,cAAc,EAAE;gBAClB,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;aAClC;SACF;QACD,SAAS,CAAC,YAAY,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC1D,IAAA,kBAAa,EAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAE1C,8EAA8E;QAC9E,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QAElD,aAAa;QACb,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;QACf,kBAAkB;QAClB,iCAAiC;QACjC,4BAA4B;KAC7B;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,aAAoB,EAAC,cAAqB,EAAC,EAAE;IACxE,MAAM,YAAY,GAAG,GAAG,aAAa,YAAY,CAAA;IACjD,MAAM,oBAAoB,GAAG,GAAG,cAAc,SAAS,CAAA;IACvD,IAAG;QACD,IAAA,cAAS,EAAC,YAAY,EAAC,EAAC,SAAS,EAAC,IAAI,EAAC,CAAC,CAAC;QACzC,IAAA,cAAS,EAAC,oBAAoB,CAAC,CAAC;KACjC;IAAA,OAAM,KAAK,EAAC;QACX,YAAY;KACb;IAED,iCAAiC;IAEjC,IAAA,iBAAY,EAAC,GAAG,SAAS,CAAC,WAAW,uBAAuB,EAAC,GAAG,YAAY,sBAAsB,CAAC,CAAA;IAEnG,8BAA8B;IAC9B,IAAA,iBAAY,EAAC,GAAG,SAAS,CAAC,WAAW,0BAA0B,EAAC,GAAG,YAAY,yBAAyB,CAAC,CAAA;IAEzG,sCAAsC;IACtC,4GAA4G;IAE1G,2BAA2B;IAE7B,8BAA8B;AAChC,CAAC,CAAA;AAGD,MAAM,oBAAoB,GAAC,CAAC,OAAsB,EAAC,YAAmB,EAAC,EAAE;IACvE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,EAAC,KAAK,EAAC,SAAS,CAAC,WAAW,EAAC,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAA,kBAAa,EAAC,GAAG,YAAY,oBAAoB,EAAE,aAAa,CAAC,CAAC;AAEpE,CAAC,CAAA"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,24 +8,32 @@ const fs = require('fs');
8
8
  const { createNuxt, createNest } = require('./createproject');
9
9
  const { exec } = require("child_process");
10
10
  const capitalizeFirstLetter = require('./libs');
11
- // const {Logger, ILogObj} = require( "tslog");
12
- // const log: Logger = new Logger();
11
+ const { Logger, ILogObj } = require("tslog");
12
+ const log = new Logger();
13
13
  const figlet = require("figlet");
14
14
  // const program = new Command();
15
- let version = '1.0.8';
15
+ const pj = require('../package.json');
16
+ let version = pj.version;
16
17
  program
17
18
  .version(version)
18
19
  .description("An simpleapp CLI tool for generate frontend (vuejs) and backend(nestjs) codes")
19
20
  .option("-c, --config-file <value>", 'configuration file content such as:{"definationsFolder":"./definations", "backendFolder":"./nestproject/src/docs", "frontendFolder":"./nuxt/server"}')
20
- .option("-s, --definations-folder <value>", "load defination files from which folder")
21
- .option("-b, --backend-folder <value>", "Create backend code at which folder")
22
- .option("-f, --frontend-folder <value>", "Create frontend code at which folder")
23
- .option("-i, --openapi3-yaml <value>", 'openapi3.yaml generated by backend server')
21
+ // .option("-s, --definations-folder <value>", "load defination files from which folder")
22
+ // .option("-b, --backend-folder <value>", "Create backend code at which folder")
23
+ // .option("-f, --frontend-folder <value>", "Create frontend code at which folder")
24
+ // .option("-i, --openapi3-yaml <value>", 'openapi3.yaml generated by backend server')
24
25
  .parse(process.argv);
25
26
  const options = program.opts();
26
27
  console.log(figlet.textSync(`SimpleApp Generator ${version}`));
27
28
  // console.log(options)
28
- const configs = require(options.configFile);
29
+ let path = '';
30
+ if (options.configFile[0] == '.') {
31
+ path = process.cwd() + '/' + options.configFile;
32
+ }
33
+ else {
34
+ path = options.configFile;
35
+ }
36
+ const configs = require(path);
29
37
  console.log("configurations: ", configs);
30
38
  const definationsFolder = (_a = configs.definationsFolder) !== null && _a !== void 0 ? _a : options.definationsFolder;
31
39
  const backendFolder = (_b = configs.backendFolder) !== null && _b !== void 0 ? _b : options.backendFolder;
@@ -33,42 +41,45 @@ const frontendFolder = (_c = configs.frontendFolder) !== null && _c !== void 0 ?
33
41
  const openapi3Yaml = (_d = configs.openapi3Yaml) !== null && _d !== void 0 ? _d : options.openapi3Yaml;
34
42
  const runGenNext = (callback) => {
35
43
  if (!fs.existsSync(backendFolder)) {
36
- console.error(`${backendFolder} does not exists, please run "nest new -p pnpm ${backendFolder}"`);
44
+ log.error(`${backendFolder} does not exists, please run "nest new -p pnpm ${backendFolder}"`);
37
45
  }
38
46
  else if (!fs.existsSync(`${backendFolder}/.env`)) {
39
- console.log(`initial nest configuratoin for simpleapp generator`);
47
+ log.info(`initial nest configuratoin for simpleapp generator`);
40
48
  createNest(backendFolder, callback);
41
49
  }
42
50
  else {
43
- console.log(`.env file exists, skip nest initialization`);
51
+ log.warn(`.env file exists, skip nest initialization`);
44
52
  callback();
45
53
  }
46
54
  };
47
55
  const runGenNuxt = (callback) => {
48
56
  if (!fs.existsSync(frontendFolder)) {
49
- console.error(`${frontendFolder} does not exists, please run "npx nuxi@latest init ${frontendFolder}"`);
57
+ log.error(`${frontendFolder} does not exists, please run "npx nuxi@latest init ${frontendFolder}"`);
50
58
  }
51
59
  else if (!fs.existsSync(`${frontendFolder}/.env`)) {
52
- console.log(`initial nuxt configuratoin for simpleapp generator`);
60
+ log.info(`initial nuxt configuratoin for simpleapp generator`);
53
61
  createNuxt(frontendFolder, callback);
54
62
  }
55
63
  else {
56
- console.log(`.env file exists, skip nuxt initialization`);
64
+ log.warn(`.env file exists, skip nuxt initialization`);
57
65
  callback();
58
66
  }
59
67
  };
60
68
  runGenNext(() => {
61
- console.log("runGenNext (backen) done");
62
- // runGenNuxt(()=>{
63
- console.log("runGenNuxt (frontend) done");
64
- generator.initialize(definationsFolder, backendFolder, frontendFolder);
65
- if (openapi3Yaml != '') {
66
- exec(`openapi-generator generate -i ${openapi3Yaml} -o ${frontendFolder}/server/openapi -g typescript-axios --skip-validate-spec`, (error, stdout, stderr) => {
67
- if (error) {
68
- console.error(stderr);
69
- }
70
- });
71
- }
69
+ log.info("runGenNext (backen) done");
70
+ runGenNuxt(() => {
71
+ log.info("runGenNuxt (frontend) done");
72
+ generator.initialize(definationsFolder, backendFolder, frontendFolder);
73
+ exec(`cd ${frontendFolder};npx prettier --write "./pages/**/*.vue" "./simpleapp/**/*" `);
74
+ exec(`cd ${backendFolder};npx run format `);
75
+ if (openapi3Yaml != '') {
76
+ exec(`openapi-generator generate -i ${openapi3Yaml} -o ${frontendFolder}/simpleapp/openapi -g typescript-axios --skip-validate-spec`, (error, stdout, stderr) => {
77
+ if (error) {
78
+ log.error(stderr);
79
+ }
80
+ });
81
+ }
82
+ });
72
83
  });
73
84
  // pnpm exec prettier ./src/docs --write
74
85
  // pnpm exec prettier ./apiclients --write
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,34 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.readJsonSchemaBuilder = void 0;
4
7
  const libs_1 = require("../libs");
5
8
  const tslog_1 = require("tslog");
9
+ const json_schema_ref_parser_1 = __importDefault(require("@apidevtools/json-schema-ref-parser"));
10
+ const storage_1 = require("../storage");
6
11
  // import { ConflictException } from '@nestjs/common';
7
12
  const type_1 = require("../type");
8
13
  const log = new tslog_1.Logger();
9
14
  const FIELD_AUTOCOMPLETE_CODE = 'field-autocomplete-code';
10
15
  const FIELD_AUTOCOMPLETE_NAME = 'field-autocomplete-name';
16
+ const FOREIGNKEY_PROPERTY = 'x-foreignkey';
11
17
  let allmodels = {};
18
+ let fullschema = {};
12
19
  let fieldAutoCompleteCode = '';
13
20
  let fieldAutoCompleteName = '';
14
- const readJsonSchemaBuilder = (doctype, docname, jsondata) => {
21
+ const readJsonSchemaBuilder = async (doctype, docname, orijsondata, allforeignkeys) => {
15
22
  fieldAutoCompleteCode = '';
16
23
  fieldAutoCompleteName = '';
17
24
  allmodels = {};
18
- const validateddata = Object.assign({}, jsondata);
25
+ const validateddata = Object.assign({}, orijsondata);
19
26
  let schema;
27
+ const tmpjsondata = await json_schema_ref_parser_1.default.dereference(orijsondata).then((schema) => {
28
+ // console.log("schema",doctype, schema['properties']['category']? schema['properties']['category']:'')
29
+ return schema;
30
+ });
31
+ const jsondata = Object.assign({}, tmpjsondata);
20
32
  if (jsondata && jsondata.type == 'object') {
21
33
  //no _id then need add
22
34
  // console.log(jsondata)
@@ -34,7 +46,7 @@ const readJsonSchemaBuilder = (doctype, docname, jsondata) => {
34
46
  log.error(`you shall define 1 field with format: '${FIELD_AUTOCOMPLETE_NAME}'}`);
35
47
  throw "missing field format";
36
48
  }
37
- return allmodels;
49
+ return Promise.resolve(allmodels);
38
50
  };
39
51
  exports.readJsonSchemaBuilder = readJsonSchemaBuilder;
40
52
  const processObject = (doctype, docname, jsondata) => {
@@ -74,11 +86,29 @@ requiredlist) => {
74
86
  if (obj.format && obj.format == FIELD_AUTOCOMPLETE_NAME) {
75
87
  fieldAutoCompleteName = key;
76
88
  }
77
- if (obj.type == 'object' && !obj.properties) {
78
- console.log("Skip empty object", docname, ': ', key);
79
- newmodel[key] = 'Object';
80
- }
81
- else if (obj.type == 'object' && obj.properties) {
89
+ // if (obj.type == 'object' && obj.items ){
90
+ // console.log("Refer to another object",docname,': ',key,obj,obj.items)
91
+ // obj,obj.items
92
+ //foreignkeys
93
+ //FOREIGNKEY_PROPERTY
94
+ // newmodel[key] = 'Object';
95
+ // }
96
+ // else
97
+ if (obj.type == 'object') {
98
+ if (obj[FOREIGNKEY_PROPERTY]) {
99
+ console.warn("FOREIGNKEY_PROPERTY exists", FOREIGNKEY_PROPERTY, obj[FOREIGNKEY_PROPERTY]);
100
+ const masterdatacollection = obj[FOREIGNKEY_PROPERTY];
101
+ const clientdatacollection = docname.toLowerCase();
102
+ const foreignkeyidentity = key + '._id';
103
+ if (!storage_1.foreignkeys[masterdatacollection]) {
104
+ let tmp = {};
105
+ tmp[clientdatacollection] = [foreignkeyidentity];
106
+ storage_1.foreignkeys[masterdatacollection] = tmp;
107
+ }
108
+ else {
109
+ storage_1.foreignkeys[masterdatacollection][clientdatacollection].push(foreignkeyidentity);
110
+ }
111
+ }
82
112
  genSchema(newName, obj.type, obj.properties, obj.required);
83
113
  newmodel[key] = newName;
84
114
  }