@simitgroup/simpleapp-generator 1.1.7 → 1.1.8

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/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
  }
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simitgroup/simpleapp-generator",
3
- "version": "1.1.7",
3
+ "version": "1.1.8",
4
4
  "description": "frontend nuxtjs and backend nests code generator using jsonschema",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
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
- const targetfolder = `${backendFolder}/documents/${docname}`
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:"",})');
224
+ writeFileSync(`${targetfolder}/stub/id1.update.ts`,'export default () => ({_id:"",})');
225
+ writeFileSync(`${targetfolder}/stub/id2.create.ts`,'export default () => ({_id:"",})');
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
- return await this._findOne(appuser,id);
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
- import {getServer,getSupertest,token,emptyxorg,getXorg} from '../../setting'
2
- import success_93a88515_d2ee_49b4_b22c_b11b16f92d1f from './201/id-93a88515-d2ee-49b4-b22c-b11b16f92d1f.json'
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
- // describe('Update record & validation', () => {
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
- // describe('search all records', () => {
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
- // describe('perform others api test', () => {
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
- // describe('Try search all tenants', () => {
42
- // it('/tenant/search (POST)', async () => {
43
- // await getSupertest(getServer()).post('/tenant/search')
44
- // .send({fields:['tenantId']}).set('Authorization',token).set('x-org', emptyxorg)
45
- // .expect(200)
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
+ })
@@ -32,3 +32,4 @@ AUTH_ORIGIN=http://localhost:8080
32
32
  ADMIN_EMAIL=
33
33
  TEST_OAUTH2_USERNAME=
34
34
  TEST_OAUTH2_PASSWORD=
35
+ TEST_SERVER=http://localhost:8000
@@ -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":[{"field1":"ok","field2":true,}]} )
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":[["field1","field2"]]} )
16
+ @ApiProperty({"type":[Object],"required":true,"examples":['["field1","field2"]'],"default":["field1","field2"]} )
17
17
  fields: [Object];
18
- @ApiProperty({"type":()=>[Object],"required":true,"examples":['[{"field1":"asc"}]'],"default":[[{"field1":"asc"}]]} )
18
+ @ApiProperty({"type":()=>[Object],"required":true,"examples":['[[ "field1", "asc" ]]'],"default":[[ 'field1', 'asc' ]]} )
19
19
  sorts: [Object];
20
20
  }
@@ -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
- catch(exception, host: ArgumentsHost): void {
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())session.abortTransaction()
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 = (exception.response && exception.response.options) ? exception.response.options : exception.options
39
- finalstatus = ( exception.response && exception.response.status) ? exception.response.status : exception.status
40
- }else{
41
- msg = String(exception)
42
- finalstatus = 500
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="NG"
61
- eventObj.duration = endtime.getTime() - new Date(eventObj.created).getTime()
62
- eventObj.save()
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
+ }
@@ -4,77 +4,128 @@
4
4
  * last change 2023-10-28
5
5
  * Author: Ks Tan
6
6
  */
7
- import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
8
- import { Observable } from 'rxjs';
9
- import { tap } from 'rxjs/operators';
10
- import { Model,Connection, ClientSession } from 'mongoose';
11
- import { InjectConnection,InjectModel } from '@nestjs/mongoose';
7
+ import {
8
+ Injectable,
9
+ NestInterceptor,
10
+ ExecutionContext,
11
+ CallHandler,
12
+ BadGatewayException,
13
+ HttpException,
14
+ } from '@nestjs/common';
15
+ import { Observable, throwError } from 'rxjs';
16
+ import { catchError, tap } from 'rxjs/operators';
17
+ import { Model, Connection, ClientSession } from 'mongoose';
18
+ import { InjectConnection, InjectModel } from '@nestjs/mongoose';
12
19
  import { UserContext } from '../user.context';
13
20
  import { ApiEvent } from '../../types/apievent.type';
14
21
  @Injectable()
