diff --git a/package.json b/package.json index eb104cb..4fa2216 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "shinnyang", - "version": "0.2.0", + "version": "0.2.1", "description": "", "author": { "name": "Medici", diff --git a/src/mails/dtos/mails.response.dto.ts b/src/mails/dtos/mails.response.dto.ts index 474439c..dd5c4e4 100644 --- a/src/mails/dtos/mails.response.dto.ts +++ b/src/mails/dtos/mails.response.dto.ts @@ -7,6 +7,10 @@ export class LetterFromMailResponseDTO { @IsUUID('all') id: string; + @ApiProperty() + @IsUUID('all') + mailId: string; + @ApiProperty() @IsDate() createdAt: Date; @@ -44,9 +48,14 @@ export class LetterFromMailResponseDTO { isRespond: boolean; constructor( - letter: Mail['letter'] & { replyLetterId: string | null; isRead: boolean }, + letter: Mail['letter'] & { + replyLetterId: string | null; + isRead: boolean; + mailId: string; + }, ) { this.id = letter.id; + this.mailId = letter.mailId; this.createdAt = letter.createdAt; this.updatedAt = letter.updatedAt; this.senderId = letter.senderId; diff --git a/src/mails/mails.controller.ts b/src/mails/mails.controller.ts index 7ad9704..e8273bb 100644 --- a/src/mails/mails.controller.ts +++ b/src/mails/mails.controller.ts @@ -1,6 +1,15 @@ import { AccessGuard } from 'src/auth/guards/acess.guard'; import { MailsService } from './mails.service'; -import { Body, Controller, Get, Post, Put, UseGuards } from '@nestjs/common'; +import { + Body, + Controller, + Get, + Param, + ParseUUIDPipe, + Post, + Put, + UseGuards, +} from '@nestjs/common'; import { AuthUser } from 'src/auth/decorators/auth-user.decorator'; import { ApiBearerAuth, @@ -29,6 +38,16 @@ export class MailsController { async getMyMails(@AuthUser() { id }) { return await this.mailsService.getMyMails(id); } + @Get(':mailId') + @ApiOkResponse({ + type: [LetterFromMailResponseDTO], + }) + async getMyMailById( + @AuthUser() { id }, + @Param('mailId', ParseUUIDPipe) mailId: string, + ) { + return await this.mailsService.getMyMailById(id, mailId); + } @ApiOperation({ summary: '편지 보관하기', diff --git a/src/mails/mails.service.ts b/src/mails/mails.service.ts index 087ce52..3e480fe 100644 --- a/src/mails/mails.service.ts +++ b/src/mails/mails.service.ts @@ -14,6 +14,27 @@ import { Letter } from 'src/letters/entities/letter.entity'; export class MailsService { constructor(@InjectDataSource() private readonly dataSource: DataSource) {} + async getMyMailById(userId: string, mailId: string) { + const mail = await this.dataSource.getRepository(Mail).findOne({ + where: { + id: mailId, + userId, + }, + relations: { + letter: true, + }, + }); + if (!mail) { + throw new BadRequestException(); + } + return new LetterFromMailResponseDTO({ + ...mail.letter, + mailId, + isRead: mail.isRead, + replyLetterId: mail.replyLetterId, + }); + } + async getMyMails(userId: string) { const myMails = await this.dataSource.getRepository(Mail).find({ where: { @@ -27,6 +48,7 @@ export class MailsService { (mail) => new LetterFromMailResponseDTO({ ...mail.letter, + mailId: mail.id, isRead: mail.isRead, replyLetterId: mail.replyLetterId, }),