This commit is contained in:
Kevin Puig
2025-09-28 06:06:44 -04:00
parent af8371ed84
commit d55049dfc4
4 changed files with 66 additions and 0 deletions

View File

@@ -1,8 +1,10 @@
import { import {
editMessage,
getMessageInformation, getMessageInformation,
getMessagesBefore, getMessagesBefore,
sendMessageToChannel, sendMessageToChannel,
} from "../services/messageService"; } from "../services/messageService";
import { PutMessage } from "../validators/messageValidator";
export async function fetchMessageData(id: string) { export async function fetchMessageData(id: string) {
return await getMessageInformation(id); return await getMessageInformation(id);
@@ -27,3 +29,7 @@ export async function sendMessage(
repliedMessageId, repliedMessageId,
); );
} }
export async function putMessage(data: PutMessage) {
return await editMessage(data);
}

View File

@@ -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( messageRoutes.post(
"", "",
describeRoute({ describeRoute({

View File

@@ -1,5 +1,6 @@
import { PrismaClient } from "@prisma/client"; import { PrismaClient } from "@prisma/client";
import { getUserCredentials } from "./userService"; import { getUserCredentials } from "./userService";
import { PutMessage } from "../validators/messageValidator";
const prisma = new PrismaClient(); 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( export async function sendMessageToChannel(
channelId: string, channelId: string,
userId: string, userId: string,

View File

@@ -18,3 +18,12 @@ export const sendMessageSchema = z.object({
token: z.string(), token: z.string(),
repliedMessageId: z.uuidv7().nullable().optional(), 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<typeof putMessageSchema>;