From d55049dfc40609bb99ed80417d3f4b8a1daecba5 Mon Sep 17 00:00:00 2001 From: Kevin Puig <119972216+k-puig@users.noreply.github.com> Date: Sun, 28 Sep 2025 06:06:44 -0400 Subject: [PATCH] sdfgh --- .../src/controller/messageController.ts | 6 ++++ concord-server/src/routes/messageRoutes.ts | 22 ++++++++++++++ concord-server/src/services/messageService.ts | 29 +++++++++++++++++++ .../src/validators/messageValidator.ts | 9 ++++++ 4 files changed, 66 insertions(+) diff --git a/concord-server/src/controller/messageController.ts b/concord-server/src/controller/messageController.ts index 483b184..dc9f2da 100644 --- a/concord-server/src/controller/messageController.ts +++ b/concord-server/src/controller/messageController.ts @@ -1,8 +1,10 @@ import { + editMessage, getMessageInformation, getMessagesBefore, sendMessageToChannel, } from "../services/messageService"; +import { PutMessage } from "../validators/messageValidator"; export async function fetchMessageData(id: string) { return await getMessageInformation(id); @@ -27,3 +29,7 @@ export async function sendMessage( repliedMessageId, ); } + +export async function putMessage(data: PutMessage) { + return await editMessage(data); +} diff --git a/concord-server/src/routes/messageRoutes.ts b/concord-server/src/routes/messageRoutes.ts index 17a576e..15c1765 100644 --- a/concord-server/src/routes/messageRoutes.ts +++ b/concord-server/src/routes/messageRoutes.ts @@ -81,6 +81,28 @@ messageRoutes.get( }, ); +messageRoutes.put( + "/:id", + describeRoute({ + description: "Edit message fields", + responses: { + 200: { + description: "Success" + }, + 404: { + description: "Message not found" + }, + 500: { + description: "Bad request" + } + } + }), + zValidator("json", sendMessageSchema), + async (c) => { + + } +) + messageRoutes.post( "", describeRoute({ diff --git a/concord-server/src/services/messageService.ts b/concord-server/src/services/messageService.ts index a01f59e..7030084 100644 --- a/concord-server/src/services/messageService.ts +++ b/concord-server/src/services/messageService.ts @@ -1,5 +1,6 @@ import { PrismaClient } from "@prisma/client"; import { getUserCredentials } from "./userService"; +import { PutMessage } from "../validators/messageValidator"; const prisma = new PrismaClient(); @@ -155,6 +156,34 @@ export async function getMessagesBefore(date: string, channelId: string) { } } +export async function editMessage(data: PutMessage) { + try { + const userCreds = await getUserCredentials(data.id); + if (!userCreds || userCreds.token == null || userCreds.token != data.token) { + return null; + } + + const updatedMessage = await prisma.message.update({ + where: { + id: data.id, + }, + data: { + text: data.content, + deleted: data.deleted, + }, + }); + + if (!updatedMessage) { + return null; + } + + return updatedMessage; + } catch (error) { + console.error("Error editing message:", error); + return null; + } +} + export async function sendMessageToChannel( channelId: string, userId: string, diff --git a/concord-server/src/validators/messageValidator.ts b/concord-server/src/validators/messageValidator.ts index baead86..3833823 100644 --- a/concord-server/src/validators/messageValidator.ts +++ b/concord-server/src/validators/messageValidator.ts @@ -18,3 +18,12 @@ export const sendMessageSchema = z.object({ token: z.string(), repliedMessageId: z.uuidv7().nullable().optional(), }); + +export const putMessageSchema = z.object({ + id: z.uuidv7(), + content: z.string().optional(), + deleted: z.boolean().optional(), + token: z.string(), +}); + +export type PutMessage = z.infer;