import { Body, Controller, Get, Param, Post, Req, UseGuards, } from "@nestjs/common"; import { AuthGuard } from "../auth/guards/auth.guard"; import type { AuthenticatedRequest } from "../common/interfaces/request.interface"; import { CreateMessageDto } from "./dto/create-message.dto"; import { MessagesService } from "./messages.service"; @Controller("messages") @UseGuards(AuthGuard) export class MessagesController { constructor(private readonly messagesService: MessagesService) {} @Get("conversations") getConversations(@Req() req: AuthenticatedRequest) { return this.messagesService.getConversations(req.user.sub); } @Get("unread-count") getUnreadCount(@Req() req: AuthenticatedRequest) { return this.messagesService.getUnreadCount(req.user.sub); } @Get("conversations/with/:userId") getConversationWithUser( @Req() req: AuthenticatedRequest, @Param("userId") targetUserId: string, ) { return this.messagesService.getConversationWithUser( req.user.sub, targetUserId, ); } @Get("conversations/:id") getMessages( @Req() req: AuthenticatedRequest, @Param("id") conversationId: string, ) { return this.messagesService.getMessages(req.user.sub, conversationId); } @Post() sendMessage(@Req() req: AuthenticatedRequest, @Body() dto: CreateMessageDto) { return this.messagesService.sendMessage(req.user.sub, dto); } }