diff --git a/src/blurting/blurting.controller.ts b/src/blurting/blurting.controller.ts index 8e203fd..a0c58aa 100644 --- a/src/blurting/blurting.controller.ts +++ b/src/blurting/blurting.controller.ts @@ -56,7 +56,7 @@ export class BlurtingController { description: '마지막 Q&A 정보 반환', type: BlurtingPageDto, }) - async getBlurting(@Req() req: Request, @Res() res: Response) { + async getBlurting(@Req() req: Request) { const { id } = req.user as JwtPayload; const user = await this.userService.findUserByVal('id', id); const blurtingPage = await this.blurtingService.getBlurting( @@ -64,7 +64,7 @@ export class BlurtingController { user.group, 0, ); - return res.json(blurtingPage); + return blurtingPage; } @UseGuards(AuthGuard('access')) diff --git a/src/blurting/blurting.service.ts b/src/blurting/blurting.service.ts index 0fae11a..9460a51 100644 --- a/src/blurting/blurting.service.ts +++ b/src/blurting/blurting.service.ts @@ -240,7 +240,7 @@ export class BlurtingService { const answers = await this.answerRepository.find({ where: { question: question }, order: { postedAt: 'ASC' }, - relations: ['question', 'user'], + relations: ['question', 'user', 'reply', 'reply.user'], }); const answersDto = await Promise.all( diff --git a/src/dtos/blurtingPage.dto.ts b/src/dtos/blurtingPage.dto.ts index 62d60de..867de96 100644 --- a/src/dtos/blurtingPage.dto.ts +++ b/src/dtos/blurtingPage.dto.ts @@ -10,11 +10,30 @@ import { BlurtingAnswerEntity, BlurtingGroupEntity, BlurtingQuestionEntity, + ReplyEntity, UserEntity, } from 'src/entities'; import { ApiProperty } from '@nestjs/swagger'; import { Mbti, Sex } from 'src/common/enums'; +export class ReplyDto { + @ApiProperty({ description: '답글 작성 유저 아이디' }) + writerUserId: number; + @ApiProperty({ description: '답글 작성 유저 닉네임' }) + writerUserName: string; + @ApiProperty({ description: '답글 내용' }) + content: string; + @ApiProperty({ description: '답글 작성 시간 ( 한국 시간 기준 )' }) + createdAt: Date; + static toDto(entity: ReplyEntity): ReplyDto { + return { + writerUserId: entity.user.id, + writerUserName: entity.user.userNickname, + content: entity.content, + createdAt: new Date(entity.createdAt.getTime() + 1000 * 60 * 60 * 9), + }; + } +} export class BlurtingAnswerDto { @IsNumber() @ApiProperty({ description: 'userId' }) @@ -54,6 +73,9 @@ export class BlurtingAnswerDto { @ApiProperty({ description: '답변 ID' }) id: number; + @ApiProperty({ description: '답글들', type: ReplyDto, isArray: true }) + reply: ReplyDto[]; + static ToDto( answerEntity: BlurtingAnswerEntity, room: string, @@ -72,6 +94,7 @@ export class BlurtingAnswerDto { room: room ?? null, likes, ilike, + reply: answerEntity.reply.map((e) => ReplyDto.toDto(e)), }; } } diff --git a/src/entities/blurtingAnswer.entity.ts b/src/entities/blurtingAnswer.entity.ts index a7156f2..a7ee52e 100644 --- a/src/entities/blurtingAnswer.entity.ts +++ b/src/entities/blurtingAnswer.entity.ts @@ -1,5 +1,11 @@ -import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; -import { BlurtingQuestionEntity, UserEntity } from '../entities'; +import { + Column, + Entity, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, +} from 'typeorm'; +import { BlurtingQuestionEntity, ReplyEntity, UserEntity } from '../entities'; import { Sex } from 'src/common/enums'; @Entity() @@ -28,4 +34,7 @@ export class BlurtingAnswerEntity { @Column({ default: 0 }) allLikes: number; + + @OneToMany(() => ReplyEntity, (reply) => reply.answer) + reply: ReplyEntity[]; }