frgen 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/db.js CHANGED
@@ -1,2 +1,72 @@
1
- #!/usr/bin/env node
2
- "use strict";var e=require("pg"),s=require("dotenv"),r=process.env.NODE_ENV?".env.".concat(process.env.NODE_ENV):".env";s.config({path:r});var o=new e.Pool({user:process.env.DB_USER,host:process.env.DB_HOST,database:process.env.DB_NAME,password:process.env.DB_PASSWORD||"",port:process.env.DB_PORT,schema:process.env.DB_SCHEMA});module.exports=o;
1
+ "use strict";
2
+
3
+ const dotenv = require("dotenv");
4
+ const path = require("path");
5
+ const fs = require("fs");
6
+
7
+ const envName = process.env.NODE_ENV || "development";
8
+ const envFile = path.resolve(process.cwd(), `.env.${envName}`);
9
+
10
+ if (fs.existsSync(envFile)) {
11
+ dotenv.config({ path: envFile });
12
+ console.log(`✅ Loaded ${envFile}`);
13
+ } else {
14
+ dotenv.config();
15
+ console.log("📄 Loaded default .env");
16
+ }
17
+
18
+ const DB_CLIENT = process.env.DB_CLIENT || "pg";
19
+ let pool;
20
+
21
+ function createPool() {
22
+ if (pool) return pool;
23
+
24
+ console.log(`📦 Creating pool for DB_CLIENT: ${DB_CLIENT}`);
25
+
26
+ if (DB_CLIENT === "pg") {
27
+ try {
28
+ const { Pool } = require("pg");
29
+ pool = new Pool({
30
+ user: process.env.DB_USER,
31
+ host: process.env.DB_HOST,
32
+ database: process.env.DB_NAME,
33
+ password: process.env.DB_PASSWORD || "",
34
+ port: process.env.DB_PORT,
35
+ });
36
+ } catch (err) {
37
+ throw new Error("❌ 'pg' module not found. Please run `npm install pg`.");
38
+ }
39
+ } else if (DB_CLIENT === "mysql") {
40
+ try {
41
+ // Validasi apakah modul tersedia
42
+ require.resolve("mysql2/promise");
43
+
44
+ // Load driver MySQL
45
+ const mysql = require("mysql2/promise");
46
+
47
+ // ✅ GUNAKAN langsung mysql.createPool()
48
+ pool = mysql.createPool({
49
+ user: process.env.DB_USER,
50
+ host: process.env.DB_HOST,
51
+ database: process.env.DB_NAME,
52
+ password: process.env.DB_PASSWORD || "",
53
+ port: process.env.DB_PORT,
54
+ waitForConnections: true,
55
+ connectionLimit: 10,
56
+ queueLimit: 0,
57
+ });
58
+ } catch (err) {
59
+ throw new Error(
60
+ "❌ 'mysql2' module not found. Please run `npm install mysql2`."
61
+ );
62
+ }
63
+ } else {
64
+ throw new Error(
65
+ `❌ Unsupported DB_CLIENT: '${DB_CLIENT}'. Use 'pg' or 'mysql'.`
66
+ );
67
+ }
68
+
69
+ return pool;
70
+ }
71
+
72
+ module.exports = { createPool };
package/lib/main.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e,r=require("./_virtual/_rollupPluginBabelHelpers.js"),a=require("./utils.js"),t=require("./make_model.js"),n=require("./make_resource.js"),s=require("./make_controller.js"),c=require("./make_crud.js"),i=require("./make_validation.js"),o=require("./make_service.js"),u=require("./db.js"),l=r.toArray(process.argv);l[0],l[1];var k=l[2],f=l[3],v=l[4],p=l.slice(5);k||(console.error("action undefined."),process.exit(1));var m="default",x=null!==(e=process.env.DB_SCHEMA)&&void 0!==e?e:"public",d=!1;if(p.length>0){var b,h=r.createForOfIteratorHelper(p);try{for(h.s();!(b=h.n()).done;){var y=b.value.split("="),j=r.slicedToArray(y,2),q=j[0],_=j[1];"--schema"===q&&(x=_),"--path"===q&&(m=_),"--prisma"===q&&(d=!0)}}catch(e){h.e(e)}finally{h.f()}}if("make:crud"===k){var g=r.toArray(process.argv);g[0],g[1],g[2];var A=g.slice(3);if(A.length>0){var H,T=r.createForOfIteratorHelper(A);try{for(T.s();!(H=T.n()).done;){var w=H.value.split("="),B=r.slicedToArray(w,2),C=B[0],D=B[1];"--schema"===C&&(x=D),"--prisma"===C&&(d=!0)}}catch(e){T.e(e)}finally{T.f()}}}(function(){var e=r.asyncToGenerator(r.regeneratorRuntime().mark((function e(){return r.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a.checkDatabaseConnection(u);case 3:if("make:model"!==k){e.next=8;break}return e.next=6,t(f,v,u,x);case 6:e.next=31;break;case 8:if("make:resource"!==k){e.next=13;break}return e.next=11,n(f,v,u,x);case 11:e.next=31;break;case 13:if("make:controller"!==k){e.next=18;break}return e.next=16,s(f,v,m,u,x,d);case 16:e.next=31;break;case 18:if("make:crud"!==k){e.next=23;break}return e.next=21,c(m,u,x,d);case 21:e.next=31;break;case 23:if("make:validation"!==k){e.next=28;break}return e.next=26,i(f,v,u,x);case 26:e.next=31;break;case 28:if("make:service"!==k){e.next=31;break}return e.next=31,o(f,v,m,d);case 31:e.next=37;break;case 33:e.prev=33,e.t0=e.catch(0),console.log(e.t0),process.exit(1);case 37:return e.prev=37,u.end(),e.finish(37);case 40:case"end":return e.stop()}}),e,null,[[0,33,37,40]])})));return function(){return e.apply(this,arguments)}})()();
2
+ "use strict";var e,r=require("./_virtual/_rollupPluginBabelHelpers.js"),a=require("./utils.js"),t=require("./make_model.js"),n=require("./make_resource.js"),s=require("./make_controller.js"),c=require("./make_crud.js"),o=require("./make_validation.js"),u=require("./make_service.js"),i=require("./db.js"),l=r.toArray(process.argv);l[0],l[1];var p=l[2],v=l[3],k=l[4],m=l.slice(5);p||(console.error("action undefined."),process.exit(1));var b="default",d=null!==(e=process.env.DB_SCHEMA)&&void 0!==e?e:"public",f=!1,x=process.env.DB_CLIENT||"pg";if(m.length>0){var y,q=r.createForOfIteratorHelper(m);try{for(q.s();!(y=q.n()).done;){var g=y.value.split("="),h=r.slicedToArray(g,2),_=h[0],j=h[1];"--schema"===_&&(d=j),"--path"===_&&(b=j),"--prisma"===_&&(f=!0),"--mysql"===_&&(x="mysql"),"--pg"===_&&(x="pg")}}catch(e){q.e(e)}finally{q.f()}}if("make:crud"===p){var A=r.toArray(process.argv);A[0],A[1],A[2];var C=A.slice(3);if(C.length>0){var B,D=r.createForOfIteratorHelper(C);try{for(D.s();!(B=D.n()).done;){var E=B.value.split("="),R=r.slicedToArray(E,2),T=R[0],H=R[1];"--schema"===T&&(d=H),"--prisma"===T&&(f=!0),"--pg"===T&&(x="pg"),"--mysql"===T&&(x="mysql",d=process.env.DB_NAME)}}catch(e){D.e(e)}finally{D.f()}}}(function(){var e=r.asyncToGenerator(r.regeneratorRuntime().mark((function e(){var l,m,y;return r.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,process.env.DB_CLIENT=x,e.next=4,i.createPool();case 4:return l=e.sent,e.next=7,a.checkDatabaseConnection(l);case 7:e.t0=p,e.next="make:model"===e.t0?10:"make:resource"===e.t0?13:"make:controller"===e.t0?16:"make:crud"===e.t0?19:"make:validation"===e.t0?22:"make:service"===e.t0?25:28;break;case 10:return e.next=12,t(v,k,l,d,x);case 12:return e.abrupt("break",30);case 13:return e.next=15,n(v,k,l,d,x);case 15:return e.abrupt("break",30);case 16:return e.next=18,s(v,k,b,l,d,f,x);case 18:return e.abrupt("break",30);case 19:return e.next=21,c(b,l,d,f,x);case 21:return e.abrupt("break",30);case 22:return e.next=24,o(v,k,l,d,x);case 24:return e.abrupt("break",30);case 25:return e.next=27,u(v,k,b,f);case 27:return e.abrupt("break",30);case 28:console.error("❌ Unknown action: ".concat(p)),process.exit(1);case 30:e.next=36;break;case 32:e.prev=32,e.t1=e.catch(0),console.error("❌ ERROR:",e.t1),process.exit(1);case 36:if(e.prev=36,null===(m=l)||void 0===m||!m.end){e.next=42;break}return e.next=40,l.end();case 40:e.next=45;break;case 42:if(null===(y=l)||void 0===y||!y.releaseConnection){e.next=45;break}return e.next=45,l.releaseConnection();case 45:return e.finish(36);case 46:case"end":return e.stop()}}),e,null,[[0,32,36,46]])})));return function(){return e.apply(this,arguments)}})()();
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),r=require("path"),t=require("./utils.js"),o=require("./make_resource.js"),a=require("./make_validation.js"),c=require("./make_service.js"),s=function(){var s=e.asyncToGenerator(e.regeneratorRuntime().mark((function s(i,l,u,d){var m,p,x,v,h,q,f,R,C,y,w,g,j,P,b=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return m=b.length>4&&void 0!==b[4]?b[4]:"public",p=b.length>5&&void 0!==b[5]&&b[5],e.prev=2,i||(console.error("class name undefined"),process.exit(1)),l||(console.error("table name undefined"),process.exit(1)),x=i.replace(/Controller$/,"").replace(/\.controller/i,""),v=t.capitalize(t.toCamelCase(t.removePluralSuffix(l))),h=t.toCamelCase(t.removePluralSuffix(l)),q=x,f=t.toCamelCase(t.removePluralSuffix(l)),R=t.toCamelCase(t.removePluralSuffix(l)),C="".concat(t.toCamelCase(q),".controller.ts"),y=r.join(process.cwd(),"src","app","http","controller",C),u&&"default"!==u&&("/"!==u.charAt(u.length-1)&&(u+="/"),y=r.join(process.cwd(),"src",u,C)),w="\n const validated = await req.validation(".concat(R,"Schema, {\n context: { method: req.method },\n });\n "),g="\n const validated = await req.validation(".concat(R,"Schema);\n "),j='\nimport { NextFunction, Request, Response } from "express";\nimport { Controller, Get, Post, Put, Delete } from "frexp/lib/Decorator";\nimport { getPaginate, getDetail, handleCreate, handleUpdate, handleDelete} from "@service/'.concat(h,'.service";\nimport ').concat(v,'Resource from "@resource/').concat(t.toCamelCase(v),'.resource";\nimport { ').concat(R,'Schema } from "@validation/').concat(f,'.validation";\n\n@Controller("/').concat(t.toKebabCase(x),'")\nexport class ').concat(q,'Controller {\n\n @Get("/")\n async index(req: Request, res: Response, next: NextFunction){\n try {\n const results = await getPaginate(req.query);\n res.json(').concat(v,'Resource.paginate(results));\n } catch (error) {\n next(error);\n }\n };\n\n @Get("/:id")\n async view(req: Request, res: Response, next: NextFunction){\n try {\n const model = await getDetail(+req.params.id)\n res.json(new ').concat(v,'Resource(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Post("/")\n async create(req: Request, res: Response, next: NextFunction){\n try {\n ').concat(g,"\n const model = await handleCreate(").concat(""===g?"req.body":"validated",");\n res.json(new ").concat(v,'Resource(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Put("/")\n async update(req: Request, res: Response, next: NextFunction){\n try {\n ').concat(w,"\n const model = await handleUpdate(").concat(""===w?"req.body":"validated",");\n res.json(new ").concat(v,'Resource(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Delete("/:id")\n async destroy(req: Request, res: Response, next: NextFunction){\n try {\n await handleDelete(+req.params.id)\n res.sendStatus(204);\n } catch (error) {\n next(error);\n }\n };\n}\n'),P=r.dirname(y),n.existsSync(P)||n.mkdirSync(P,{recursive:!0}),n.writeFile(y,j,(function(e){e?console.error("err: ",e):console.log("File ".concat(C," has been created"))})),e.next=22,o("".concat(v,"Resource"),l,d,m);case 22:return e.next=24,a("".concat(f,".validation"),l,d,m);case 24:return e.next=26,c("".concat(h,".service"),l,void 0,p);case 26:e.next=31;break;case 28:e.prev=28,e.t0=e.catch(2),console.error("err::",e.t0);case 31:return e.prev=31,e.finish(31);case 33:case"end":return e.stop()}}),s,null,[[2,28,31,33]])})));return function(e,n,r,t){return s.apply(this,arguments)}}();module.exports=s;
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),r=require("path"),t=require("./utils.js"),o=require("./make_resource.js"),a=require("./make_validation.js"),c=require("./make_service.js"),s=function(){var s=e.asyncToGenerator(e.regeneratorRuntime().mark((function s(i,l,u,d){var p,m,x,v,q,h,R,f,g,y,w,C,j,b,F,P=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return p=P.length>4&&void 0!==P[4]?P[4]:"public",m=P.length>5&&void 0!==P[5]&&P[5],x=P.length>6&&void 0!==P[6]?P[6]:"pg",e.prev=3,i||(console.error("class name undefined"),process.exit(1)),l||(console.error("table name undefined"),process.exit(1)),v=i.replace(/Controller$/,"").replace(/\.controller/i,""),q=t.toCamelCase(t.removePluralSuffix(l)),h=t.capitalize(q),R=v,f="".concat(t.toCamelCase(R),".controller.ts"),g=r.join(process.cwd(),"src","app","http","controller",f),u&&"default"!==u&&("/"!==u.charAt(u.length-1)&&(u+="/"),g=r.join(process.cwd(),"src",u,f)),y="create".concat(t.capitalize(q),"Schema"),w="update".concat(t.capitalize(q),"Schema"),C="\n const validated = await req.validation(".concat(w,");\n "),j="\n const validated = await req.validation(".concat(y,");\n "),b='\nimport { NextFunction, Request, Response } from "express";\nimport { Controller, Get, Post, Put, Delete } from "frexp/lib/Decorator";\nimport { getPaginate, getDetail, handleCreate, handleUpdate, handleDelete} from "@service/'.concat(q,'.service";\nimport ').concat(h,'Resource from "@resource/').concat(t.toCamelCase(h),'.resource";\nimport { ').concat(y,",").concat(w,' } from "@validation/').concat(q,'.validation";\n\n@Controller("/').concat(t.toKebabCase(v),'")\nexport class ').concat(R,'Controller {\n\n @Get("/")\n async getIndex(req: Request, res: Response, next: NextFunction){\n try {\n const results = await getPaginate(req.query);\n res.json(').concat(h,'Resource.paginate(results));\n } catch (error) {\n next(error);\n }\n };\n\n @Get("/:id")\n async getView(req: Request, res: Response, next: NextFunction){\n try {\n const model = await getDetail(+req.params.id)\n res.json(new ').concat(h,'Resource(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Post("/")\n async postCreate(req: Request, res: Response, next: NextFunction){\n try {\n ').concat(j,"\n const model = await handleCreate(").concat(""===j?"req.body":"validated",");\n res.json(new ").concat(h,'Resource(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Put("/")\n async put').concat(h,"(req: Request, res: Response, next: NextFunction){\n try {\n ").concat(C,"\n const model = await handleUpdate(").concat(""===C?"req.body":"validated",");\n res.json(new ").concat(h,'Resource(model, true));\n } catch (error) {\n next(error);\n }\n };\n\n @Delete("/:id")\n async delete').concat(h,"(req: Request, res: Response, next: NextFunction){\n try {\n await handleDelete(+req.params.id)\n res.sendStatus(204);\n } catch (error) {\n next(error);\n }\n };\n}\n"),F=r.dirname(g),n.existsSync(F)||n.mkdirSync(F,{recursive:!0}),n.writeFile(g,b,(function(e){e?console.error("err: ",e):console.log("File ".concat(f," has been created"))})),e.next=23,o("".concat(h,"Resource"),l,d,p,x);case 23:return e.next=25,a("".concat(q,".validation"),l,d,p,x);case 25:return e.next=27,c("".concat(q,".service"),l,void 0,m);case 27:e.next=32;break;case 29:e.prev=29,e.t0=e.catch(3),console.error("err::",e.t0);case 32:return e.prev=32,e.finish(32);case 34:case"end":return e.stop()}}),s,null,[[3,29,32,34]])})));return function(e,n,r,t){return s.apply(this,arguments)}}();module.exports=s;
package/lib/make_crud.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("./make_controller.js"),t=require("./make_model.js"),a=require("./utils.js"),n=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(s,c){var l,u,o,i,p,v,f,m,x,b=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return l=b.length>2&&void 0!==b[2]?b[2]:"public",u=b.length>3&&void 0!==b[3]&&b[3],n.prev=2,n.next=5,a.getTables(c,l);case 5:o=n.sent,i=e.createForOfIteratorHelper(o),n.prev=7,i.s();case 9:if((p=i.n()).done){n.next=21;break}if(v=p.value,f=v.table_name,m=a.capitalize(a.toCamelCase(a.removePluralSuffix(v.table_name))),x="".concat(m,"Controller"),u){n.next=17;break}return n.next=17,t(m,f,c,l);case 17:return n.next=19,r(x,f,s,c,l,u);case 19:n.next=9;break;case 21:n.next=26;break;case 23:n.prev=23,n.t0=n.catch(7),i.e(n.t0);case 26:return n.prev=26,i.f(),n.finish(26);case 29:n.next=34;break;case 31:n.prev=31,n.t1=n.catch(2),console.log(n.t1);case 34:return n.prev=34,n.finish(34);case 36:case"end":return n.stop()}}),n,null,[[2,31,34,36],[7,23,26,29]])})));return function(e,r){return n.apply(this,arguments)}}();module.exports=n;
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("./make_controller.js"),t=require("./make_model.js"),n=require("./utils.js"),a=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(s,l){var c,o,u,i,p,v,f,x,m,b,g,h=arguments;return e.regeneratorRuntime().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return c=h.length>2&&void 0!==h[2]?h[2]:"public",o=h.length>3&&void 0!==h[3]&&h[3],u=h.length>4&&void 0!==h[4]?h[4]:"pg",a.prev=3,a.next=6,n.getTables(l,c,u);case 6:i=a.sent,p=e.createForOfIteratorHelper(i),a.prev=8,p.s();case 10:if((v=p.n()).done){a.next=22;break}if(x=v.value,m=null!==(f=x.table_name)&&void 0!==f?f:x.TABLE_NAME,b=n.capitalize(n.toCamelCase(n.removePluralSuffix(m))),g="".concat(b,"Controller"),o){a.next=18;break}return a.next=18,t(b,m,l,c,u);case 18:return a.next=20,r(g,m,s,l,c,o,u);case 20:a.next=10;break;case 22:a.next=27;break;case 24:a.prev=24,a.t0=a.catch(8),p.e(a.t0);case 27:return a.prev=27,p.f(),a.finish(27);case 30:a.next=35;break;case 32:a.prev=32,a.t1=a.catch(3),console.log(a.t1);case 35:return a.prev=35,a.finish(35);case 37:case"end":return a.stop()}}),a,null,[[3,32,35,37],[8,24,27,30]])})));return function(e,r){return a.apply(this,arguments)}}();module.exports=a;
package/lib/make_model.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js");function a(n){return Array.from(new Set(Object.entries(n).map((function(n){var t=e.slicedToArray(n,2);t[0];var a=t[1].relatedTable;return"import ".concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a)))," from './").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a))),"';")})))).join("\n")}function o(n,t){var a=Object.entries(n).map((function(n){var a=e.slicedToArray(n,2),o=a[0],c=a[1],i=c.relation,l=c.relatedTable,s=c.foreignKey,u=c.localKey;return"\n ".concat(o,": {\n relation: Model.").concat(i,",\n modelClass: ").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(l))),",\n join: {\n ").concat("ManyToManyRelation"===i?"\n from: '".concat(u,"',\n through: {\n from: '").concat(s,"',\n to: '").concat(s,"'\n },\n to: '").concat(u,"'"):"\n from: '".concat(t,".").concat(s,"',\n to: '").concat(l,".").concat(u,"'"),"\n }\n }")})).join(",");return"\nstatic get relationMappings() {\nreturn {".concat(a,"\n};\n}")}var c=function(){var c=e.asyncToGenerator(e.regeneratorRuntime().mark((function c(i,l,s){var u,m,p,d,f,b,g,v,y,h,x,C,j=arguments;return e.regeneratorRuntime().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return u=j.length>3&&void 0!==j[3]?j[3]:"public",c.prev=1,i||(console.error("class name undefined"),process.exit(1)),l||(console.error("table name undefined"),process.exit(1)),m="".concat(i,".ts"),p=t.join(process.cwd(),"src","app","model",m),c.next=8,r.getTableColumns(s,null!=l?l:i.toLowerCase()+"s",u);case 8:return d=c.sent,f=Object.fromEntries(d.map((function(e){return[e.column_name,{defaultValue:e.column_default,type:e.data_type,maxLength:e.character_maximum_length,nullable:"YES"===e.is_nullable}]}))),c.next=12,r.getTableRelations(s,l,u);case 12:b=c.sent,g=Object.entries(f).map((function(n){var t,a=e.slicedToArray(n,2),o=a[0],c=a[1],i=r.toCamelCase(o),l=(t=c.type,["integer","bigint","smallint","tinyint","numeric","decimal","float"].includes(t)?"number":["varchar","text","string","char","character varying","uuid"].includes(t)?"string":["boolean"].includes(t)?"boolean":["date","datetime","timestamp","timestamp with time zone"].includes(t)?"Date":"any");return" public ".concat(i,": ").concat(l,";")})).join("\n"),v='\n static get tableName() {\n return "'.concat(i.toLowerCase(),'s";\n }\n '),l&&(v='\n static get tableName() {\n return "'.concat(l,'";\n }\n ')),y=b?a(b):"",h=b?o(b,l):"",x='\n import Model from "@lib/Model";\n import { snakeCaseMappers } from "objection";\n '.concat(y,"\n \n export default class ").concat(i," extends Model {\n \n ").concat(g,"\n \n ").concat(v,'\n \n static get idColumn() {\n return "id";\n }\n \n static get columnNameMappers() {\n return snakeCaseMappers();\n }\n \n ').concat(h,"\n }"),C=t.dirname(p),n.existsSync(C)||n.mkdirSync(C,{recursive:!0}),n.writeFile(p,x,(function(e){e?console.error("err::",e):console.log("File ".concat(m," has been created"))})),c.next=27;break;case 24:c.prev=24,c.t0=c.catch(1),console.error("err::",c.t0);case 27:return c.prev=27,c.finish(27);case 29:case"end":return c.stop()}}),c,null,[[1,24,27,29]])})));return function(e,n,t){return c.apply(this,arguments)}}();module.exports=c;
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js");function a(n){return Array.from(new Set(Object.entries(n).map((function(n){var t=e.slicedToArray(n,2);t[0];var a=t[1].relatedTable;return"import ".concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a)))," from './").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(a))),"';")})))).join("\n")}function o(n,t){var a=Object.entries(n).map((function(n){var a=e.slicedToArray(n,2),o=a[0],c=a[1],i=c.relation,l=c.relatedTable,s=c.foreignKey,u=c.localKey;return"\n ".concat(o,": {\n relation: Model.").concat(i,",\n modelClass: ").concat(r.capitalize(r.toCamelCase(r.removePluralSuffix(l))),",\n join: {\n ").concat("ManyToManyRelation"===i?"\n from: '".concat(u,"',\n through: {\n from: '").concat(s,"',\n to: '").concat(s,"'\n },\n to: '").concat(u,"'"):"\n from: '".concat(t,".").concat(s,"',\n to: '").concat(l,".").concat(u,"'"),"\n }\n }")})).join(",");return"\nstatic get relationMappings() {\nreturn {".concat(a,"\n};\n}")}var c=function(){var c=e.asyncToGenerator(e.regeneratorRuntime().mark((function c(i,l,s){var u,m,p,d,f,b,g,v,y,h,x,C,j,M=arguments;return e.regeneratorRuntime().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return u=M.length>3&&void 0!==M[3]?M[3]:"public",m=M.length>4&&void 0!==M[4]?M[4]:"pg",c.prev=2,i||(console.error("class name undefined"),process.exit(1)),l||(console.error("table name undefined"),process.exit(1)),p="".concat(i,".ts"),d=t.join(process.cwd(),"src","app","model",p),c.next=9,r.getTableColumns(s,null!=l?l:i.toLowerCase()+"s",u,m);case 9:return f=c.sent,b=Object.fromEntries(f.map((function(e){return[e.column_name,{defaultValue:e.column_default,type:e.data_type,maxLength:e.character_maximum_length,nullable:"YES"===e.is_nullable}]}))),c.next=13,r.getTableRelations(s,l,u,m);case 13:g=c.sent,v=Object.entries(b).map((function(n){var t,a=e.slicedToArray(n,2),o=a[0],c=a[1],i=r.toCamelCase(o),l=(t=c.type,["integer","bigint","smallint","tinyint","numeric","decimal","float"].includes(t)?"number":["varchar","text","string","char","character varying","uuid"].includes(t)?"string":["boolean"].includes(t)?"boolean":["date","datetime","timestamp","timestamp with time zone"].includes(t)?"Date":"any");return" public ".concat(i,": ").concat(l,";")})).join("\n"),y='\n static get tableName() {\n return "'.concat(i.toLowerCase(),'s";\n }\n '),l&&(y='\n static get tableName() {\n return "'.concat(l,'";\n }\n ')),h=g?a(g):"",x=g?o(g,l):"",C='\n import Model from "@lib/Model";\n import { snakeCaseMappers } from "objection";\n '.concat(h,"\n \n export default class ").concat(i," extends Model {\n \n ").concat(v,"\n \n ").concat(y,'\n \n static get idColumn() {\n return "id";\n }\n \n static get columnNameMappers() {\n return snakeCaseMappers();\n }\n \n ').concat(x,"\n }"),j=t.dirname(d),n.existsSync(j)||n.mkdirSync(j,{recursive:!0}),n.writeFile(d,C,(function(e){e?console.error("err::",e):console.log("File ".concat(p," has been created"))})),c.next=28;break;case 25:c.prev=25,c.t0=c.catch(2),console.error("err::",c.t0);case 28:return c.prev=28,c.finish(28);case 30:case"end":return c.stop()}}),c,null,[[2,25,28,30]])})));return function(e,n,t){return c.apply(this,arguments)}}();module.exports=c;
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("fs"),n=require("path"),t=require("./utils.js"),a=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(c,o,s){var u,l,i,p,m,f,d,h,x,b=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=b.length>3&&void 0!==b[3]?b[3]:"public",e.prev=1,c||(console.error("class name undefined"),process.exit(1)),o||(console.error("table name undefined"),process.exit(1)),l=c.replace(/Resource$/,"").replace(/\.resource/i,""),i="".concat(t.toCamelCase(l),".resource.ts"),p=n.join(process.cwd(),"src","app","http","resource",i),e.next=9,t.getTableColumns(s,o,u);case 9:m=e.sent,f=Object.fromEntries(m.map((function(e){return[e.column_name,{defaultValue:e.column_default,type:e.data_type,maxLength:e.character_maximum_length,nullable:"YES"===e.is_nullable}]}))),d=Object.keys(f).filter((function(e){return"created_at"!==e&&"updated_at"!==e})).map((function(e){return"".concat(t.toCamelCase(e),": this.").concat(t.toCamelCase(e))})).join(",\n"),h='\nimport Resource from "frexp/lib/Resource";\n\nexport default class '.concat(l,"Resource extends Resource {\n toArray() {\n return {\n").concat(d,"\n };\n }\n}"),x=n.dirname(p),r.existsSync(x)||r.mkdirSync(x,{recursive:!0}),r.writeFile(p,h,(function(e){e?console.error("err:",e):console.log("File ".concat(i," has been created"))})),e.next=21;break;case 18:e.prev=18,e.t0=e.catch(1),console.error("err::",e.t0);case 21:return e.prev=21,e.finish(21);case 23:case"end":return e.stop()}}),a,null,[[1,18,21,23]])})));return function(e,r,n){return a.apply(this,arguments)}}();module.exports=a;
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),r=require("fs"),n=require("path"),t=require("./utils.js"),o=function(){var o=e.asyncToGenerator(e.regeneratorRuntime().mark((function o(a,c,u){var s,l,i,p,d,m,f,v,_,h,x=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=x.length>3&&void 0!==x[3]?x[3]:"public",l=x.length>4&&void 0!==x[4]?x[4]:"pg",e.prev=2,a||(console.error("class name undefined"),process.exit(1)),c||(console.error("table name undefined"),process.exit(1)),i=a.replace(/Resource$/,"").replace(/\.resource/i,""),p="".concat(t.toCamelCase(i),".resource.ts"),d=n.join(process.cwd(),"src","app","http","resource",p),e.next=10,t.getTableColumns(u,c,s,l);case 10:m=e.sent,f=Object.fromEntries(m.map((function(e){var r,n,t,o,a;return[null!==(r=e.column_name)&&void 0!==r?r:e.COLUMN_NAME,{defaultValue:null!==(n=e.column_default)&&void 0!==n?n:e.COLUMN_DEFAULT,type:null!==(t=e.data_type)&&void 0!==t?t:e.DATA_TYPE,maxLength:null!==(o=e.character_maximum_length)&&void 0!==o?o:e.CHARACTER_MAXIMU_LENGTH,nullable:"YES"===(null!==(a=e.is_nullable)&&void 0!==a?a:e.IS_NULLABLE)}]}))),v=Object.keys(f).filter((function(e){return"created_at"!==e&&"updated_at"!==e})).map((function(e){return"".concat(t.toCamelCase(e),": this.").concat(t.toCamelCase(e))})).join(",\n"),_='\nimport Resource from "frexp/lib/Resource";\n\nexport default class '.concat(i,"Resource extends Resource {\n toArray() {\n return {\n").concat(v,"\n };\n }\n}"),h=n.dirname(d),r.existsSync(h)||r.mkdirSync(h,{recursive:!0}),r.writeFile(d,_,(function(e){e?console.error("err:",e):console.log("File ".concat(p," has been created"))})),e.next=22;break;case 19:e.prev=19,e.t0=e.catch(2),console.error("err::",e.t0);case 22:return e.prev=22,e.finish(22);case 24:case"end":return e.stop()}}),o,null,[[2,19,22,24]])})));return function(e,r,n){return o.apply(this,arguments)}}();module.exports=o;
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),a=require("./utils.js"),o=function(){var o=e.asyncToGenerator(e.regeneratorRuntime().mark((function o(r,c,i){var s,d,l,u,p,m,y,f,h,w,x,g=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s=g.length>3&&void 0!==g[3]&&g[3];try{r||(console.error("class name undefined"),process.exit(1)),c||(console.error("table name undefined"),process.exit(1)),d=a.capitalize(a.toCamelCase(a.removePluralSuffix(c))),l=r.replace(/Service$/,"").replace(/\.service/i,""),u=a.toCamelCase(a.removePluralSuffix(c)),p=t.join(process.cwd(),"src","app","http","service","".concat(r,".ts")),i&&"default"!==i&&("/"!==i.charAt(i.length-1)&&(i+="/"),p=t.join(process.cwd(),"src",i,"".concat(r,".ts"))),m=u,y=s?"return prisma.".concat(m,".update({where: {id: +id!}, data: payload})"):"\n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().updateAndFetch(payload);\n return model;\n '),f=s?"return prisma.".concat(m,".delete({where: {id}})"):" \n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().delete();\n '),h=s?"\n const count = await prisma.".concat(m,".count();\n const results = await prisma.").concat(m,".findMany({ take: +(qs.take ?? 10), skip: +(qs.skip ?? 0) })\n return { total: count, data: results };\n "):"return ".concat(d,'.query().page(req.getQuery("page", 0), req.getQuery("perPage", 10));'),w="\n".concat(s?'import prisma from "@config/db";':"import ".concat(d,' from "@model/').concat(d,'";'),'\nimport NotFoundException from "@exception/notFound.exception";\nimport { ').concat(a.capitalize(l),'Schema } from "@validation/').concat(a.toCamelCase(l),'.validation";\n\n export const getPaginate = ').concat(s?"async":""," (qs: Record<string, any>) => {\n ").concat(h,"\n };\n\n export const getDetail = async (id:number) => {\n const model = await ").concat(s?"prisma.".concat(m,".findFirst({where : {id}})"):"".concat(d,".query().findById(id)"),';\n if (!model) {\n throw new NotFoundException("').concat(d,'")\n }\n return model;\n };\n\n export const handleCreate = (payload:').concat(a.capitalize(l),"Schema) => {\n return ").concat(s?"prisma.".concat(m,".create({ data: payload })"):"".concat(d,".query().insertAndFetch(payload)"),";\n };\n\n export const handleUpdate = ").concat(s?"":"async"," ({id, ...payload}:").concat(a.capitalize(l),"Schema) => {\n ").concat(y,"\n };\n\n export const handleDelete = ").concat(s?"":"async"," (id:number) => {\n ").concat(f,"\n };\n"),x=t.dirname(p),n.existsSync(x)||n.mkdirSync(x,{recursive:!0}),n.writeFile(p,w,(function(e){e?console.error("err: ",e):console.log("File ".concat(r,".ts has been "))}))}catch(e){console.error("err::",e)}case 2:case"end":return e.stop()}}),o)})));return function(e,n,t){return o.apply(this,arguments)}}();module.exports=o;
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),a=require("./utils.js"),o=function(){var o=e.asyncToGenerator(e.regeneratorRuntime().mark((function o(c,r,i){var s,d,l,p,u,m,y,f,h,w,x,g=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:s=g.length>3&&void 0!==g[3]&&g[3];try{c||(console.error("class name undefined"),process.exit(1)),r||(console.error("table name undefined"),process.exit(1)),d=a.capitalize(a.toCamelCase(a.removePluralSuffix(r))),l=c.replace(/Service$/,"").replace(/\.service/i,""),p=a.toCamelCase(a.removePluralSuffix(r)),u=t.join(process.cwd(),"src","app","http","service","".concat(c,".ts")),i&&"default"!==i&&("/"!==i.charAt(i.length-1)&&(i+="/"),u=t.join(process.cwd(),"src",i,"".concat(c,".ts"))),m=p,y=s?"return prisma.".concat(m,".update({where: {id: +id!}, data: payload})"):"\n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().updateAndFetch(payload);\n return model;\n '),f=s?"return prisma.".concat(m,".delete({where: {id}})"):" \n const model = await ".concat(d,'.query().findById(id);\n if (!model) {\n throw new NotFoundException("').concat(d,'");\n }\n await model.$query().delete();\n '),h=s?"\n const count = await prisma.".concat(m,".count();\n const results = await prisma.").concat(m,".findMany({ take: +(qs.take ?? 10), skip: +(qs.skip ?? 0) })\n return { total: count, data: results };\n "):"return ".concat(d,'.query().page(req.getQuery("page", 0), req.getQuery("perPage", 10));'),w="\n".concat(s?'import prisma from "@config/db";':"import ".concat(d,' from "@model/').concat(d,'";'),'\nimport NotFoundException from "@exception/notFound.exception";\nimport { Create').concat(a.capitalize(l),"Schema, Update").concat(a.capitalize(l),'Schema } from "@validation/').concat(a.toCamelCase(l),'.validation";\n\n export const getPaginate = ').concat(s?"async":""," (qs: Record<string, any>) => {\n ").concat(h,"\n };\n\n export const getDetail = async (id:number) => {\n const model = await ").concat(s?"prisma.".concat(m,".findFirst({where : {id}})"):"".concat(d,".query().findById(id)"),';\n if (!model) {\n throw new NotFoundException("').concat(d,'")\n }\n return model;\n };\n\n export const handleCreate = (payload:Create').concat(a.capitalize(l),"Schema) => {\n return ").concat(s?"prisma.".concat(m,".create({ data: payload })"):"".concat(d,".query().insertAndFetch(payload)"),";\n };\n\n export const handleUpdate = ").concat(s?"":"async"," ({id, ...payload}:Update").concat(a.capitalize(l),"Schema) => {\n ").concat(y,"\n };\n\n export const handleDelete = ").concat(s?"":"async"," (id:number) => {\n ").concat(f,"\n };\n"),x=t.dirname(u),n.existsSync(x)||n.mkdirSync(x,{recursive:!0}),n.writeFile(u,w,(function(e){e?console.error("err: ",e):console.log("File ".concat(c,".ts has been "))}))}catch(e){console.error("err::",e)}case 2:case"end":return e.stop()}}),o)})));return function(e,n,t){return o.apply(this,arguments)}}();module.exports=o;
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js");function a(n,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],u=t.type,o=t.nullable,i=t.defaultValue,s=["y"],l=["integer","bigint","smallint","tinyint","numeric","decimal","float"].includes(u),m=["varchar","text","string","char","character varying","uuid","date","datetime","timestamp","timestamp with time zone"].includes(u),p=["boolean"].includes(u);l?s.push("number()"):m?s.push("string()"):p?s.push("boolean()"):s.push("mixed()");var d=a.includes(n);o?(s.push("optional()"),s.push("nullable()")):d?s.push('when("$method", {\n is: (method) => method === "PUT",\n then: (schema) => schema.required(),\n otherwise: (schema) => schema.notRequired(),\n })'):s.push("required()");var h=c.map((function(e){return e.column_name})).includes(n);if(h){var f=c.find((function(e){return e.column_name===n}));f&&s.push("oneOf(Object.values(".concat(f.enum_name,"))"))}var v=["CURRENT_TIMESTAMP"].includes(i);if(i&&!v&&!d){var y;if(l)y=parseInt(i);else if(h){var b=c.find((function(e){return e.column_name===n}));b&&(y="".concat(b.enum_name,".").concat(r.extractEnumValue(i)))}else y=p?i:"'".concat(i,"'");void 0!==e.typeof(y)&&s.push("default(".concat(y,")"))}return s.push("label('".concat(n.replaceAll("_"," "),"')")),"".concat(r.toCamelCase(n),":").concat(s.join("."))}var c=function(){var c=e.asyncToGenerator(e.regeneratorRuntime().mark((function c(u,o,i){var s,l,m,p,d,h,f,v,y,b,g,_,x,T=arguments;return e.regeneratorRuntime().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return s=T.length>3&&void 0!==T[3]?T[3]:"public",c.prev=1,u||(console.error("valiation name undefined"),process.exit(1)),o||(console.error("table name undefined"),process.exit(1)),l="".concat(u,".ts"),m=t.join(process.cwd(),"src","app","http","validation",l),p=r.toCamelCase(r.removePluralSuffix(o)),c.next=9,r.getTableColumns(i,o,s);case 9:return d=c.sent,h=Object.fromEntries(d.map((function(e){return[e.column_name,{defaultValue:e.column_default,type:e.data_type,maxLength:e.character_maximum_length,nullable:"YES"===e.is_nullable}]}))),c.next=13,r.getPrimaryKeys(i,o,s);case 13:return f=c.sent,c.next=16,r.getEnumFieldsAndValues(i,o,s);case 16:v=c.sent,y=Object.entries(h).filter((function(n){var t=e.slicedToArray(n,1)[0];return!["created_at","updated_at","createdAt","updatedAt"].includes(t)})).map((function(n){var t=e.slicedToArray(n,2),c=t[0],u=t[1];return[r.toCamelCase(c),a(c,u,f,v)]})),b="",v.length&&(g=v.map((function(e){return e.enum_name})).join(","),b="import { ".concat(g,' } from "@generated/prisma";')),_='\n import * as yup from "yup";\n '.concat(b,"\n\n export const ").concat(p,"Schema = (y:typeof yup) => y.object().shape({\n ").concat(y.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"\n });\n\n export type ").concat(r.capitalize(p),"Schema = yup.InferType<ReturnType<typeof ").concat(p,"Schema>>;\n "),x=t.dirname(m),n.existsSync(x)||n.mkdirSync(x,{recursive:!0}),n.writeFile(m,_,(function(e){e?console.error("err: ",e):console.log("File ".concat(l," has been created"))})),c.next=29;break;case 26:c.prev=26,c.t0=c.catch(1),console.error("err:",c.t0);case 29:return c.prev=29,c.finish(29);case 31:case"end":return c.stop()}}),c,null,[[1,26,29,31]])})));return function(e,n,t){return c.apply(this,arguments)}}();module.exports=c;
2
+ "use strict";var e=require("./_virtual/_rollupPluginBabelHelpers.js"),n=require("fs"),t=require("path"),r=require("./utils.js"),a=["int","integer","bigint","smallint","tinyint","numeric","decimal","float"],c=["varchar","text","string","char","character varying","uuid","date","datetime","timestamp","timestamp with time zone"],o=["boolean"];function i(n,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],l=t.type,s=t.nullable,p=t.defaultValue,d=["zod"],m=a.includes(l),f=c.includes(l),v=o.includes(l),h=u.map((function(e){return e.column_name})).includes(n);if(m)d.push("number()");else if(f)d.push("string()");else if(v)d.push("boolean()");else if(h){var y=u.find((function(e){return e.column_name===n}));y&&d.push("enum(Object.values(".concat(y.enum_name,") as [string, ...string[]])"))}else d.push("any()");var g=i.includes(n);s&&(d.push("optional()"),d.push("nullish()"));var _=["CURRENT_TIMESTAMP"].includes(p);if(p&&!_&&!g){var b;if(m)b=parseInt(p);else if(h){var A=u.find((function(e){return e.column_name===n}));A&&(b="".concat(A.enum_name,".").concat(r.extractEnumValue(p)))}else b=v?p:"'".concat(p,"'");void 0!==e.typeof(b)&&d.push("default(".concat(b,")"))}return"".concat(r.toCamelCase(n),":").concat(d.join("."))}function u(e,n){var t=n.type,i=["zod"],u=a.includes(t),l=c.includes(t),s=o.includes(t);return u?i.push("number()"):l?i.push("string().nonempty()"):s?i.push("boolean()"):i.push("any()"),"".concat(r.toCamelCase(e),":").concat(i.join("."))}function l(e){return!["created_at","updated_at","createdAt","updatedAt"].includes(e)}var s=function(){var a=e.asyncToGenerator(e.regeneratorRuntime().mark((function a(c,o,s){var p,d,m,f,v,h,y,g,_,b,A,T,x,z,C,j,E,S=arguments;return e.regeneratorRuntime().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return p=S.length>3&&void 0!==S[3]?S[3]:"public",d=S.length>4&&void 0!==S[4]?S[4]:"pg",a.prev=2,c||(console.error("valiation name undefined"),process.exit(1)),o||(console.error("table name undefined"),process.exit(1)),m="".concat(c,".ts"),f=t.join(process.cwd(),"src","app","http","validation",m),v=r.toCamelCase(r.removePluralSuffix(o)),a.next=10,r.getTableColumns(s,o,p,d);case 10:return h=a.sent,y=Object.fromEntries(h.map((function(e){var n,t,r,a,c;return[null!==(n=e.column_name)&&void 0!==n?n:e.COLUMN_NAME,{defaultValue:null!==(t=e.column_default)&&void 0!==t?t:e.COLUMN_DEFAULT,type:null!==(r=e.data_type)&&void 0!==r?r:e.DATA_TYPE,maxLength:null!==(a=e.character_maximum_length)&&void 0!==a?a:e.CHARACTER_MAXIMU_LENGTH,nullable:"YES"===(null!==(c=e.is_nullable)&&void 0!==c?c:e.IS_NULLABLE)}]}))),a.next=14,r.getPrimaryKeys(s,o,p,d);case 14:return g=a.sent,a.next=17,r.getEnumFieldsAndValues(s,o,p,d);case 17:_=a.sent,b=Object.entries(y).filter((function(n){return l(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return!g.includes(t)})).map((function(n){var t=e.slicedToArray(n,2),a=t[0],c=t[1];return[r.toCamelCase(a),i(a,c,g,_)]})),A=Object.entries(y).filter((function(n){return l(e.slicedToArray(n,1)[0])})).filter((function(n){var t=e.slicedToArray(n,1)[0];return g.includes(t)})).map((function(n){var t=e.slicedToArray(n,2),a=t[0],c=t[1];return[r.toCamelCase(a),u(a,c)]})),T="",_.length&&(x=_.map((function(e){return e.enum_name})).join(","),T="import { ".concat(x,' } from "@generated/prisma";')),z="create".concat(r.capitalize(v),"Schema"),C="update".concat(r.capitalize(v),"Schema"),j='\n import * as z from "zod";\n \n '.concat(T,"\n\n export const ").concat(z," = (zod:typeof z) => zod.object({\n ").concat(b.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"\n });\n\n export type Create").concat(r.capitalize(v),"Schema = z.infer<ReturnType<typeof ").concat(z,">>;\n\n export const ").concat(C," = (zod:typeof z) => ").concat(z,"(zod).extend({").concat(A.map((function(n){var t=e.slicedToArray(n,2);return t[0],t[1]})).join(",\n"),"});\n\n export type Update").concat(r.capitalize(v),"Schema = z.infer<ReturnType<typeof ").concat(C,">>;\n "),E=t.dirname(f),n.existsSync(E)||n.mkdirSync(E,{recursive:!0}),n.writeFile(f,j,(function(e){e?console.error("err: ",e):console.log("File ".concat(m," has been created"))})),a.next=33;break;case 30:a.prev=30,a.t0=a.catch(2),console.error("err:",a.t0);case 33:return a.prev=33,a.finish(33);case 35:case"end":return a.stop()}}),a,null,[[2,30,33,35]])})));return function(e,n,t){return a.apply(this,arguments)}}();module.exports=s;
package/lib/utils.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("./_virtual/_rollupPluginBabelHelpers.js");require("path");var e=function(n){return n.replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().replace(/[-_\s]+(.)?/g,(function(n,e){return e?e.toUpperCase():""}))},t=function(n){var e={children:"child",men:"man",women:"woman",mice:"mouse",geese:"goose",feet:"foot",teeth:"tooth",people:"person",data:"datum",criteria:"criterion",fungi:"fungus",nuclei:"nucleus",cacti:"cactus"};return e[n.toLowerCase()]?e[n.toLowerCase()]:/(ies)$/.test(n)?n.replace(/ies$/,"y"):/(ves)$/.test(n)?n.replace(/ves$/,"f"):/(oes|xes|ses|shes|ches|zes)$/.test(n)?n.replace(/(oes|xes|ses|shes|ches|zes)$/,""):/(s)$/.test(n)&&!/(ss)$/.test(n)?n.replace(/s$/,""):n},a=function(){var e=n.asyncToGenerator(n.regeneratorRuntime().mark((function e(t){return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.query("SELECT 1");case 3:console.log("Connection success"),n.next=10;break;case 6:n.prev=6,n.t0=n.catch(0),console.error("Gagal terhubung ke database:",n.t0),process.exit(1);case 10:case"end":return n.stop()}}),e,null,[[0,6]])})));return function(n){return e.apply(this,arguments)}}(),r=function(){var e=n.asyncToGenerator(n.regeneratorRuntime().mark((function e(t,a){var r,c,o,s=arguments;return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=s.length>2&&void 0!==s[2]?s[2]:"public",n.prev=1,"\n SELECT \n *\n FROM information_schema.columns\n WHERE table_catalog = current_database()\n AND table_name = $1\n AND table_schema = $2\n ",n.next=5,t.query("\n SELECT \n *\n FROM information_schema.columns\n WHERE table_catalog = current_database()\n AND table_name = $1\n AND table_schema = $2\n ",[a,r]);case 5:return c=n.sent,o=c.rows,n.abrupt("return",o);case 10:throw n.prev=10,n.t0=n.catch(1),console.error("Gagal mengambil informasi tabel:",n.t0),n.t0;case 14:case"end":return n.stop()}}),e,null,[[1,10]])})));return function(n,t){return e.apply(this,arguments)}}(),c=function(){var e=n.asyncToGenerator(n.regeneratorRuntime().mark((function e(t,a){var r,c,o,s=arguments;return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=s.length>2&&void 0!==s[2]?s[2]:"public",n.prev=1,"\n SELECT a.attname as column_name\n FROM pg_index i\n JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)\n JOIN pg_class c ON c.oid = i.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE i.indisprimary = true\n AND c.relname = $1\n AND n.nspname = $2\n ",n.next=5,t.query("\n SELECT a.attname as column_name\n FROM pg_index i\n JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)\n JOIN pg_class c ON c.oid = i.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE i.indisprimary = true\n AND c.relname = $1\n AND n.nspname = $2\n ",[a,r]);case 5:return c=n.sent,o=c.rows,n.abrupt("return",o.map((function(n){return n.column_name})));case 10:throw n.prev=10,n.t0=n.catch(1),console.error("Error fetching primary keys:",n.t0),n.t0;case 14:case"end":return n.stop()}}),e,null,[[1,10]])})));return function(n,t){return e.apply(this,arguments)}}(),o=function(){var e=n.asyncToGenerator(n.regeneratorRuntime().mark((function e(t,a){var r,c,o,s,u,i=arguments;return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=i.length>2&&void 0!==i[2]?i[2]:"public",n.prev=1,"\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",n.next=5,t.query("\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",[r,a]);case 5:if(0!==(c=n.sent).rows.length){n.next=8;break}return n.abrupt("return",[]);case 8:return o=c.rows.map((function(n){return n.udt_name})),"\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",n.next=12,t.query("\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",[o]);case 12:return s=n.sent,u=s.rows.reduce((function(n,e){return n[e.enum_name]||(n[e.enum_name]=[]),n[e.enum_name].push(e.value),n}),{}),n.abrupt("return",c.rows.map((function(n){return{column_name:n.column_name,enum_name:n.udt_name,values:u[n.udt_name]||[]}})));case 17:throw n.prev=17,n.t0=n.catch(1),console.error("Error fetching ENUM fields:",n.t0),n.t0;case 21:case"end":return n.stop()}}),e,null,[[1,17]])})));return function(n,t){return e.apply(this,arguments)}}(),s=function(){var a=n.asyncToGenerator(n.regeneratorRuntime().mark((function a(r,c){var o,s,i,m,l,_,p,f,g,E,b,h=arguments;return n.regeneratorRuntime().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return o=h.length>2&&void 0!==h[2]?h[2]:"public",a.prev=1,"\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",a.next=5,r.query("\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",[c,o]);case 5:return s=a.sent,i=s.rows,"\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND ccu.table_name = $1\n AND tc.table_schema = $2\n ",a.next=10,r.query("\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND ccu.table_name = $1\n AND tc.table_schema = $2\n ",[c,o]);case 10:m=a.sent,l=m.rows,_={},i.forEach((function(n){var a=e(t(n.foreign_table_name));_[a]={relation:"BelongsToOneRelation",relatedTable:n.foreign_table_name,foreignKey:n.column_name,localKey:n.foreign_column_name}})),p=n.createForOfIteratorHelper(l),a.prev=15,p.s();case 17:if((f=p.n()).done){a.next=26;break}return g=f.value,E=e(t(g.table_name)),a.next=22,u(r,g.table_name,g.column_name,o);case 22:b=a.sent,_[E]={relation:b?"HasOneRelation":"HasManyRelation",relatedTable:g.table_name,foreignKey:g.foreign_column_name,localKey:g.column_name};case 24:a.next=17;break;case 26:a.next=31;break;case 28:a.prev=28,a.t0=a.catch(15),p.e(a.t0);case 31:return a.prev=31,p.f(),a.finish(31);case 34:return a.abrupt("return",_);case 37:throw a.prev=37,a.t1=a.catch(1),console.error("Error fetching table relations:",a.t1),a.t1;case 41:case"end":return a.stop()}}),a,null,[[1,37],[15,28,31,34]])})));return function(n,e){return a.apply(this,arguments)}}(),u=function(){var e=n.asyncToGenerator(n.regeneratorRuntime().mark((function e(t,a,r){var c,o,s,u=arguments;return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=u.length>3&&void 0!==u[3]?u[3]:"public",n.prev=1,"\n SELECT tc.constraint_type\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.constraint_column_usage AS ccu \n ON tc.constraint_name = ccu.constraint_name\n WHERE tc.table_name = $1\n AND ccu.column_name = $2\n AND tc.constraint_type = 'UNIQUE'\n AND tc.table_schema = $3\n ",n.next=5,t.query("\n SELECT tc.constraint_type\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.constraint_column_usage AS ccu \n ON tc.constraint_name = ccu.constraint_name\n WHERE tc.table_name = $1\n AND ccu.column_name = $2\n AND tc.constraint_type = 'UNIQUE'\n AND tc.table_schema = $3\n ",[a,r,c]);case 5:return o=n.sent,s=o.rows,n.abrupt("return",s.length>0);case 10:throw n.prev=10,n.t0=n.catch(1),console.error("Error checking unique constraint:",n.t0),n.t0;case 14:case"end":return n.stop()}}),e,null,[[1,10]])})));return function(n,t,a){return e.apply(this,arguments)}}(),i=function(){var e=n.asyncToGenerator(n.regeneratorRuntime().mark((function e(t){var a,r,c,o=arguments;return n.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=o.length>1&&void 0!==o[1]?o[1]:"public",n.prev=1,"\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_schema NOT IN ('information_schema', 'pg_catalog')\n AND table_name NOT IN ('migrations', 'migrations_lock', '_prisma_migrations')\n AND table_type = 'BASE TABLE'\n ",n.next=5,t.query("\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_schema NOT IN ('information_schema', 'pg_catalog')\n AND table_name NOT IN ('migrations', 'migrations_lock', '_prisma_migrations')\n AND table_type = 'BASE TABLE'\n ",[a]);case 5:return r=n.sent,c=r.rows,n.abrupt("return",c);case 10:throw n.prev=10,n.t0=n.catch(1),console.error("Error fetching tables:",n.t0),n.t0;case 14:case"end":return n.stop()}}),e,null,[[1,10]])})));return function(n){return e.apply(this,arguments)}}();exports.capitalize=function(n){return n.charAt(0).toUpperCase()+n.slice(1)},exports.checkDatabaseConnection=a,exports.extractEnumValue=function(n){if(!n)return null;var e=n.match(/^'(.+?)'::/);return e?e[1]:n},exports.getEnumFieldsAndValues=o,exports.getPrimaryKeys=c,exports.getTableColumns=r,exports.getTableRelations=s,exports.getTables=i,exports.isUniqueConstraint=u,exports.removePluralSuffix=t,exports.toCamelCase=e,exports.toKebabCase=function(n){return n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()};
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./_virtual/_rollupPluginBabelHelpers.js");require("path");var n=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t){return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.query("SELECT 1");case 3:console.log("Connection success"),e.next=10;break;case 6:e.prev=6,e.t0=e.catch(0),console.error("Gagal terhubung ke database:",e.t0),process.exit(1);case 10:case"end":return e.stop()}}),n,null,[[0,6]])})));return function(e){return n.apply(this,arguments)}}(),t=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=E.length>2&&void 0!==E[2]?E[2]:"public",o=E.length>3&&void 0!==E[3]?E[3]:"pg",e.prev=2,"pg"===o?(c="\n SELECT *\n FROM information_schema.columns\n WHERE table_catalog = current_database()\n AND table_name = $1\n AND table_schema = $2\n ",s=[a,r]):(c="\n SELECT *\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n ",s=[r,a]),e.next=6,t.query(c,s);case 6:return u=e.sent,i=u.rows,m=void 0===i?[]:i,l=u[0],_=void 0===l?[]:l,e.abrupt("return",m.length?m:_);case 14:throw e.prev=14,e.t0=e.catch(2),console.error("Gagal mengambil informasi tabel:",e.t0),e.t0;case 18:case"end":return e.stop()}}),n,null,[[2,14]])})));return function(e,t){return n.apply(this,arguments)}}(),a=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E,p=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>2&&void 0!==p[2]?p[2]:"public",o=p.length>3&&void 0!==p[3]?p[3]:"pg",e.prev=2,"pg"===o?(c="\n SELECT a.attname as column_name\n FROM pg_index i\n JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)\n JOIN pg_class c ON c.oid = i.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE i.indisprimary = true\n AND c.relname = $1\n AND n.nspname = $2\n ",s=[a,r]):(c="\n SELECT COLUMN_NAME AS column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND CONSTRAINT_NAME = 'PRIMARY'\n ",s=[r,a]),e.next=6,t.query(c,s);case 6:return u=e.sent,i=u.rows,m=void 0===i?[]:i,l=u[0],_=void 0===l?[]:l,E=m.length?m:_,e.abrupt("return",E.map((function(e){return e.column_name})));case 15:throw e.prev=15,e.t0=e.catch(2),console.error("Error fetching primary keys:",e.t0),e.t0;case 19:case"end":return e.stop()}}),n,null,[[2,15]])})));return function(e,t){return n.apply(this,arguments)}}(),r=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=E.length>2&&void 0!==E[2]?E[2]:"public",o=E.length>3&&void 0!==E[3]?E[3]:"pg",n.prev=2,"mysql"!==o){n.next=13;break}return"\n SELECT COLUMN_NAME, COLUMN_TYPE\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n AND data_type = 'enum'\n ",n.next=7,t.query("\n SELECT COLUMN_NAME, COLUMN_TYPE\n FROM information_schema.columns\n WHERE table_schema = ?\n AND table_name = ?\n AND data_type = 'enum'\n ",[r,a]);case 7:return c=n.sent,s=e.slicedToArray(c,1),u=s[0],n.abrupt("return",u.map((function(e){return{column_name:e.COLUMN_NAME,enum_name:e.COLUMN_NAME,values:e.COLUMN_TYPE.replace(/^enum\((.*)\)$/,"$1").split(",").map((function(e){return e.trim().replace(/^'|'$/g,"")}))}})));case 13:return"\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",n.next=16,t.query("\n SELECT column_name, udt_name\n FROM information_schema.columns\n WHERE table_schema = $1\n AND table_name = $2\n AND data_type = 'USER-DEFINED'\n ",[r,a]);case 16:if(0!==(i=n.sent).rows.length){n.next=19;break}return n.abrupt("return",[]);case 19:return m=i.rows.map((function(e){return e.udt_name})),"\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",n.next=23,t.query("\n SELECT t.typname as enum_name, e.enumlabel as value\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_namespace n ON n.oid = t.typnamespace\n WHERE t.typname = ANY($1)\n ORDER BY t.typname, e.enumsortorder\n ",[m]);case 23:return l=n.sent,_=l.rows.reduce((function(e,n){return e[n.enum_name]=e[n.enum_name]||[],e[n.enum_name].push(n.value),e}),{}),n.abrupt("return",i.rows.map((function(e){return{column_name:e.column_name,enum_name:e.udt_name,values:_[e.udt_name]||[]}})));case 26:n.next=32;break;case 28:throw n.prev=28,n.t0=n.catch(2),console.error("Error fetching ENUM fields:",n.t0),n.t0;case 32:case"end":return n.stop()}}),n,null,[[2,28]])})));return function(e,t){return n.apply(this,arguments)}}(),o=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t,a){var r,o,c,s,u,i,m,l,_,E,p,N,f,A,g,h,b,O=arguments;return e.regeneratorRuntime().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(r=O.length>2&&void 0!==O[2]?O[2]:"public",o=O.length>3&&void 0!==O[3]?O[3]:"pg",n.prev=2,"mysql"!==o){n.next=13;break}return"\n SELECT \n TABLE_NAME,\n COLUMN_NAME,\n REFERENCED_TABLE_NAME AS foreign_table_name,\n REFERENCED_COLUMN_NAME AS foreign_column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND REFERENCED_TABLE_NAME IS NOT NULL\n ",n.next=7,t.query("\n SELECT \n TABLE_NAME,\n COLUMN_NAME,\n REFERENCED_TABLE_NAME AS foreign_table_name,\n REFERENCED_COLUMN_NAME AS foreign_column_name\n FROM information_schema.KEY_COLUMN_USAGE\n WHERE TABLE_SCHEMA = ?\n AND TABLE_NAME = ?\n AND REFERENCED_TABLE_NAME IS NOT NULL\n ",[r,a]);case 7:return c=n.sent,s=e.slicedToArray(c,1),u=s[0],n.abrupt("return",u.map((function(e){return{relation:"BelongsToOneRelation",relatedTable:e.foreign_table_name,foreignKey:e.COLUMN_NAME,localKey:e.foreign_column_name}})));case 13:return"\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",i="\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND ccu.table_name = $1\n AND tc.table_schema = $2\n ",n.next=17,t.query("\n SELECT \n tc.table_name,\n kcu.column_name,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name\n FROM information_schema.table_constraints AS tc\n JOIN information_schema.key_column_usage AS kcu \n ON tc.constraint_name = kcu.constraint_name\n JOIN information_schema.constraint_column_usage AS ccu \n ON ccu.constraint_name = tc.constraint_name\n WHERE tc.constraint_type = 'FOREIGN KEY'\n AND tc.table_name = $1\n AND tc.table_schema = $2\n ",[a,r]);case 17:return m=n.sent,l=m.rows,n.next=21,t.query(i,[a,r]);case 21:_=n.sent,E=_.rows,p={},N=e.createForOfIteratorHelper(l);try{for(N.s();!(f=N.n()).done;)A=f.value,p[A.foreign_table_name]={relation:"BelongsToOneRelation",relatedTable:A.foreign_table_name,foreignKey:A.column_name,localKey:A.foreign_column_name}}catch(e){N.e(e)}finally{N.f()}g=e.createForOfIteratorHelper(E);try{for(g.s();!(h=g.n()).done;)b=h.value,p[b.table_name]={relation:"HasManyRelation",relatedTable:b.table_name,foreignKey:b.foreign_column_name,localKey:b.column_name}}catch(e){g.e(e)}finally{g.f()}return n.abrupt("return",p);case 29:n.next=35;break;case 31:throw n.prev=31,n.t0=n.catch(2),console.error("Error fetching table relations:",n.t0),n.t0;case 35:case"end":return n.stop()}}),n,null,[[2,31]])})));return function(e,t){return n.apply(this,arguments)}}(),c=function(){var n=e.asyncToGenerator(e.regeneratorRuntime().mark((function n(t){var a,r,o,c,s,u,i,m,l,_=arguments;return e.regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=_.length>1&&void 0!==_[1]?_[1]:"public",r=_.length>2&&void 0!==_[2]?_[2]:"pg",e.prev=2,"mysql"===r?(o="\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = ?\n AND table_type = 'BASE TABLE'\n AND table_name NOT IN ('migrations', '_prisma_migrations')\n ",c=[a]):(o="\n SELECT *\n FROM information_schema.tables\n WHERE table_schema = $1\n AND table_schema NOT IN ('information_schema', 'pg_catalog')\n AND table_type = 'BASE TABLE'\n AND table_name NOT IN ('migrations', '_prisma_migrations', 'migrations_lock')\n ",c=[a]),e.next=6,t.query(o,c);case 6:return s=e.sent,u=s.rows,i=void 0===u?[]:u,m=s[0],l=void 0===m?[]:m,e.abrupt("return",i.length?i:l);case 14:throw e.prev=14,e.t0=e.catch(2),console.error("Error fetching tables:",e.t0),e.t0;case 18:case"end":return e.stop()}}),n,null,[[2,14]])})));return function(e){return n.apply(this,arguments)}}();exports.capitalize=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},exports.checkDatabaseConnection=n,exports.extractEnumValue=function(e){if(!e)return null;var n=e.match(/^'(.+?)'::/);return n?n[1]:e},exports.getEnumFieldsAndValues=r,exports.getPrimaryKeys=a,exports.getTableColumns=t,exports.getTableRelations=o,exports.getTables=c,exports.removePluralSuffix=function(e){var n={children:"child",men:"man",women:"woman",mice:"mouse",geese:"goose",feet:"foot",teeth:"tooth",people:"person",data:"datum",criteria:"criterion",fungi:"fungus",nuclei:"nucleus",cacti:"cactus"};return n[e.toLowerCase()]?n[e.toLowerCase()]:/(ies)$/.test(e)?e.replace(/ies$/,"y"):/(ves)$/.test(e)?e.replace(/ves$/,"f"):/(oes|xes|ses|shes|ches|zes)$/.test(e)?e.replace(/(oes|xes|ses|shes|ches|zes)$/,""):/(s)$/.test(e)&&!/(ss)$/.test(e)?e.replace(/s$/,""):e},exports.toCamelCase=function(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().replace(/[-_\s]+(.)?/g,(function(e,n){return n?n.toUpperCase():""}))},exports.toKebabCase=function(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/_/g,"-").toLowerCase()};
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "frgen",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "description": "helper generator",
5
- "main": "lib/",
5
+ "main": "lib/main.jss",
6
6
  "types": "lib/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -44,6 +44,7 @@
