From 10dc7680798045f6b9a0e66a59baf4f487b0676b Mon Sep 17 00:00:00 2001 From: sabarinathan Date: Fri, 1 Aug 2025 18:11:54 +0530 Subject: [PATCH] filemodel creation --- package-lock.json | 293 ++++++++++++++++++ package.json | 1 + src/BaseModel/controller/controller.ts | 3 +- .../controller/fileModelController.ts | 101 ++++++ src/BaseModel/{project => model}/basemodel.ts | 54 ++-- src/BaseModel/model/fileModel.ts | 20 ++ src/BaseModel/routes/routes.ts | 2 + 7 files changed, 446 insertions(+), 28 deletions(-) create mode 100644 src/BaseModel/controller/fileModelController.ts rename src/BaseModel/{project => model}/basemodel.ts (91%) create mode 100644 src/BaseModel/model/fileModel.ts diff --git a/package-lock.json b/package-lock.json index dbe76b8..dcaa648 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "express": "^5.1.0", "fs": "^0.0.1-security", "mongoose": "^8.16.3", + "nodemon": "^3.1.10", "path": "^0.12.7" }, "devDependencies": { @@ -161,6 +162,34 @@ "node": ">= 0.6" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/body-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", @@ -180,6 +209,26 @@ "node": ">=18" } }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/bson": { "version": "6.10.4", "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", @@ -223,6 +272,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, "node_modules/content-disposition": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", @@ -412,6 +489,17 @@ "url": "https://opencollective.com/express" } }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/finalhandler": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", @@ -449,6 +537,19 @@ "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -492,6 +593,17 @@ "node": ">= 0.4" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -503,6 +615,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -559,6 +679,11 @@ "node": ">=0.10.0" } }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -572,6 +697,44 @@ "node": ">= 0.10" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -636,6 +799,17 @@ "node": ">= 0.6" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/mongodb": { "version": "6.17.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.17.0.tgz", @@ -743,6 +917,41 @@ "node": ">= 0.6" } }, + "node_modules/nodemon": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", + "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -806,6 +1015,17 @@ "node": ">=16" } }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -826,6 +1046,11 @@ "node": ">= 0.10" } }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -870,6 +1095,17 @@ "node": ">= 0.8" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -909,6 +1145,17 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/send": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", @@ -1022,6 +1269,17 @@ "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -1038,6 +1296,28 @@ "node": ">= 0.8" } }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -1046,6 +1326,14 @@ "node": ">=0.6" } }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/tr46": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", @@ -1070,6 +1358,11 @@ "node": ">= 0.6" } }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "node_modules/undici-types": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", diff --git a/package.json b/package.json index 4287569..c44256a 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "express": "^5.1.0", "fs": "^0.0.1-security", "mongoose": "^8.16.3", + "nodemon": "^3.1.10", "path": "^0.12.7" }, "devDependencies": { diff --git a/src/BaseModel/controller/controller.ts b/src/BaseModel/controller/controller.ts index d5fdf78..a6e4d20 100644 --- a/src/BaseModel/controller/controller.ts +++ b/src/BaseModel/controller/controller.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import { Request, Response } from "express"; import path from "path"; -import baseType from "../project/basemodel"; +import baseType from "../model/basemodel"; export const createcontroller = async ( req: Request, res: Response @@ -17,6 +17,7 @@ export const createcontroller = async ( userName, architecture, } = req.body; + console.log('req.body: ', req.body); try { const basePath = path.join(pathName, BaseName, "src"); diff --git a/src/BaseModel/controller/fileModelController.ts b/src/BaseModel/controller/fileModelController.ts new file mode 100644 index 0000000..f268454 --- /dev/null +++ b/src/BaseModel/controller/fileModelController.ts @@ -0,0 +1,101 @@ +import fs from "node:fs"; +import { Request, Response } from "express"; +import path from "path"; +import baseType from "../model/basemodel"; +import FileMode from "../model/fileModel"; +export const fileModelCreatecontroller = async ( + req: Request, + res: Response +): Promise => { + console.log("req.body: ", req.body); + const { + pathName, + baseId, + modelName, + organization, + attributes, + } = req.body; + + try { +const findBaseName=await baseType(organization).findById(baseId) +console.log('baseId: ', baseId); +console.log('findBaseName: ', findBaseName); + + + const attrToSchema = (attr: any) => { + const mapType: any = { + string: 'String', + number: 'Number', + boolean: 'Boolean' + }; + const lines = []; + for (const [key, config] of Object.entries(attr)) { + const line: string[] = []; + line.push(`${key}: {`); + line.push(` type: ${mapType[(config as any).type] || 'String'},`); + if ((config as any).required) line.push(` required: true,`); + if ((config as any).default !== undefined) line.push(` default: ${(config as any).default},`); + if ((config as any).minLength) line.push(` minlength: ${(config as any).minLength},`); + if ((config as any).maxLength) line.push(` maxlength: ${(config as any).maxLength},`); + if ((config as any).min !== undefined) line.push(` min: ${(config as any).min},`); + if ((config as any).max !== undefined) line.push(` max: ${(config as any).max},`); + line.push('},'); + lines.push(line.join('\n')); + } + return lines.join('\n'); + }; + const schemaCode = ` +import mongoose from 'mongoose'; + +const ${modelName}Schema = new mongoose.Schema({ +${attrToSchema(attributes)} +}); + +export const ${modelName} = mongoose.model('${modelName}', ${modelName}Schema); +`; + + const basePath = path.join(pathName, findBaseName.BaseName, "src","Models"); + const modelFilePath = path.join(basePath, `${modelName}SchemaModel.ts`); + + +// Read all subfolders inside basePath + if (!fs.existsSync(basePath)) { + fs.mkdirSync(basePath, { recursive: true }); +} + +fs.writeFileSync(modelFilePath, schemaCode.trim()); + + return res.status(200).json({ message: 'Model file created successfully.' }); + + + + + + + + // const folders = ["Controller", "Routes", "Models", "Services"]; + + + // if (!fs.existsSync(basePath)) { + // fs.mkdirSync(basePath, { recursive: true }); + // console.log(`Created root path: ${basePath}`); + // } + // folders.forEach(async (folder) => { + // const fullPath = path.join(basePath, folder); + // if (!fs.existsSync(fullPath)) { + // fs.mkdirSync(fullPath, { recursive: true }); + // const BaseDataSave = await FileMode(organization).create({ + // baseId, + // modelName, + // attributes, + + // }); + // } else { + // res.send(`Folder already exists: ${fullPath}`); + // console.log(`Folder already exists: ${folder}`); + // } + // }); + } catch (error: unknown) { + res.send(error); + } +}; diff --git a/src/BaseModel/project/basemodel.ts b/src/BaseModel/model/basemodel.ts similarity index 91% rename from src/BaseModel/project/basemodel.ts rename to src/BaseModel/model/basemodel.ts index cb0d7d7..7c445be 100644 --- a/src/BaseModel/project/basemodel.ts +++ b/src/BaseModel/model/basemodel.ts @@ -1,27 +1,27 @@ -import { Schema, Document } from "mongoose"; -import MainModel from "../connection/connection"; -interface IBase extends Document { - BaseName: string; - createdBy: string; - description: string; - members: [string]; - useableLanguage: string; - typeOfDB: string; - DBName: string; - architecture: string; -} -const baseSchema: Schema = new Schema({ - BaseName: { type: String }, - createdBy: { type: String }, - description: { type: String }, - DBName: { type: String }, - typeOfDB: { type: String }, - useableLanguage: { type: String }, - architecture: { type: String }, - members: { type: [String] }, -}); - -const baseType = (db: any) => { - return MainModel(db, "Base", baseSchema, "Base"); -}; -export default baseType; +import { Schema, Document } from "mongoose"; +import MainModel from "../connection/connection"; +export interface IBase extends Document { + BaseName: string; + createdBy: string; + description: string; + members: [string]; + useableLanguage: string; + typeOfDB: string; + DBName: string; + architecture: string; +} +const baseSchema: Schema = new Schema({ + BaseName: { type: String }, + createdBy: { type: String }, + description: { type: String }, + DBName: { type: String }, + typeOfDB: { type: String }, + useableLanguage: { type: String }, + architecture: { type: String }, + members: { type: [String] }, +}); + +const baseType = (db: any) => { + return MainModel(db, "Base", baseSchema, "Base"); +}; +export default baseType; diff --git a/src/BaseModel/model/fileModel.ts b/src/BaseModel/model/fileModel.ts new file mode 100644 index 0000000..5a290d1 --- /dev/null +++ b/src/BaseModel/model/fileModel.ts @@ -0,0 +1,20 @@ +import { Schema, Document } from "mongoose"; +import MainModel from "../connection/connection"; +import { IBase } from "./basemodel"; +interface IFileModel extends Document { + baseId: IBase["_id"]; + modelName: string; + attributes: []; + createdAt: number; +} +const baseFileModelSchema: Schema = new Schema({ + baseId: { type: Schema.Types.ObjectId, ref: "Base" }, + modelName: { type: String, required: true }, + attributes: { type: [], required: true }, + createdAt: { type: Number, default: Date.now() } +}); + +const FileMode = (db: any) => { + return MainModel(db, "Model", baseFileModelSchema, "Modle"); +}; +export default FileMode; diff --git a/src/BaseModel/routes/routes.ts b/src/BaseModel/routes/routes.ts index 6fbb12d..1a49974 100644 --- a/src/BaseModel/routes/routes.ts +++ b/src/BaseModel/routes/routes.ts @@ -1,6 +1,8 @@ import express from "express"; import { createcontroller } from "../controller/controller"; +import { fileModelCreatecontroller } from "../controller/fileModelController"; const appRoutes = express.Router(); appRoutes.post("/createfolder", createcontroller); +appRoutes.post("/createfileModel", fileModelCreatecontroller); export default appRoutes \ No newline at end of file