namirasoft-node 1.1.23 → 1.1.25
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/dist/BaseApplication.d.ts +2 -0
- package/dist/BaseApplication.js +19 -1
- package/dist/BaseApplication.js.map +1 -1
- package/dist/BaseSequelizeTable.d.ts +39 -0
- package/dist/BaseSequelizeTable.js +47 -24
- package/dist/BaseSequelizeTable.js.map +1 -1
- package/package.json +2 -2
- package/src/BaseApplication.ts +21 -2
- package/src/BaseSequelizeTable.ts +54 -24
|
@@ -10,6 +10,7 @@ export declare abstract class BaseApplication<D extends BaseDatabase> {
|
|
|
10
10
|
protected version: string;
|
|
11
11
|
protected base_path: string;
|
|
12
12
|
protected swagger_path: string;
|
|
13
|
+
protected swagger_dir: string;
|
|
13
14
|
private linkLoader?;
|
|
14
15
|
private links;
|
|
15
16
|
app: express.Express;
|
|
@@ -27,6 +28,7 @@ export declare abstract class BaseApplication<D extends BaseDatabase> {
|
|
|
27
28
|
protected startCrashHandler(): Promise<void>;
|
|
28
29
|
protected startDatabase(): Promise<void>;
|
|
29
30
|
protected startServer(): Promise<void>;
|
|
31
|
+
protected createSwagger(): Promise<void>;
|
|
30
32
|
protected startSwagger(): Promise<void>;
|
|
31
33
|
protected startHomePage(): Promise<void>;
|
|
32
34
|
abstract onStart(): Promise<void>;
|
package/dist/BaseApplication.js
CHANGED
|
@@ -20,6 +20,7 @@ const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
|
|
|
20
20
|
const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
|
|
21
21
|
const path_1 = __importDefault(require("path"));
|
|
22
22
|
const namirasoft_core_1 = require("namirasoft-core");
|
|
23
|
+
const namirasoft_schema_1 = require("namirasoft-schema");
|
|
23
24
|
class BaseApplication {
|
|
24
25
|
constructor(base_path, swagger_path = null) {
|
|
25
26
|
var _a, _b, _c, _d;
|
|
@@ -31,6 +32,7 @@ class BaseApplication {
|
|
|
31
32
|
this.version = (_d = json === null || json === void 0 ? void 0 : json.getVersion()) !== null && _d !== void 0 ? _d : "";
|
|
32
33
|
this.base_path = base_path;
|
|
33
34
|
this.swagger_path = swagger_path !== null && swagger_path !== void 0 ? swagger_path : (base_path + "/swagger");
|
|
35
|
+
this.swagger_dir = "./swagger";
|
|
34
36
|
this.logger = this.getLogger();
|
|
35
37
|
this.addLink = this.addLink.bind(this);
|
|
36
38
|
this.addSwaggerLink = this.addSwaggerLink.bind(this);
|
|
@@ -54,6 +56,7 @@ class BaseApplication {
|
|
|
54
56
|
yield this.startCrashHandler();
|
|
55
57
|
yield this.startDatabase();
|
|
56
58
|
yield this.startServer();
|
|
59
|
+
yield this.createSwagger();
|
|
57
60
|
yield this.startSwagger();
|
|
58
61
|
yield this.startHomePage();
|
|
59
62
|
yield this.onStart();
|
|
@@ -102,6 +105,21 @@ class BaseApplication {
|
|
|
102
105
|
}));
|
|
103
106
|
});
|
|
104
107
|
}
|
|
108
|
+
createSwagger() {
|
|
109
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
let schema = yield this.getSchema();
|
|
111
|
+
let builder = new namirasoft_schema_1.SwaggerApplicationBuilder(schema);
|
|
112
|
+
let result = yield builder.run();
|
|
113
|
+
for (let i = 0; i < result.controllers.length; i++) {
|
|
114
|
+
const lines = result.controllers[i];
|
|
115
|
+
fs_1.default.writeFileSync(this.swagger_dir + "/" + i + ".swg", lines.join("\n"));
|
|
116
|
+
}
|
|
117
|
+
for (let name of Object.keys(result.classes)) {
|
|
118
|
+
const lines = result.classes[name];
|
|
119
|
+
fs_1.default.writeFileSync(this.swagger_dir + "/" + name + ".swg", lines.join("\n"));
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
105
123
|
startSwagger() {
|
|
106
124
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
125
|
const joptions = {
|
|
@@ -127,7 +145,7 @@ class BaseApplication {
|
|
|
127
145
|
},
|
|
128
146
|
],
|
|
129
147
|
},
|
|
130
|
-
apis: ['
|
|
148
|
+
apis: [this.swagger_dir + '/*.swg'],
|
|
131
149
|
};
|
|
132
150
|
const swaggerSpec = (0, swagger_jsdoc_1.default)(joptions);
|
|
133
151
|
var options = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA0C;AAC1C,gDAAwB;AACxB,4CAAoB;AACpB,4EAA2C;AAC3C,kEAAyC;AAIzC,gDAAwB;AACxB,qDAAiD;
|
|
1
|
+
{"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA0C;AAC1C,gDAAwB;AACxB,4CAAoB;AACpB,4EAA2C;AAC3C,kEAAyC;AAIzC,gDAAwB;AACxB,qDAAiD;AACjD,yDAAiF;AAEjF,MAAsB,eAAe;IAkBjC,YAAY,SAAiB,EAAE,eAA8B,IAAI;;QARzD,UAAK,GAA0B,EAAE,CAAC;QAUtC,IAAI,IAAI,GAAG,gCAAc,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,mCAAI,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,cAAc,EAAE,mCAAI,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,mCAAI,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAE,mCAAI,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,aAAa,CAAC,UAA+B;QAEzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,IAAyB;QAE7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,cAAc;QAEV,IAAI,CAAC,OAAO,CAAC;YACT,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,IAAI,CAAC,YAAY,GAAG,GAAG;YAC5B,IAAI,EAAE,qDAAqD;YAC3D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,UAAU;SAC7C,CAAC,CAAC;IACP,CAAC;IACK,KAAK;;YAEP,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;KAAA;IACe,iBAAiB;;YAE7B,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;gBAExC,IAAI,MAAM,YAAY,KAAK;oBACvB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;oBAEpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;gBAEtC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IACe,aAAa;;YAEzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;KAAA;IACe,WAAW;;YAEvB,IAAI,CAAC,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAE5B,IAAI,QAAQ,GAAa,EAAE,CAAC;gBAC5B,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,CAAC;;oBAEP,iBAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YACH,UAAU;YACV,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvC,OAAO;YACP,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,EAAC,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC7C,aAAa;YACb,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1C,eAAe;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAS,EAAE;gBAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC,CAAA,CAAC,CAAC;QACP,CAAC;KAAA;IACe,aAAa;;YAEzB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,OAAO,GAAG,IAAI,6CAAyB,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAClD;gBACI,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpC,YAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAC3E;YACD,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC5C;gBACI,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnC,YAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,GAAG,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAC9E;QACL,CAAC;KAAA;IACe,YAAY;;YAExB,MAAM,QAAQ,GAAG;gBACb,UAAU,EAAE;oBACR,OAAO,EAAE,OAAO;oBAChB,IAAI,EAAE;wBACF,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,aAAa;wBACb,mBAAmB;wBACnB,iDAAiD;wBACjD,KAAK;wBACL,aAAa;wBACb,+BAA+B;wBAC/B,qCAAqC;wBACrC,wCAAwC;wBACxC,KAAK;qBACR;oBACD,OAAO,EAAE;wBACL;4BACI,GAAG,EAAE,IAAI,CAAC,SAAS;yBACtB;qBACJ;iBACJ;gBACD,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;aACtC,CAAC;YACF,MAAM,WAAW,GAAG,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG;gBACV,QAAQ,EAAE,IAAI;aACjB,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,4BAAS,CAAC,KAAK,EAAE,4BAAS,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAClG,CAAC;KAAA;IACe,aAAa;;YAEzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBAE1C,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;gBAClE,YAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAO,GAAQ,EAAE,IAAY,EAAE,EAAE;oBAE/D,IAAI,GAAG;wBACH,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBAE3D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3C,IAAI,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrD,IAAI,KAAK,EACT;wBACI,IAAI,IAAI,GAAa,EAAE,CAAC;wBACxB,IAAI,IAAI,CAAC,UAAU,EACnB;4BACI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;4BAChB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;yBAC3B;wBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAEtB,IAAI,KAAK,EACT;gCACI,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gCACnB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gCAC3C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gCAC3D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BAClB;wBACL,CAAC,CAAC,CAAC;wBACH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;oBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACf,OAAO;gBACX,CAAC,CAAA,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;CAGJ;AAnMD,0CAmMC"}
|
|
@@ -14,4 +14,43 @@ export declare class BaseSequelizeTable<D extends BaseSequelizeDatabase, M exten
|
|
|
14
14
|
getArraySchema(require: boolean, excludeColumns?: string[], joins?: BaseVariableSchema[]): ArraySchema;
|
|
15
15
|
private getVariableSchema;
|
|
16
16
|
private getTypeSchema;
|
|
17
|
+
isFloat(type: any): type is {
|
|
18
|
+
options: {
|
|
19
|
+
length: number;
|
|
20
|
+
decimals: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
isDouble(type: any): type is {
|
|
24
|
+
options: {
|
|
25
|
+
length: number;
|
|
26
|
+
decimals: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
isDecimal(type: any): type is {
|
|
30
|
+
options: {
|
|
31
|
+
precision: number;
|
|
32
|
+
scale: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
isReal(type: any): type is {
|
|
36
|
+
options: {
|
|
37
|
+
length: number;
|
|
38
|
+
decimals: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
isChar(type: any): type is {
|
|
42
|
+
options: {
|
|
43
|
+
length: number;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
isString(type: any): type is {
|
|
47
|
+
options: {
|
|
48
|
+
length: number;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
isEnum(type: any): type is {
|
|
52
|
+
options: {
|
|
53
|
+
values: string[];
|
|
54
|
+
};
|
|
55
|
+
};
|
|
17
56
|
}
|
|
@@ -81,42 +81,65 @@ class BaseSequelizeTable extends BaseTable_1.BaseTable {
|
|
|
81
81
|
getTypeSchema(element) {
|
|
82
82
|
var _a;
|
|
83
83
|
let required = !((_a = element.allowNull) !== null && _a !== void 0 ? _a : true);
|
|
84
|
-
if (element.type
|
|
84
|
+
if (element.type instanceof sequelize_1.DataTypes.BOOLEAN)
|
|
85
85
|
return new namirasoft_schema_1.BoolSchema(required);
|
|
86
|
-
else if (element.type
|
|
86
|
+
else if (element.type instanceof sequelize_1.DataTypes.TINYINT)
|
|
87
87
|
return new namirasoft_schema_1.TinyIntSchema(required);
|
|
88
|
-
else if (element.type
|
|
88
|
+
else if (element.type instanceof sequelize_1.DataTypes.SMALLINT)
|
|
89
89
|
return new namirasoft_schema_1.SmallIntSchema(required);
|
|
90
|
-
else if (element.type
|
|
90
|
+
else if (element.type instanceof sequelize_1.DataTypes.MEDIUMINT)
|
|
91
91
|
return new namirasoft_schema_1.MediumIntSchema(required);
|
|
92
|
-
else if (element.type
|
|
92
|
+
else if (element.type instanceof sequelize_1.DataTypes.INTEGER)
|
|
93
93
|
return new namirasoft_schema_1.IntegerSchema(required);
|
|
94
|
-
else if (element.type
|
|
94
|
+
else if (element.type instanceof sequelize_1.DataTypes.BIGINT)
|
|
95
95
|
return new namirasoft_schema_1.BigIntSchema(required);
|
|
96
|
-
else if (element.type
|
|
97
|
-
return new namirasoft_schema_1.FloatSchema(required,
|
|
98
|
-
else if (element.type
|
|
99
|
-
return new namirasoft_schema_1.DoubleSchema(required,
|
|
100
|
-
else if (element.type
|
|
101
|
-
return new namirasoft_schema_1.DecimalSchema(required,
|
|
102
|
-
else if (element.type
|
|
103
|
-
return new namirasoft_schema_1.RealSchema(required,
|
|
104
|
-
else if (element.type
|
|
105
|
-
return new namirasoft_schema_1.StringSchema(required, element.type.length, element.type.length);
|
|
106
|
-
else if (
|
|
107
|
-
return new namirasoft_schema_1.StringSchema(required, null, element.type.length);
|
|
108
|
-
else if (element.type
|
|
96
|
+
else if (this.isFloat(element.type))
|
|
97
|
+
return new namirasoft_schema_1.FloatSchema(required, element.type.options.decimals);
|
|
98
|
+
else if (this.isDouble(element.type))
|
|
99
|
+
return new namirasoft_schema_1.DoubleSchema(required, element.type.options.decimals);
|
|
100
|
+
else if (this.isDecimal(element.type))
|
|
101
|
+
return new namirasoft_schema_1.DecimalSchema(required, element.type.options.scale);
|
|
102
|
+
else if (this.isReal(element.type))
|
|
103
|
+
return new namirasoft_schema_1.RealSchema(required, element.type.options.decimals);
|
|
104
|
+
else if (this.isChar(element.type))
|
|
105
|
+
return new namirasoft_schema_1.StringSchema(required, element.type.options.length, element.type.options.length);
|
|
106
|
+
else if (this.isString(element.type))
|
|
107
|
+
return new namirasoft_schema_1.StringSchema(required, null, element.type.options.length);
|
|
108
|
+
else if (element.type instanceof sequelize_1.DataTypes.TEXT)
|
|
109
|
+
return new namirasoft_schema_1.StringSchema(required, null, null);
|
|
110
|
+
else if (element.type instanceof sequelize_1.DataTypes.DATE)
|
|
109
111
|
return new namirasoft_schema_1.DateTimeSchema(required);
|
|
110
|
-
else if (element.type
|
|
112
|
+
else if (element.type instanceof sequelize_1.DataTypes.DATEONLY)
|
|
111
113
|
return new namirasoft_schema_1.DateSchema(required);
|
|
112
|
-
else if (element.type
|
|
114
|
+
else if (element.type instanceof sequelize_1.DataTypes.TIME)
|
|
113
115
|
return new namirasoft_schema_1.TimeSchema(required);
|
|
114
|
-
else if (element.type
|
|
115
|
-
return new EnumSchema_1.EnumSchema(required, element.type.
|
|
116
|
-
else if (element.type
|
|
116
|
+
else if (this.isEnum(element.type))
|
|
117
|
+
return new EnumSchema_1.EnumSchema(required, ...element.type.options.values);
|
|
118
|
+
else if (element.type instanceof sequelize_1.DataTypes.JSON)
|
|
117
119
|
return new namirasoft_schema_1.AnySchema(required);
|
|
118
120
|
throw new Error("Unsupported datatype for schema: " + element.type);
|
|
119
121
|
}
|
|
122
|
+
isFloat(type) {
|
|
123
|
+
return type instanceof sequelize_1.DataTypes.FLOAT;
|
|
124
|
+
}
|
|
125
|
+
isDouble(type) {
|
|
126
|
+
return type instanceof sequelize_1.DataTypes.DOUBLE;
|
|
127
|
+
}
|
|
128
|
+
isDecimal(type) {
|
|
129
|
+
return type instanceof sequelize_1.DataTypes.DECIMAL;
|
|
130
|
+
}
|
|
131
|
+
isReal(type) {
|
|
132
|
+
return type instanceof sequelize_1.DataTypes.REAL;
|
|
133
|
+
}
|
|
134
|
+
isChar(type) {
|
|
135
|
+
return type instanceof sequelize_1.DataTypes.CHAR;
|
|
136
|
+
}
|
|
137
|
+
isString(type) {
|
|
138
|
+
return type instanceof sequelize_1.DataTypes.STRING;
|
|
139
|
+
}
|
|
140
|
+
isEnum(type) {
|
|
141
|
+
return type instanceof sequelize_1.DataTypes.STRING;
|
|
142
|
+
}
|
|
120
143
|
}
|
|
121
144
|
exports.BaseSequelizeTable = BaseSequelizeTable;
|
|
122
145
|
//# sourceMappingURL=BaseSequelizeTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSequelizeTable.js","sourceRoot":"","sources":["../src/BaseSequelizeTable.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BaseSequelizeTable.js","sourceRoot":"","sources":["../src/BaseSequelizeTable.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "namirasoft-node",
|
|
3
3
|
"description": "Namira Software Corporation Node NPM Package",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.25",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"scripts": {},
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"cors": "^2.8.5",
|
|
20
20
|
"express": "^4.18.2",
|
|
21
21
|
"joi": "^17.11.0",
|
|
22
|
-
"namirasoft-core": "^1.1.
|
|
22
|
+
"namirasoft-core": "^1.1.9",
|
|
23
23
|
"namirasoft-log": "^1.1.1",
|
|
24
24
|
"namirasoft-schema": "^1.1.31",
|
|
25
25
|
"nodemailer": "^6.9.7",
|
package/src/BaseApplication.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { ILogger } from "namirasoft-log";
|
|
|
8
8
|
import { BaseApplicationLink } from './BaseApplicationLink';
|
|
9
9
|
import path from 'path';
|
|
10
10
|
import { PackageService } from 'namirasoft-core';
|
|
11
|
-
import { ApplicationSchema } from 'namirasoft-schema';
|
|
11
|
+
import { ApplicationSchema, SwaggerApplicationBuilder } from 'namirasoft-schema';
|
|
12
12
|
|
|
13
13
|
export abstract class BaseApplication<D extends BaseDatabase>
|
|
14
14
|
{
|
|
@@ -18,6 +18,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
18
18
|
protected version: string;
|
|
19
19
|
protected base_path: string;
|
|
20
20
|
protected swagger_path: string;
|
|
21
|
+
protected swagger_dir: string;
|
|
21
22
|
private linkLoader?: () => Promise<void>;
|
|
22
23
|
private links: BaseApplicationLink[] = [];
|
|
23
24
|
public app!: express.Express;
|
|
@@ -36,6 +37,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
36
37
|
this.version = json?.getVersion() ?? "";
|
|
37
38
|
this.base_path = base_path;
|
|
38
39
|
this.swagger_path = swagger_path ?? (base_path + "/swagger");
|
|
40
|
+
this.swagger_dir = "./swagger";
|
|
39
41
|
this.logger = this.getLogger();
|
|
40
42
|
this.addLink = this.addLink.bind(this);
|
|
41
43
|
this.addSwaggerLink = this.addSwaggerLink.bind(this);
|
|
@@ -62,6 +64,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
62
64
|
await this.startCrashHandler();
|
|
63
65
|
await this.startDatabase();
|
|
64
66
|
await this.startServer();
|
|
67
|
+
await this.createSwagger();
|
|
65
68
|
await this.startSwagger();
|
|
66
69
|
await this.startHomePage();
|
|
67
70
|
await this.onStart();
|
|
@@ -110,6 +113,22 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
110
113
|
this.logger.info(`Server listening on port ${port}`);
|
|
111
114
|
});
|
|
112
115
|
}
|
|
116
|
+
protected async createSwagger(): Promise<void>
|
|
117
|
+
{
|
|
118
|
+
let schema = await this.getSchema();
|
|
119
|
+
let builder = new SwaggerApplicationBuilder(schema);
|
|
120
|
+
let result = await builder.run();
|
|
121
|
+
for (let i = 0; i < result.controllers.length; i++)
|
|
122
|
+
{
|
|
123
|
+
const lines = result.controllers[i];
|
|
124
|
+
fs.writeFileSync(this.swagger_dir + "/" + i + ".swg", lines.join("\n"));
|
|
125
|
+
}
|
|
126
|
+
for (let name of Object.keys(result.classes))
|
|
127
|
+
{
|
|
128
|
+
const lines = result.classes[name];
|
|
129
|
+
fs.writeFileSync(this.swagger_dir + "/" + name + ".swg", lines.join("\n"));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
113
132
|
protected async startSwagger(): Promise<void>
|
|
114
133
|
{
|
|
115
134
|
const joptions = {
|
|
@@ -135,7 +154,7 @@ export abstract class BaseApplication<D extends BaseDatabase>
|
|
|
135
154
|
},
|
|
136
155
|
],
|
|
137
156
|
},
|
|
138
|
-
apis: ['
|
|
157
|
+
apis: [this.swagger_dir + '/*.swg'],
|
|
139
158
|
};
|
|
140
159
|
const swaggerSpec = swaggerJSDoc(joptions);
|
|
141
160
|
var options = {
|
|
@@ -83,40 +83,70 @@ export class BaseSequelizeTable<D extends BaseSequelizeDatabase, M extends BaseS
|
|
|
83
83
|
private getTypeSchema(element: ModelAttributeColumnOptions): BaseTypeSchema
|
|
84
84
|
{
|
|
85
85
|
let required = !(element.allowNull ?? true);
|
|
86
|
-
if (element.type
|
|
86
|
+
if (element.type instanceof DataTypes.BOOLEAN)
|
|
87
87
|
return new BoolSchema(required);
|
|
88
|
-
else if (element.type
|
|
88
|
+
else if (element.type instanceof DataTypes.TINYINT)
|
|
89
89
|
return new TinyIntSchema(required);
|
|
90
|
-
else if (element.type
|
|
90
|
+
else if (element.type instanceof DataTypes.SMALLINT)
|
|
91
91
|
return new SmallIntSchema(required);
|
|
92
|
-
else if (element.type
|
|
92
|
+
else if (element.type instanceof DataTypes.MEDIUMINT)
|
|
93
93
|
return new MediumIntSchema(required);
|
|
94
|
-
else if (element.type
|
|
94
|
+
else if (element.type instanceof DataTypes.INTEGER)
|
|
95
95
|
return new IntegerSchema(required);
|
|
96
|
-
else if (element.type
|
|
96
|
+
else if (element.type instanceof DataTypes.BIGINT)
|
|
97
97
|
return new BigIntSchema(required);
|
|
98
|
-
else if (element.type
|
|
99
|
-
return new FloatSchema(required,
|
|
100
|
-
else if (element.type
|
|
101
|
-
return new DoubleSchema(required,
|
|
102
|
-
else if (element.type
|
|
103
|
-
return new DecimalSchema(required,
|
|
104
|
-
else if (element.type
|
|
105
|
-
return new RealSchema(required,
|
|
106
|
-
else if (element.type
|
|
107
|
-
return new StringSchema(required, element.type.length, element.type.length);
|
|
108
|
-
else if (
|
|
109
|
-
return new StringSchema(required, null, element.type.length);
|
|
110
|
-
else if (element.type
|
|
98
|
+
else if (this.isFloat(element.type))
|
|
99
|
+
return new FloatSchema(required, element.type.options.decimals);
|
|
100
|
+
else if (this.isDouble(element.type))
|
|
101
|
+
return new DoubleSchema(required, element.type.options.decimals);
|
|
102
|
+
else if (this.isDecimal(element.type))
|
|
103
|
+
return new DecimalSchema(required, element.type.options.scale);
|
|
104
|
+
else if (this.isReal(element.type))
|
|
105
|
+
return new RealSchema(required, element.type.options.decimals);
|
|
106
|
+
else if (this.isChar(element.type))
|
|
107
|
+
return new StringSchema(required, element.type.options.length, element.type.options.length);
|
|
108
|
+
else if (this.isString(element.type))
|
|
109
|
+
return new StringSchema(required, null, element.type.options.length);
|
|
110
|
+
else if (element.type instanceof DataTypes.TEXT)
|
|
111
|
+
return new StringSchema(required, null, null);
|
|
112
|
+
else if (element.type instanceof DataTypes.DATE)
|
|
111
113
|
return new DateTimeSchema(required);
|
|
112
|
-
else if (element.type
|
|
114
|
+
else if (element.type instanceof DataTypes.DATEONLY)
|
|
113
115
|
return new DateSchema(required);
|
|
114
|
-
else if (element.type
|
|
116
|
+
else if (element.type instanceof DataTypes.TIME)
|
|
115
117
|
return new TimeSchema(required);
|
|
116
|
-
else if (element.type
|
|
117
|
-
return new EnumSchema(required, element.type.
|
|
118
|
-
else if (element.type
|
|
118
|
+
else if (this.isEnum(element.type))
|
|
119
|
+
return new EnumSchema(required, ...element.type.options.values);
|
|
120
|
+
else if (element.type instanceof DataTypes.JSON)
|
|
119
121
|
return new AnySchema(required);
|
|
120
122
|
throw new Error("Unsupported datatype for schema: " + element.type);
|
|
121
123
|
}
|
|
124
|
+
isFloat(type: any): type is { options: { length: number, decimals: number } }
|
|
125
|
+
{
|
|
126
|
+
return type instanceof DataTypes.FLOAT;
|
|
127
|
+
}
|
|
128
|
+
isDouble(type: any): type is { options: { length: number, decimals: number } }
|
|
129
|
+
{
|
|
130
|
+
return type instanceof DataTypes.DOUBLE;
|
|
131
|
+
}
|
|
132
|
+
isDecimal(type: any): type is { options: { precision: number, scale: number } }
|
|
133
|
+
{
|
|
134
|
+
return type instanceof DataTypes.DECIMAL;
|
|
135
|
+
}
|
|
136
|
+
isReal(type: any): type is { options: { length: number, decimals: number } }
|
|
137
|
+
{
|
|
138
|
+
return type instanceof DataTypes.REAL;
|
|
139
|
+
}
|
|
140
|
+
isChar(type: any): type is { options: { length: number } }
|
|
141
|
+
{
|
|
142
|
+
return type instanceof DataTypes.CHAR;
|
|
143
|
+
}
|
|
144
|
+
isString(type: any): type is { options: { length: number } }
|
|
145
|
+
{
|
|
146
|
+
return type instanceof DataTypes.STRING;
|
|
147
|
+
}
|
|
148
|
+
isEnum(type: any): type is { options: { values: string[] } }
|
|
149
|
+
{
|
|
150
|
+
return type instanceof DataTypes.STRING;
|
|
151
|
+
}
|
|
122
152
|
}
|