diff --git a/src/app.module.ts b/src/app.module.ts index 5c383e8..5504f39 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -4,9 +4,10 @@ import { OracleModule } from './oracle/oracle.module'; import { AuthModule } from './auth/auth.module'; import { MssqlModule } from './mssql/mssql.module'; import { OriginCheckMiddleware } from './middleware/OriginCheck.middleware'; +import { ReqBodyKeysToUppercaseMiddleware } from './middleware/reqBodyKeysToUppercase.middleware'; @Module({ - imports: [ AuthModule, DbModule, OracleModule], + imports: [AuthModule, DbModule, OracleModule], controllers: [], providers: [], }) @@ -15,5 +16,18 @@ export class AppModule { consumer .apply(OriginCheckMiddleware) .forRoutes('*'); // Apply to all routes + + consumer + .apply(ReqBodyKeysToUppercaseMiddleware) + .forRoutes('*'); // Apply to all routes + + // .forRoutes('users'); // Applies to all methods on /users + + // .forRoutes(UsersController); // Applies to all routes in this controller + + // .forRoutes( + // { path: 'users', method: RequestMethod.GET }, + // { path: 'auth/login', method: RequestMethod.POST }, + // ); } } diff --git a/src/main.ts b/src/main.ts index 72843e7..90b5ef3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,7 +10,7 @@ import { BadRequestException } from './exceptions/badRequest.exception'; async function bootstrap() { const app = await NestFactory.create(AppModule, { - logger:['error','warn'], + logger: ['error', 'warn'], cors: { // origin: 'https://dev.alphaomegainfosys.com/', origin: '*', @@ -20,6 +20,7 @@ async function bootstrap() { }, }); + function extractConstraints(validationErrors: ValidationError[]) { const constraints: { [key: string]: string }[] = []; @@ -57,7 +58,7 @@ async function bootstrap() { }) .filter(Boolean); - throw new BadRequestException(`Bad Request${newResult[0].message !== 'Bad Request' ? " : "+newResult[0].message : ""}`); + throw new BadRequestException(`Bad Request${newResult[0].message !== 'Bad Request' ? " : " + newResult[0].message : ""}`); }; app.useGlobalPipes( @@ -82,11 +83,8 @@ async function bootstrap() { .addServer('http://localhost:3000', 'Development Server 1') .build(); - const options: SwaggerDocumentOptions = { - autoTagControllers: false, - }; - const documentFactory = () => - SwaggerModule.createDocument(app, config, options); + const options: SwaggerDocumentOptions = { autoTagControllers: false }; + const documentFactory = () => SwaggerModule.createDocument(app, config, options); SwaggerModule.setup('api', app, documentFactory); await app.listen(process.env.PORT ?? 3000); diff --git a/src/middleware/reqBodyKeysToUppercase.middleware.ts b/src/middleware/reqBodyKeysToUppercase.middleware.ts new file mode 100644 index 0000000..5c5a16c --- /dev/null +++ b/src/middleware/reqBodyKeysToUppercase.middleware.ts @@ -0,0 +1,30 @@ +import { Injectable, NestMiddleware } from '@nestjs/common'; +import { Request, Response, NextFunction } from 'express'; + +@Injectable() +export class ReqBodyKeysToUppercaseMiddleware implements NestMiddleware { + use(req: Request, res: Response, next: NextFunction) { + if (req.body && typeof req.body === 'object' && !Array.isArray(req.body)) { + console.log('I am here will start operation shortly...'); + + req.body = this.uppercaseKeys(req.body); + } + next(); + } + + private uppercaseKeys(obj: Record): Record { + const newObj: Record = {}; + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + const upperKey = key.toUpperCase(); + const value = obj[key]; + + newObj[upperKey] = + value !== null && typeof value === 'object' && !Array.isArray(value) + ? this.uppercaseKeys(value) + : value; + } + } + return newObj; + } +} diff --git a/src/oracle/oracle.module.ts b/src/oracle/oracle.module.ts index 82178ca..fedf6a9 100644 --- a/src/oracle/oracle.module.ts +++ b/src/oracle/oracle.module.ts @@ -11,15 +11,15 @@ import { CarnetApplicationModule } from './carnet-application/carnet-application @Module({ imports: [ - UserMaintenanceModule, DbModule, + CarnetApplicationModule, + UserMaintenanceModule, HomePageModule, UscibManagedSpModule, ParamTableModule, ManageFeeModule, ManageHoldersModule, ManageClientsModule, - CarnetApplicationModule, ], providers: [], controllers: [],