15
22
  export class ResponseInterceptor implements NestInterceptor {
16
-
17
- constructor(
18
- @InjectConnection() private readonly connection: Connection,
19
- @InjectModel('ApiEvent') private apieventmodel: Model<ApiEvent>,
20
- ){
21
-
22
-
23
- }
24
- async intercept(context: ExecutionContext, next: CallHandler): Promise<Observable<any>> {
25
- const req = context.switchToHttp().getRequest()
26
- const resp = context.switchToHttp().getResponse()
27
- const usersession:UserContext = req['sessionuser']
28
- const method = req['method']
29
- const headers = {...req['headers']}
30
- const ip = req['ip']
31
- const url = req['url']
32
- // let { url, method, headers, body }
33
- const session:ClientSession = usersession.getDBSession()
34
- const logid:string = crypto.randomUUID()
35
- const starttime =new Date()
23
+ constructor(
24
+ @InjectConnection() private readonly connection: Connection,
25
+ @InjectModel('ApiEvent') private apieventmodel: Model<ApiEvent>,
26
+ ) {}
36
27
 
28
+
29
+ async intercept(
30
+ context: ExecutionContext,
31
+ next: CallHandler,
32
+ ): Promise<Observable<any>> {
33
+ const req = context.switchToHttp().getRequest();
34
+ const resp = context.switchToHttp().getResponse();
35
+ const usersession: UserContext = req['sessionuser'];
36
+
37
+ const method = req['method'];
38
+ const headers = { ...req['headers'] };
39
+ const ip = req['ip'];
40
+ const url = req['url'];
41
+ // let { url, method, headers, body }
42
+ const session = await this.connection.startSession();
43
+ if(!session['runCount']){
44
+ session['runCount']=0
45
+ }else{
46
+ session['runCount']=session['runCount']+1
47
+ }
48
+ usersession.setDBSession(session)
49
+ // const session: ClientSession = usersession.getDBSession();
50
+ const logid: string = crypto.randomUUID();
51
+ const starttime = new Date();
52
+ let canCommit = true
37
53
  //authorization no need
38
- delete headers['authorization']//='--removed--'
39
- const data:ApiEvent = {
54
+ delete headers['authorization']; //='--removed--'
55
+ const eventdata: ApiEvent = {
40
56
  _id: logid,
41
57
  created: starttime.toISOString(),
42
- duration : 0,
58
+ duration: 0,
43
59
  createdBy: usersession.getUid(),
44
60
  path: url,
45
61
  method: method,
46
62
  headers: headers,
47
- ip:ip,
63
+ ip: ip,
48
64
  // data: req.body,
49
- statusCode:0,
50
- status:'D'
51
- }
52
- const eventmodel = new this.apieventmodel(data)
53
-
54
- const eventObj = await eventmodel.save()
55
-
56
- req['eventObj']=eventObj
57
- return next
58
- .handle()
59
- .pipe(
60
- tap(async () => {
61
-
62
- const endtime =new Date()
63
- eventObj.isNew=false
64
- eventObj.statusCode=resp['statusCode']
65
- eventObj.updated = endtime.toISOString()
66
- eventObj.status="OK"
67
- eventObj.duration = endtime.getTime() - starttime.getTime()
68
- const result = await eventObj.save()//({_id:logid},{statusCode:resp['statusCode']})
69
- // console.log("result===",logid,result)
65
+ statusCode: 0,
66
+ status: 'D',
67
+ };
68
+ const eventmodel = new this.apieventmodel(eventdata);
69
+
70
+ const eventObj = await eventmodel.save();
71
+
72
+ // req['eventObj'] = eventObj;
73
+ return next.handle().pipe(
74
+
75
+ catchError( async(err,caught)=>{
76
+
77
+ // console.log('**************catchError at interceptor ',method,url)
78
+ if (session.inTransaction()) {
79
+ await session.abortTransaction()
80
+ canCommit=false
81
+ }
70
82
 
71
- if(process.env.DRYRUN=='true'){
72
- console.warn("--------dryrun! roll back everything-----------")
73
- if(session.inTransaction())session.abortTransaction()
74
- }else{
75
- if(session.inTransaction())session.commitTransaction()
76
- }
77
- }),
78
- );
83
+
84
+ const responseBody = {
85
+ message: err.message,
86
+ timestamp: new Date().toISOString(),
87
+ path: url,
88
+ error: err.options,
89
+ };
90
+
91
+ // eventObj.statusCode = err.status;
92
+ // eventObj.errMsg = responseBody.message;
93
+ // const endtime = new Date();
94
+ // eventObj.updated = endtime.toISOString();
95
+ // eventObj.data = req.body;
96
+ // eventObj.errData = responseBody.error;
97
+ // eventObj.status = 'NG';
98
+ // eventObj.duration =
99
+ // endtime.getTime() - new Date(eventObj.created).getTime();
100
+ // eventObj.save();
101
+
102
+ resp.status(err.status)
103
+ return responseBody
104
+
105
+ }),
106
+ tap(async () => {
107
+ // console.log("============interceptor tap",method,url)
108
+ const endtime = new Date();
109
+ eventObj.isNew = false;
110
+ eventObj.statusCode = resp['statusCode'];
111
+ eventObj.updated = endtime.toISOString();
112
+ eventObj.status = 'OK';
113
+ eventObj.duration = endtime.getTime() - starttime.getTime();
114
+ await eventObj.save();
115
+
116
+
117
+ if (process.env.DRYRUN == 'true') {
118
+ console.warn('--------dryrun! roll back everything-----------');
119
+ if (session.inTransaction() && canCommit ) {
120
+ await session.abortTransaction()
121
+ }
122
+ } else {
123
+ if (session.inTransaction() && canCommit ) {
124
+ await session.commitTransaction()//.then(()=>session.endSession());
125
+ }
126
+ }
127
+ // session.endSession()
128
+ }),
129
+ );
79
130
  }
80
- }
131
+ }