serealizer

This commit is contained in:
xXpuma99Xx 2022-04-16 09:52:15 -05:00
parent 03a886237f
commit f91d422d67
3 changed files with 39 additions and 5 deletions

View File

@ -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<any>,
): Observable<any> | Promise<Observable<any>> {
return next
.handle()
.pipe(
map((data: any) =>
plainToClass(this.dto, data, { excludeExtraneousValues: true }),
),
);
}
}

View File

@ -1,14 +1,15 @@
import { Body, Controller, Get, Post, Query } from '@nestjs/common'; import { Body, Controller, Get, Post, Query } from '@nestjs/common';
import { ModuloService } from './modulo.service'; import { ModuloService } from './modulo.service';
import { Serealize } from '../interceptors/serialize.interceptor';
import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CrearModuloDto } from './dto/crear-modulo.dto'; import { CrearModuloDto } from './dto/crear-modulo.dto';
@Controller('modulo') @Controller('modulo')
export class ModuloController { export class ModuloController {
constructor(private moduloService: ModuloService) {} constructor(private moduloService: ModuloService) {}
@Get() @Get("modulos")
get(@Query() query: IdInstitucionDto) { get(@Query() query: IdInstitucionDto) {
return this.moduloService.findByIdInstitucion(Number(query.id_institucion)); return this.moduloService.findAllByIdInstitucion(Number(query.id_institucion));
} }
@Post() @Post()

View File

@ -9,14 +9,13 @@ export class ModuloService {
@InjectRepository(Modulo) private repository: Repository<Modulo>, @InjectRepository(Modulo) private repository: Repository<Modulo>,
) {} ) {}
findByIdInstitucion(id_institucion: number) { findAllByIdInstitucion(id_institucion: number) {
return this.repository.find({ return this.repository.find({
where: { institucion: id_institucion }, where: { institucion: { id_institucion: 1 } },
}); });
} }
create(attrs: Partial<Modulo>) { create(attrs: Partial<Modulo>) {
console.log(attrs);
return this.repository return this.repository
.findOne({ .findOne({
where: { institucion: attrs.institucion, modulo: attrs.modulo }, where: { institucion: attrs.institucion, modulo: attrs.modulo },