From e8b30f69478d1e30dae0215d5d58242dbd83fc4a Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Sun, 1 Mar 2026 13:24:16 -0500 Subject: [PATCH] Handled audit log and some other edge cases --- api/src/routes/discussion.ts | 8 +++++--- api/src/services/db/discussionService.ts | 2 ++ api/src/services/logging/auditLog.ts | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/api/src/routes/discussion.ts b/api/src/routes/discussion.ts index 0a8bc55..3b1a4bf 100644 --- a/api/src/routes/discussion.ts +++ b/api/src/routes/discussion.ts @@ -17,10 +17,12 @@ router.post('/comment', async (req: Request, res: Response) => { try { let comment = req.body as DiscussionComment; - console.log(comment); + if (!comment.content || comment.content.trim() === '') { + return res.status(400).json({ error: 'Comment content cannot be empty' }); + } - await postComment(comment, req.user.id); - + let rowID = await postComment(comment, req.user.id); + audit.discussion('comment_posted', { actorId: req.user.id, targetId: rowID }, { parent: comment.post_id }) res.sendStatus(201); } catch (error) { logger.error('app', "Failed to post comments", error); diff --git a/api/src/services/db/discussionService.ts b/api/src/services/db/discussionService.ts index 62d7298..25c4676 100644 --- a/api/src/services/db/discussionService.ts +++ b/api/src/services/db/discussionService.ts @@ -145,4 +145,6 @@ export async function postComment(commentData: DiscussionComment, poster: number if (!result.affectedRows || result.affectedRows !== 1) { throw new Error('Failed to insert comment: expected 1 row to be inserted'); } + + return Number(result.insertId); } \ No newline at end of file diff --git a/api/src/services/logging/auditLog.ts b/api/src/services/logging/auditLog.ts index d70109a..f2fab6a 100644 --- a/api/src/services/logging/auditLog.ts +++ b/api/src/services/logging/auditLog.ts @@ -57,7 +57,7 @@ class AuditLogger { return this.record('course', action, context, data); } - discussion(action: 'created', context: AuditContext, data: any = {}) { + discussion(action: 'created' | 'comment_posted', context: AuditContext, data: any = {}) { return this.record('discussion', action, context, data); } }