From f91d422d6754d29b4d232c3b8475921f6ae0cfb9 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sat, 16 Apr 2022 09:52:15 -0500 Subject: [PATCH] serealizer --- src/interceptors/serialize.interceptor.ts | 34 +++++++++++++++++++++++ src/modulo/modulo.controller.ts | 5 ++-- src/modulo/modulo.service.ts | 5 ++-- 3 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 src/interceptors/serialize.interceptor.ts diff --git a/src/interceptors/serialize.interceptor.ts b/src/interceptors/serialize.interceptor.ts new file mode 100644 index 0000000..1f47ff9 --- /dev/null +++ b/src/interceptors/serialize.interceptor.ts @@ -0,0 +1,34 @@ +import { + UseInterceptors, + NestInterceptor, + ExecutionContext, + CallHandler, +} from '@nestjs/common'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { plainToClass } from 'class-transformer'; + +interface ClassConstructor { + new (...args: any[]): {}; +} + +export function Serealize(dto: ClassConstructor) { + return UseInterceptors(new SerializeInterceptor(dto)); +} + +export class SerializeInterceptor implements NestInterceptor { + constructor(private dto: any) {} + + intercept( + context: ExecutionContext, + next: CallHandler, + ): Observable | Promise> { + return next + .handle() + .pipe( + map((data: any) => + plainToClass(this.dto, data, { excludeExtraneousValues: true }), + ), + ); + } +} diff --git a/src/modulo/modulo.controller.ts b/src/modulo/modulo.controller.ts index cb9b481..8ae50c2 100644 --- a/src/modulo/modulo.controller.ts +++ b/src/modulo/modulo.controller.ts @@ -1,14 +1,15 @@ import { Body, Controller, Get, Post, Query } from '@nestjs/common'; import { ModuloService } from './modulo.service'; +import { Serealize } from '../interceptors/serialize.interceptor'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { CrearModuloDto } from './dto/crear-modulo.dto'; @Controller('modulo') export class ModuloController { constructor(private moduloService: ModuloService) {} - @Get() + @Get("modulos") get(@Query() query: IdInstitucionDto) { - return this.moduloService.findByIdInstitucion(Number(query.id_institucion)); + return this.moduloService.findAllByIdInstitucion(Number(query.id_institucion)); } @Post() diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index 08c8759..e3a04d1 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -9,14 +9,13 @@ export class ModuloService { @InjectRepository(Modulo) private repository: Repository, ) {} - findByIdInstitucion(id_institucion: number) { + findAllByIdInstitucion(id_institucion: number) { return this.repository.find({ - where: { institucion: id_institucion }, + where: { institucion: { id_institucion: 1 } }, }); } create(attrs: Partial) { - console.log(attrs); return this.repository .findOne({ where: { institucion: attrs.institucion, modulo: attrs.modulo },