@simitgroup/simpleapp-generator 1.1.7 → 1.1.9
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/README.md +1 -1
- package/dist/generate.js +9 -2
- package/dist/generate.js.map +1 -1
- package/docs/test.md +46 -0
- package/package.json +1 -1
- package/src/generate.ts +15 -4
- package/templates/basic/nest/controller.ts.eta +8 -2
- package/templates/basic/nest/test.ts.eta +97 -40
- package/templates/nest/.env._eta +1 -0
- package/templates/nest/src/main.ts.eta +1 -1
- package/templates/nest/src/simpleapp/generate/apischemas/index.ts.eta +3 -3
- package/templates/nest/src/simpleapp/generate/commons/exceptions/SimpleAppExceptionFilter.ts.eta +43 -34
- package/templates/nest/src/simpleapp/generate/commons/interceptors/response.interceptor.ts.eta +110 -59
- package/templates/nest/src/simpleapp/generate/commons/middlewares/tenant.middleware.ts.eta +56 -45
- package/templates/nest/src/simpleapp/generate/commons/user.context.ts.eta +408 -344
- package/templates/nest/src/simpleapp/generate/processors/simpleapp.processor.ts.eta +6 -0
- package/templates/nest/test/app.e2e-spec.ts.eta +20 -14
- package/templates/nest/test/setting.ts.eta +78 -79
- package/tsconfig.tsbuildinfo +1 -1
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ SimpleApp generator is a typescript code generator for convert jsonschemas becom
|
|
|
26
26
|
1. [jsonschemas](./docs/jsonschema.md)
|
|
27
27
|
2. [backend walk through](./docs/backend.md)
|
|
28
28
|
3. [frontend walk through](./docs/frontend.md)
|
|
29
|
-
|
|
29
|
+
4. [End to End test](./docs/test.md)
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
# Quick start
|
package/dist/generate.js
CHANGED
|
@@ -124,6 +124,7 @@ const processSchema = async (schemaname, jsondata) => {
|
|
|
124
124
|
// log.warn(`Load `+clc.yellow(file) + ` but it is not supported`)
|
|
125
125
|
// }
|
|
126
126
|
};
|
|
127
|
+
const isGenerateTest = (data) => data.autocompletecode && data.autocompletename;
|
|
127
128
|
/**
|
|
128
129
|
* generate frontend nuxt and backend nest codes.
|
|
129
130
|
*
|
|
@@ -208,9 +209,10 @@ const generateSchema = (docname, doctype, rendertype, allmodels) => {
|
|
|
208
209
|
(0, fs_1.writeFileSync)(targetfile, filecontent);
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
|
-
else if (filecategory == 'test') {
|
|
212
|
-
const targetfolder = `${backendFolder}/documents/${docname}`;
|
|
212
|
+
else if (filecategory == 'test' && isGenerateTest(variables)) {
|
|
213
|
+
const targetfolder = `${backendFolder}/test/documents/${docname}`;
|
|
213
214
|
const targetfile = `${targetfolder}/${docname}.e2e-spec.ts`;
|
|
215
|
+
log.warn("test file: ", targetfile);
|
|
214
216
|
// `${backendServiceFolder}/${doctype}.${filecategory}.${filetype}`
|
|
215
217
|
if (!(0, fs_1.existsSync)(targetfolder)) {
|
|
216
218
|
(0, fs_1.mkdirSync)(targetfolder, { recursive: true });
|
|
@@ -219,6 +221,11 @@ const generateSchema = (docname, doctype, rendertype, allmodels) => {
|
|
|
219
221
|
log.info("process: ", targetfile);
|
|
220
222
|
const filecontent = eta.render(templatepath, variables);
|
|
221
223
|
(0, fs_1.writeFileSync)(targetfile, filecontent);
|
|
224
|
+
//create stub files
|
|
225
|
+
(0, fs_1.mkdirSync)(`${targetfolder}/stub`, { recursive: true });
|
|
226
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/stub/id1.create.ts`, 'export default () => ({_id:"",})');
|
|
227
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/stub/id1.update.ts`, 'export default () => ({_id:"",})');
|
|
228
|
+
(0, fs_1.writeFileSync)(`${targetfolder}/stub/id2.create.ts`, 'export default () => ({_id:"",})');
|
|
222
229
|
}
|
|
223
230
|
}
|
|
224
231
|
}
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/docs/test.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Test
|
|
2
|
+
simple app will auto create template of CRUD test case and you can modify it to complete the test case.
|
|
3
|
+
|
|
4
|
+
The simplest standalone resource step (no foreignkey) workflow of prepare test as below:
|
|
5
|
+
1. Add sample data in `stubs` at `backend/test/yourResource/stub`
|
|
6
|
+
2. modify sample's `_id` according `backend/test/yourResource/yourResource.e2e-spec.ts`
|
|
7
|
+
3. modify `yourResource.e2e-spec.ts` according your need such as autocomplete search text or add more test
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Prepare Simple Test
|
|
12
|
+
1. Start backend and frontend server, access your `category` page
|
|
13
|
+
2. Try add new record, fill in sample data and save it.
|
|
14
|
+
3. Obtain the sample json data from debug data component.
|
|
15
|
+
4. Put content into stub:
|
|
16
|
+
a. edit `backend/test/category/stub/id1.create.ts`
|
|
17
|
+
b. replace json content with copied record but remain `id:"00000000-0000-0000-0000-000000000001"` unchange
|
|
18
|
+
5. repeat sample step `backend/test/category/stub/id1.update.ts`, but you may change the data slightly like change `categoryName` from "Category 1" to "Category 1-updated"
|
|
19
|
+
6. Go back to frontend, add new record and fill in sample data which not pass the input validation (safe failed)
|
|
20
|
+
7. Copy the data into stub
|
|
21
|
+
a. edit `backend/test/category/stub/id2.create.ts`
|
|
22
|
+
b. replace json content with copied record but remain `id:"00000000-0000-0000-0000-000000000002"` unchange
|
|
23
|
+
8. After added 3 sample data into stub, you may modify `backend/test/category/category.e2e-spec.ts`:
|
|
24
|
+
a. change `existAutoCompleteKeyword` to match partial of your sample data. Example your value `categoryName` is `Category 1`, you can define as `existAutoCompleteKeyword='Cat'`(It only search `categoryCode` and `CategoryName`)
|
|
25
|
+
b. you can add more sample/test by refer example in this file
|
|
26
|
+
9. You may remove all others folder in `backend/test/documents/*` and remain only `category` so we can have success test
|
|
27
|
+
10. execute test by run command `npm run test:e2e` in your backend
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## Prepare Test For Data with Dependency
|
|
31
|
+
Every test shall implement independently, in the case of `product` which depends on category records, we can:
|
|
32
|
+
1. copy/modify partial of record from `backend/test/category/category.e2e-spec.ts` into `backend/test/product/product.e2e-spec.ts`
|
|
33
|
+
2. execute insert `category` using `beforeAll`, you may refer:
|
|
34
|
+
a. [nestjs test documentation](https://docs.nestjs.com/fundamentals/testing)
|
|
35
|
+
b. [jest test order](https://jestjs.io/docs/setup-teardown#order-of-execution)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Test guide line
|
|
41
|
+
1. Test shall implement in empty database cause we don't want primary key crash
|
|
42
|
+
2. put sample data in stub cause we don't want our code accidentally modify the sample data
|
|
43
|
+
3. default test is simplest approach, every additional api require additional test
|
|
44
|
+
4. every test shall:
|
|
45
|
+
a. test http status
|
|
46
|
+
b. when data effect database, shall continue verify result using subsequent step `then`
|
package/package.json
CHANGED
package/src/generate.ts
CHANGED
|
@@ -102,6 +102,9 @@ const processSchema= async (schemaname:string,jsondata:JSONSchema7)=>{
|
|
|
102
102
|
// }
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
|
|
106
|
+
const isGenerateTest = (data:TypeGenerateDocumentVariable) => data.autocompletecode && data.autocompletename
|
|
107
|
+
|
|
105
108
|
/**
|
|
106
109
|
* generate frontend nuxt and backend nest codes.
|
|
107
110
|
*
|
|
@@ -167,10 +170,11 @@ const generateSchema = ( docname: string,
|
|
|
167
170
|
const generateTemplatefolder = `${constants.templatedir}/basic/${foldertype}`
|
|
168
171
|
const allfiles = readdirSync(generateTemplatefolder,{recursive:true})
|
|
169
172
|
for(let j=0; j<allfiles.length;j++){
|
|
173
|
+
|
|
170
174
|
const filename:string = String(allfiles[j])
|
|
171
175
|
const templatepath = `${generateTemplatefolder}/${filename}`
|
|
172
176
|
|
|
173
|
-
if(_.last(filename.split('.'))!='eta'){
|
|
177
|
+
if(_.last(filename.split('.'))!='eta'){
|
|
174
178
|
// log.warn("skip file: ",filename)
|
|
175
179
|
continue;
|
|
176
180
|
}
|
|
@@ -201,10 +205,11 @@ const generateSchema = ( docname: string,
|
|
|
201
205
|
writeFileSync(targetfile,filecontent);
|
|
202
206
|
}
|
|
203
207
|
|
|
204
|
-
}else if(filecategory=='test'){
|
|
205
|
-
|
|
208
|
+
}else if(filecategory=='test' && isGenerateTest(variables)){
|
|
209
|
+
|
|
210
|
+
const targetfolder = `${backendFolder}/test/documents/${docname}`
|
|
206
211
|
const targetfile = `${targetfolder}/${docname}.e2e-spec.ts`
|
|
207
|
-
|
|
212
|
+
log.warn("test file: ",targetfile)
|
|
208
213
|
// `${backendServiceFolder}/${doctype}.${filecategory}.${filetype}`
|
|
209
214
|
if(!existsSync(targetfolder)){
|
|
210
215
|
mkdirSync(targetfolder,{recursive:true})
|
|
@@ -213,6 +218,12 @@ const generateSchema = ( docname: string,
|
|
|
213
218
|
log.info("process: ",targetfile)
|
|
214
219
|
const filecontent = eta.render(templatepath, variables)
|
|
215
220
|
writeFileSync(targetfile,filecontent);
|
|
221
|
+
//create stub files
|
|
222
|
+
mkdirSync(`${targetfolder}/stub`,{recursive:true})
|
|
223
|
+
writeFileSync(`${targetfolder}/stub/id1.create.ts`,'export default () => ({_id:"00000000-0000-0000-0000-000000000001",})');
|
|
224
|
+
writeFileSync(`${targetfolder}/stub/id1.update.ts`,'export default () => ({_id:"00000000-0000-0000-0000-000000000001",})');
|
|
225
|
+
writeFileSync(`${targetfolder}/stub/id2.create.ts`,'export default () => ({_id:"00000000-0000-0000-0000-000000000002",})');
|
|
226
|
+
|
|
216
227
|
}
|
|
217
228
|
}
|
|
218
229
|
|
|
@@ -18,7 +18,8 @@ import {
|
|
|
18
18
|
Res,
|
|
19
19
|
Req,
|
|
20
20
|
HttpStatus,
|
|
21
|
-
HttpCode
|
|
21
|
+
HttpCode,
|
|
22
|
+
NotFoundException
|
|
22
23
|
} from '@nestjs/common';
|
|
23
24
|
import { SimpleAppAbstractController } from './simpleapp.controller';
|
|
24
25
|
import { <%= it.typename %>Service } from '../../services/<%= it.doctype %>.service';
|
|
@@ -211,7 +212,12 @@ export class <%= it.typename %>Controller extends SimpleAppAbstractController<
|
|
|
211
212
|
@ApiResponse({ status: 500, description: 'Internal error' })
|
|
212
213
|
@ApiOperation({ operationId: 'runFindOne' })
|
|
213
214
|
async findOne(@AppUser() appuser: UserContext,@Param('id') id: string) {
|
|
214
|
-
|
|
215
|
+
const data = await this._findOne(appuser, id);
|
|
216
|
+
if(!data ){
|
|
217
|
+
throw new NotFoundException(`${id} not found`,"not found")
|
|
218
|
+
}else{
|
|
219
|
+
return data
|
|
220
|
+
}
|
|
215
221
|
}
|
|
216
222
|
|
|
217
223
|
|
|
@@ -1,47 +1,104 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by simpleapp generator.
|
|
3
|
+
* Once this file exists whole test regarding '<%=it.name%>' will not override
|
|
4
|
+
* last change 2023-11-27
|
|
5
|
+
* Author: Ks Tan
|
|
6
|
+
*/
|
|
3
7
|
|
|
4
|
-
describe('Create record & validation', () => {
|
|
5
|
-
it('/ (POST)', async () => {
|
|
6
|
-
await getSupertest(getServer()).post('/<%=it.name%>')
|
|
7
|
-
.send(success_93a88515_d2ee_49b4_b22c_b11b16f92d1f)
|
|
8
|
-
.set('Authorization',token)
|
|
9
|
-
.set('x-org', getXorg())
|
|
10
|
-
.expect(200);
|
|
11
|
-
await getSupertest(getServer()).get('/<%=it.name%>/93a88515-d2ee-49b4-b22c-b11b16f92d1f')
|
|
12
|
-
.set('Authorization',token)
|
|
13
|
-
.set('x-org', getXorg())
|
|
14
|
-
.expect(200);
|
|
15
|
-
await getSupertest(getServer()).delete('/<%=it.name%>/93a88515-d2ee-49b4-b22c-b11b16f92d1f')
|
|
16
|
-
.set('Authorization',token)
|
|
17
|
-
.set('x-org', getXorg())
|
|
18
|
-
.expect(200);
|
|
19
|
-
});
|
|
20
|
-
})
|
|
21
|
-
// describe('Fetch created record', () => {
|
|
22
8
|
|
|
23
|
-
|
|
24
|
-
|
|
9
|
+
import {
|
|
10
|
+
getServer,
|
|
11
|
+
getSupertest,
|
|
12
|
+
token,
|
|
13
|
+
getXorg,
|
|
14
|
+
} from '../../setting';
|
|
15
|
+
import createsuccess_id1 from './stub/id1.create'; //define accepted data
|
|
16
|
+
import updatesuccess_id1 from './stub/id1.update'; //define accepted data
|
|
17
|
+
import createsuccess_id2 from './stub/id2.create'; //define rejected data
|
|
25
18
|
|
|
26
|
-
// })
|
|
27
|
-
// describe('Fetch updated record', () => {
|
|
28
19
|
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
const prefix = '<%=it.doctype%>';
|
|
21
|
+
const id1 = '00000000-0000-0000-0000-000000000001';
|
|
22
|
+
const id2 = '00000000-0000-0000-0000-000000000002';
|
|
23
|
+
const existAutoCompleteKeyword = 'C';
|
|
24
|
+
describe(`Execute test /${prefix}:`,()=>{
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* t1: simple crud test for success flow using id1
|
|
28
|
+
* create
|
|
29
|
+
* -> search
|
|
30
|
+
* -> autocomplete
|
|
31
|
+
* -> update
|
|
32
|
+
* -> delete
|
|
33
|
+
* --> search
|
|
34
|
+
*
|
|
35
|
+
*/
|
|
36
|
+
it(`Basic /${prefix} CRUD with ${id1}`, async()=>{
|
|
37
|
+
await getSupertest(getServer())
|
|
38
|
+
.post(`/${prefix}`)
|
|
39
|
+
.send(createsuccess_id1())
|
|
40
|
+
.set('Authorization', token)
|
|
41
|
+
.set('x-org', getXorg())
|
|
42
|
+
.expect(201)
|
|
43
|
+
.then(async (res)=>{
|
|
44
|
+
expect(res.body._id).toBe(id1)
|
|
45
|
+
// console.log("after created, try search")
|
|
46
|
+
//verify record by id
|
|
47
|
+
await getSupertest(getServer())
|
|
48
|
+
.get(`/${prefix}/${id1}`)
|
|
49
|
+
.set('Authorization', token)
|
|
50
|
+
.set('x-org', getXorg())
|
|
51
|
+
.expect(200)
|
|
52
|
+
.then(async(res)=>{
|
|
53
|
+
|
|
54
|
+
//verify after record exists
|
|
55
|
+
expect(res.body._id).toBe(id1)
|
|
56
|
+
await getSupertest(getServer())
|
|
57
|
+
.get(`/${prefix}/autocomplete?keyword=${existAutoCompleteKeyword}`)
|
|
58
|
+
.set('Authorization', token)
|
|
59
|
+
.set('x-org', getXorg())
|
|
60
|
+
.expect(200)
|
|
61
|
+
.then((res) => {
|
|
62
|
+
expect(res.body[0]._id).toBe(id1)
|
|
63
|
+
}); //ensure autocomplete ok
|
|
31
64
|
|
|
32
|
-
|
|
33
|
-
|
|
65
|
+
await getSupertest(getServer())
|
|
66
|
+
.put(`/${prefix}/${id1}`)
|
|
67
|
+
.send(updatesuccess_id1())
|
|
68
|
+
.set('Authorization', token)
|
|
69
|
+
.set('x-org', getXorg())
|
|
70
|
+
.expect(200)
|
|
71
|
+
.then(async(res) => {
|
|
72
|
+
expect(res.body._id).toBe(id1)
|
|
73
|
+
await getSupertest(getServer())
|
|
74
|
+
.delete(`/${prefix}/${id1}`)
|
|
75
|
+
.set('Authorization', token)
|
|
76
|
+
.set('x-org', getXorg())
|
|
77
|
+
.expect(200)
|
|
78
|
+
.then(async(res)=>{
|
|
79
|
+
expect(res.body.result.deletedCount).toBe(1)
|
|
80
|
+
expect(res.body.data._id).toBe(id1)
|
|
81
|
+
await getSupertest(getServer())
|
|
82
|
+
.get(`/${prefix}/${id1}`)
|
|
83
|
+
.set('Authorization', token)
|
|
84
|
+
.set('x-org', getXorg())
|
|
85
|
+
.expect(404)
|
|
86
|
+
})//end delete
|
|
87
|
+
})//end update id1
|
|
88
|
+
}) //verify id exists
|
|
89
|
+
})// after create
|
|
90
|
+
})//end simple crud test id1
|
|
34
91
|
|
|
35
|
-
// })
|
|
36
|
-
// describe('delete record', () => {
|
|
37
92
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
93
|
+
/**
|
|
94
|
+
* t2: test block record
|
|
95
|
+
*/
|
|
96
|
+
it(`test /${prefix} with reject ${id2}`, async()=>{
|
|
97
|
+
await getSupertest(getServer())
|
|
98
|
+
.post(`/${prefix}`)
|
|
99
|
+
.send(createsuccess_id2())
|
|
100
|
+
.set('Authorization', token)
|
|
101
|
+
.set('x-org', getXorg())
|
|
102
|
+
.expect(400)
|
|
103
|
+
})
|
|
104
|
+
})
|
package/templates/nest/.env._eta
CHANGED
|
@@ -23,7 +23,7 @@ async function bootstrap() {
|
|
|
23
23
|
|
|
24
24
|
// app.enableCors();
|
|
25
25
|
const httpAdapter = app.get(HttpAdapterHost);
|
|
26
|
-
app.useGlobalFilters(new SimpleAppExceptionFilter(httpAdapter));
|
|
26
|
+
// app.useGlobalFilters(new SimpleAppExceptionFilter(httpAdapter));
|
|
27
27
|
|
|
28
28
|
const config = new DocumentBuilder()
|
|
29
29
|
.setTitle(process.env.PROJECT_NAME)
|
|
@@ -11,10 +11,10 @@ export class ApiKeyValuePair {
|
|
|
11
11
|
field1: any
|
|
12
12
|
}
|
|
13
13
|
export class ApiSearchBody{
|
|
14
|
-
@ApiProperty({"type":Object,"required":false,"examples":['{"field1":"1"}'],"default":
|
|
14
|
+
@ApiProperty({ "type":Object, "required":false, "examples":['{"field1":"1"}'] ,"default":{"field1":"ok","field2":true,}} )
|
|
15
15
|
filter: Object;
|
|
16
|
-
@ApiProperty({"type":[Object],"required":true,"examples":['["field1","field2"]'],"default":[
|
|
16
|
+
@ApiProperty({"type":[Object],"required":true,"examples":['["field1","field2"]'],"default":["field1","field2"]} )
|
|
17
17
|
fields: [Object];
|
|
18
|
-
@ApiProperty({"type":()=>[Object],"required":true,"examples":['[
|
|
18
|
+
@ApiProperty({"type":()=>[Object],"required":true,"examples":['[[ "field1", "asc" ]]'],"default":[[ 'field1', 'asc' ]]} )
|
|
19
19
|
sorts: [Object];
|
|
20
20
|
}
|
package/templates/nest/src/simpleapp/generate/commons/exceptions/SimpleAppExceptionFilter.ts.eta
CHANGED
|
@@ -15,53 +15,62 @@ import { HttpAdapterHost } from '@nestjs/core';
|
|
|
15
15
|
import { ClientSession } from 'mongoose';
|
|
16
16
|
@Catch()
|
|
17
17
|
export class SimpleAppExceptionFilter implements ExceptionFilter {
|
|
18
|
-
constructor(
|
|
19
|
-
private readonly httpAdapterHost: HttpAdapterHost) {}
|
|
18
|
+
constructor(private readonly httpAdapterHost: HttpAdapterHost) {}
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
async catch(exception, host: ArgumentsHost) {
|
|
22
21
|
// In certain situations `httpAdapter` might not be available in the
|
|
23
22
|
// constructor method, thus we should resolve it here.
|
|
24
23
|
const { httpAdapter } = this.httpAdapterHost;
|
|
25
24
|
const ctx = host.switchToHttp();
|
|
26
25
|
const request = ctx.getRequest<Request>();
|
|
27
|
-
|
|
28
|
-
if(request['sessionuser']){
|
|
29
|
-
const session:ClientSession = request['sessionuser'].getDBSession()
|
|
30
|
-
if(session.inTransaction())
|
|
26
|
+
|
|
27
|
+
if (request['sessionuser']) {
|
|
28
|
+
const session: ClientSession = request['sessionuser'].getDBSession();
|
|
29
|
+
if (session.inTransaction()) {
|
|
30
|
+
await session.abortTransaction()//.then(()=>session.endSession());
|
|
31
|
+
session.endSession()
|
|
32
|
+
}
|
|
31
33
|
}
|
|
32
34
|
// console.log('exceptionexception',typeof exception,Object.keys(exception),exception)
|
|
33
|
-
let errordata
|
|
34
|
-
let finalstatus
|
|
35
|
-
let msg
|
|
36
|
-
if(Object.keys(exception).length>0){
|
|
37
|
-
msg = exception.message
|
|
38
|
-
errordata =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
finalstatus =
|
|
35
|
+
let errordata;
|
|
36
|
+
let finalstatus;
|
|
37
|
+
let msg;
|
|
38
|
+
if (Object.keys(exception).length > 0) {
|
|
39
|
+
msg = exception.message;
|
|
40
|
+
errordata =
|
|
41
|
+
exception.response && exception.response.options
|
|
42
|
+
? exception.response.options
|
|
43
|
+
: exception.options;
|
|
44
|
+
finalstatus =
|
|
45
|
+
exception.response && exception.response.status
|
|
46
|
+
? exception.response.status
|
|
47
|
+
: exception.status;
|
|
48
|
+
} else {
|
|
49
|
+
msg = String(exception);
|
|
50
|
+
finalstatus = 500;
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
const responseBody = {
|
|
46
54
|
message: msg,
|
|
47
|
-
timestamp: new Date().toISOString(),
|
|
55
|
+
timestamp: new Date().toISOString(),
|
|
48
56
|
path: httpAdapter.getRequestUrl(ctx.getRequest()),
|
|
49
|
-
error:errordata
|
|
57
|
+
error: errordata,
|
|
50
58
|
};
|
|
51
|
-
|
|
52
|
-
const eventObj = request['eventObj']
|
|
53
|
-
if(eventObj){
|
|
54
|
-
eventObj.statusCode=finalstatus
|
|
55
|
-
eventObj.errMsg=responseBody.message
|
|
56
|
-
const endtime =new Date()
|
|
57
|
-
eventObj.updated = endtime.toISOString()
|
|
58
|
-
eventObj.data = request.body
|
|
59
|
-
eventObj.errData = responseBody.error
|
|
60
|
-
eventObj.status=
|
|
61
|
-
eventObj.duration =
|
|
62
|
-
|
|
59
|
+
|
|
60
|
+
const eventObj = request['eventObj'];
|
|
61
|
+
if (eventObj) {
|
|
62
|
+
eventObj.statusCode = finalstatus;
|
|
63
|
+
eventObj.errMsg = responseBody.message;
|
|
64
|
+
const endtime = new Date();
|
|
65
|
+
eventObj.updated = endtime.toISOString();
|
|
66
|
+
eventObj.data = request.body;
|
|
67
|
+
eventObj.errData = responseBody.error;
|
|
68
|
+
eventObj.status = 'NG';
|
|
69
|
+
eventObj.duration =
|
|
70
|
+
endtime.getTime() - new Date(eventObj.created).getTime();
|
|
71
|
+
eventObj.save();
|
|
63
72
|
}
|
|
64
|
-
|
|
65
|
-
httpAdapter.reply(ctx.getResponse(), responseBody,finalstatus);
|
|
73
|
+
|
|
74
|
+
httpAdapter.reply(ctx.getResponse(), responseBody, finalstatus);
|
|
66
75
|
}
|
|
67
|
-
}
|
|
76
|
+
}
|