chore: add email and mailbox module
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import { Body, Controller, Delete, Get, Param, Post, Query } from "@nestjs/common";
|
||||
import { ApiOperation, ApiResponse } from "@nestjs/swagger";
|
||||
|
||||
import { QueueIdParamDto, UserIdParamDto, UserMailboxMessageParamDto, UserMailboxParamDto } from "./DTO/email-params.dto";
|
||||
import { MessageListQueryDto } from "./DTO/email-query.dto";
|
||||
import { SearchMessagesQueryDto } from "./DTO/email-query.dto";
|
||||
import { SendEmailDto } from "./DTO/send-email.dto";
|
||||
import { EmailService } from "./services/email.service";
|
||||
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
|
||||
|
||||
@Controller("email")
|
||||
@AuthGuards()
|
||||
export class EmailController {
|
||||
constructor(private readonly emailService: EmailService) {}
|
||||
|
||||
@Post(":userId/send")
|
||||
@ApiOperation({ summary: "Send an email" })
|
||||
@ApiResponse({ status: 201, description: "Email sent successfully" })
|
||||
@ApiResponse({ status: 400, description: "Invalid email data" })
|
||||
@ApiResponse({ status: 403, description: "Not authorized to send email" })
|
||||
sendEmail(@Param() params: UserIdParamDto, @Body() sendEmailDto: SendEmailDto) {
|
||||
return this.emailService.sendEmail(params.userId, sendEmailDto);
|
||||
}
|
||||
|
||||
@Get("status/:queueId")
|
||||
@ApiOperation({ summary: "Get email delivery status" })
|
||||
@ApiResponse({ status: 200, description: "Email delivery status" })
|
||||
@ApiResponse({ status: 404, description: "Email not found" })
|
||||
getEmailStatus(@Param() params: QueueIdParamDto) {
|
||||
return this.emailService.getEmailStatus(params.queueId);
|
||||
}
|
||||
|
||||
@Get(":userId/messages/:mailboxId")
|
||||
@ApiOperation({ summary: "List messages in a mailbox" })
|
||||
@ApiResponse({ status: 200, description: "List of messages" })
|
||||
@ApiResponse({ status: 404, description: "Mailbox not found" })
|
||||
listMessages(@Param() params: UserMailboxParamDto, @Query() query: MessageListQueryDto) {
|
||||
return this.emailService.listMessages(params.userId, params.mailboxId, query);
|
||||
}
|
||||
|
||||
@Get(":userId/messages/:mailboxId/:messageId")
|
||||
@ApiOperation({ summary: "Get a specific message" })
|
||||
@ApiResponse({ status: 200, description: "Message details" })
|
||||
@ApiResponse({ status: 404, description: "Message not found" })
|
||||
getMessage(@Param() params: UserMailboxMessageParamDto) {
|
||||
return this.emailService.getMessage(params.userId, params.mailboxId, params.messageId);
|
||||
}
|
||||
|
||||
@Delete(":userId/messages/:mailboxId/:messageId")
|
||||
@ApiOperation({ summary: "Delete a message" })
|
||||
@ApiResponse({ status: 200, description: "Message deleted successfully" })
|
||||
@ApiResponse({ status: 404, description: "Message not found" })
|
||||
deleteMessage(@Param() params: UserMailboxMessageParamDto) {
|
||||
return this.emailService.deleteMessage(params.userId, params.mailboxId, params.messageId);
|
||||
}
|
||||
|
||||
@Get(":userId/search")
|
||||
@ApiOperation({ summary: "Search messages across all mailboxes" })
|
||||
@ApiResponse({ status: 200, description: "Search results" })
|
||||
searchMessages(@Param() params: UserIdParamDto, @Query() query: SearchMessagesQueryDto) {
|
||||
return this.emailService.searchMessages(params.userId, query);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user