diff --git a/src/app.module.ts b/src/app.module.ts index 52a4042..07d553e 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -50,6 +50,8 @@ import { ServeStaticModule } from '@nestjs/serve-static'; import { join } from 'path'; import { CarruselModule } from './carrusel/carrusel.module'; import { Carrusel } from './entities/carrusel.entity'; +import { ComentariosModule } from './comentarios/comentarios.module'; +import { Comentarios } from './comentarios/entity/comentarios.entity'; @Module({ imports: [ @@ -94,7 +96,9 @@ import { Carrusel } from './entities/carrusel.entity'; EquipoEvento, EquipoMiembro, /* Agregado el 2 de junio */ - Carrusel + Carrusel, + /* No recuerdo porque empece a ponerle fechas */ + Comentarios, ], synchronize: true, }), @@ -117,10 +121,12 @@ import { Carrusel } from './entities/carrusel.entity'; ProyectoActividadModule, ActividadModule, EmailModule, + ComentariosModule, MulterModule.register({ dest: './uploads', // directorio de destino para guardar los archivos cargados }), CarruselModule, + ComentariosModule, ], controllers: [ AppController, @@ -132,6 +138,7 @@ import { Carrusel } from './entities/carrusel.entity'; export class AppModule { static port: number; constructor(private readonly configService: ConfigService) { + console.log('PORT', this.configService.get('PORT')); AppModule.port = this.configService.get('PORT'); } } diff --git a/src/comentarios/comentario.dto.ts b/src/comentarios/comentario.dto.ts new file mode 100644 index 0000000..6aebf45 --- /dev/null +++ b/src/comentarios/comentario.dto.ts @@ -0,0 +1,4 @@ +export class ComentarioDto { + from: string; + comentario: string; +} diff --git a/src/comentarios/comentarios.controller.ts b/src/comentarios/comentarios.controller.ts new file mode 100644 index 0000000..b38d3b4 --- /dev/null +++ b/src/comentarios/comentarios.controller.ts @@ -0,0 +1,43 @@ +import { + Body, + Controller, + Delete, + Get, + Param, + ParseIntPipe, + Post, + Query, + } from '@nestjs/common'; + import { ComentariosService } from './comentarios.service'; + import { ComentarioDto } from './comentario.dto'; + + @Controller('comentarios') + export class ComentariosController { + constructor(private comentariosService: ComentariosService) {} + + @Post() + postComentario(@Body() comentario: ComentarioDto) { + return this.comentariosService.postComentario(comentario); + } + + @Get() + getComentarios() { + return this.comentariosService.getComentarios(); + } + + @Get('by-date') + getComentariosByDate( + @Query('before') before?: string, + @Query('after') after?: string, + @Query('from') from?: string, + @Query('to') to?: string, + ) { + return this.comentariosService.getComentariosByDate(before, after, from, to); + } + + @Delete(':id') + deleteComentario(@Param('id', ParseIntPipe) id: number) { + return this.comentariosService.deleteComentario(id); + } + } + \ No newline at end of file diff --git a/src/comentarios/comentarios.module.ts b/src/comentarios/comentarios.module.ts new file mode 100644 index 0000000..26d536d --- /dev/null +++ b/src/comentarios/comentarios.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { ComentariosController } from './comentarios.controller'; +import { ComentariosService } from './comentarios.service'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Comentarios } from './entity/comentarios.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([Comentarios])], + controllers: [ComentariosController], + providers: [ComentariosService], +}) +export class ComentariosModule {} diff --git a/src/comentarios/comentarios.service.ts b/src/comentarios/comentarios.service.ts new file mode 100644 index 0000000..f654940 --- /dev/null +++ b/src/comentarios/comentarios.service.ts @@ -0,0 +1,55 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Comentarios } from './entity/comentarios.entity'; +import { Repository } from 'typeorm'; +import { ComentarioDto } from './comentario.dto'; + +@Injectable() +export class ComentariosService { + constructor( + @InjectRepository(Comentarios) + private comentariosRepository: Repository, + ) {} + + postComentario(comentario: ComentarioDto) { + const nuevoComentario = this.comentariosRepository.create(comentario); + return this.comentariosRepository.save(nuevoComentario); + } + + getComentarios() { + return this.comentariosRepository.find(); + } + + async getComentariosByDate( + before?: string, + after?: string, + from?: string, + to?: string, + ) { + const query = this.comentariosRepository.createQueryBuilder('comentarios'); + + if (before) { + query.andWhere('comentarios.fecha_registro < :before', { + before: new Date(before), + }); + } + + if (after) { + query.andWhere('comentarios.fecha_registro > :after', { after: new Date(after) }); + } + + if (from) { + query.andWhere('comentarios.fecha_registro >= :from', { from: new Date(from) }); + } + + if (to) { + query.andWhere('comentarios.fecha_registro <= :to', { to: new Date(to) }); + } + + return await query.getMany(); + } + + deleteComentario(id: number) { + return this.comentariosRepository.delete({ id_comentario: id }); + } +} diff --git a/src/comentarios/entity/comentarios.entity.ts b/src/comentarios/entity/comentarios.entity.ts new file mode 100644 index 0000000..71a216e --- /dev/null +++ b/src/comentarios/entity/comentarios.entity.ts @@ -0,0 +1,16 @@ +import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn } from 'typeorm'; + +@Entity() +export class Comentarios { + @PrimaryGeneratedColumn() + id_comentario: number; + + @Column() + from: string; + + @Column() + comentario: string; + + @CreateDateColumn({ type: 'timestamp' }) + fecha_registro: Date; +}