44
44
  "@rollup/plugin-node-resolve": "^15.2.3",
45
45
  "@rollup/plugin-terser": "^0.4.4",
46
46
  "dotenv": "^16.4.7",
47
+ "mysql2": "^3.14.2",
47
48
  "pg": "^8.13.1"
48
49
  }
49
50
  }
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getDefaultExportFromCjs=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.__module={exports:{}};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";var e=require("../../../_virtual/_commonjsHelpers.js"),t=require("../../../_virtual/main.js"),o=require("fs"),r=require("path"),n=require("os"),s=require("crypto"),a=require("../package.json.js");const c=o,i=r,l=n,u=s,p=a.default.version,f=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;function d(e){console.log(`[dotenv@${p}][DEBUG] ${e}`)}function _(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function E(e,t){let o;try{o=new URL(t)}catch(e){if("ERR_INVALID_URL"===e.code){const e=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw e.code="INVALID_DOTENV_KEY",e}throw e}const r=o.password;if(!r){const e=new Error("INVALID_DOTENV_KEY: Missing key part");throw e.code="INVALID_DOTENV_KEY",e}const n=o.searchParams.get("environment");if(!n){const e=new Error("INVALID_DOTENV_KEY: Missing environment part");throw e.code="INVALID_DOTENV_KEY",e}const s=`DOTENV_VAULT_${n.toUpperCase()}`,a=e.parsed[s];if(!a){const e=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${s} in your .env.vault file.`);throw e.code="NOT_FOUND_DOTENV_ENVIRONMENT",e}return{ciphertext:a,key:r}}function v(e){let t=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(const o of e.path)c.existsSync(o)&&(t=o.endsWith(".vault")?o:`${o}.vault`);else t=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else t=i.resolve(process.cwd(),".env.vault");return c.existsSync(t)?t:null}function g(e){return"~"===e[0]?i.join(l.homedir(),e.slice(1)):e}const h={configDotenv:function(e){const t=i.resolve(process.cwd(),".env");let o="utf8";const r=Boolean(e&&e.debug);e&&e.encoding?o=e.encoding:r&&d("No encoding is specified. UTF-8 is used by default");let n,s=[t];if(e&&e.path)if(Array.isArray(e.path)){s=[];for(const t of e.path)s.push(g(t))}else s=[g(e.path)];const a={};for(const t of s)try{const r=h.parse(c.readFileSync(t,{encoding:o}));h.populate(a,r,e)}catch(e){r&&d(`Failed to load ${t} ${e.message}`),n=e}let l=process.env;return e&&null!=e.processEnv&&(l=e.processEnv),h.populate(l,a,e),n?{parsed:a,error:n}:{parsed:a}},_configVault:function(e){var t;t="Loading env from encrypted .env.vault",console.log(`[dotenv@${p}][INFO] ${t}`);const o=h._parseVault(e);let r=process.env;return e&&null!=e.processEnv&&(r=e.processEnv),h.populate(r,o,e),{parsed:o}},_parseVault:function(e){const t=v(e),o=h.configDotenv({path:t});if(!o.parsed){const e=new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);throw e.code="MISSING_DATA",e}const r=_(e).split(","),n=r.length;let s;for(let e=0;e<n;e++)try{const t=E(o,r[e].trim());s=h.decrypt(t.ciphertext,t.key);break}catch(t){if(e+1>=n)throw t}return h.parse(s)},config:function(e){if(0===_(e).length)return h.configDotenv(e);const t=v(e);return t?h._configVault(e):(o=`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`,console.log(`[dotenv@${p}][WARN] ${o}`),h.configDotenv(e));var o},decrypt:function(e,t){const o=Buffer.from(t.slice(-64),"hex");let r=Buffer.from(e,"base64");const n=r.subarray(0,12),s=r.subarray(-16);r=r.subarray(12,-16);try{const e=u.createDecipheriv("aes-256-gcm",o,n);return e.setAuthTag(s),`${e.update(r)}${e.final()}`}catch(e){const t=e instanceof RangeError,o="Invalid key length"===e.message,r="Unsupported state or unable to authenticate data"===e.message;if(t||o){const e=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw e.code="INVALID_DOTENV_KEY",e}if(r){const e=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw e.code="DECRYPTION_FAILED",e}throw e}},parse:function(e){const t={};let o,r=e.toString();for(r=r.replace(/\r\n?/gm,"\n");null!=(o=f.exec(r));){const e=o[1];let r=o[2]||"";r=r.trim();const n=r[0];r=r.replace(/^(['"`])([\s\S]*)\1$/gm,"$2"),'"'===n&&(r=r.replace(/\\n/g,"\n"),r=r.replace(/\\r/g,"\r")),t[e]=r}return t},populate:function(e,t,o={}){const r=Boolean(o&&o.debug),n=Boolean(o&&o.override);if("object"!=typeof t){const e=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw e.code="OBJECT_REQUIRED",e}for(const o of Object.keys(t))Object.prototype.hasOwnProperty.call(e,o)?(!0===n&&(e[o]=t[o]),r&&d(!0===n?`"${o}" is already defined and WAS overwritten`:`"${o}" is already defined and was NOT overwritten`)):e[o]=t[o]}};t.__module.exports.configDotenv=h.configDotenv,t.__module.exports._configVault=h._configVault,t.__module.exports._parseVault=h._parseVault,t.__module.exports.config=h.config,t.__module.exports.decrypt=h.decrypt,t.__module.exports.parse=h.parse,t.__module.exports.populate=h.populate,t.__module.exports=h;var D=t.__module.exports,N=e.getDefaultExportFromCjs(D);module.exports=N;
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e="dotenv",s="16.4.7",t="Loads environment variables from .env file",o="lib/main.js",n="lib/main.d.ts",i={".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},r={"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},p={type:"git",url:"git://github.com/motdotla/dotenv.git"},a="https://dotenvx.com",l=["dotenv","env",".env","environment","variables","config","settings"],c="README.md",d="BSD-2-Clause",v={"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},m={node:">=12"},g={fs:!1},b={name:e,version:s,description:t,main:o,types:n,exports:i,scripts:r,repository:p,funding:a,keywords:l,readmeFilename:c,license:d,devDependencies:v,engines:m,browser:g};exports.browser=g,exports.default=b,exports.description=t,exports.devDependencies=v,exports.engines=m,exports.exports=i,exports.funding=a,exports.keywords=l,exports.license=d,exports.main=o,exports.name=e,exports.readmeFilename=c,exports.repository=p,exports.scripts=r,exports.types=n,exports.version=s;