From 4e720744588d37ffb967eab54d993151ae5d9464 Mon Sep 17 00:00:00 2001 From: Federico Hurtado <fed_home@Federicos-Mac-mini.local> Date: Wed, 30 Oct 2024 11:39:09 -0400 Subject: [PATCH] Create repository for database change logs, but we need to wait to setup JWT to implement this. --- backend/repository/activityRepository.js | 37 +++++++++++++++++++++++- backend/repository/peopleRepository.js | 1 + backend/service/activityLoggerService.js | 17 +++++++++-- backend/service/peopleService.js | 1 + 4 files changed, 53 insertions(+), 3 deletions(-) diff --git a/backend/repository/activityRepository.js b/backend/repository/activityRepository.js index 7a69c34..7cfefcd 100644 --- a/backend/repository/activityRepository.js +++ b/backend/repository/activityRepository.js @@ -47,7 +47,41 @@ async function getLoginDataTimerange(start, end) { async function getLoginDataByUser() {} -async function logDatabaseChange() {} +/* +Insert a row into changeLog which keeps track of every time the database is changed. +*/ +async function logDatabaseChange( + tableName, + recordId, + userId, + changeType, + changedColumns, + oldValues, + newValues +) { + const query = ` + INSERT INTO changeLog (changedTable, recordId, userId, changeType, changedColumns, oldValues, newValues) + VALUES (?, ?, ?, ?, ?, ?, ?) + `; + const values = [ + tableName, + recordId, + userId, + changeType, + changedColumns, + oldValues, + newValues, + ]; + + try { + await pool.query(query, values); + console.log("Change logged successfully."); + } catch (error) { + // throw error to be caught by service + console.log("activity repository error when logging change: ", error); + throw error; + } +} async function getDatabaseChangeTimerange() {} @@ -56,4 +90,5 @@ async function getDatabaseChangeByUser() {} module.exports = { logSuccessfulLogin, getLoginDataTimerange, + logDatabaseChange, }; diff --git a/backend/repository/peopleRepository.js b/backend/repository/peopleRepository.js index 5805df0..59dda80 100644 --- a/backend/repository/peopleRepository.js +++ b/backend/repository/peopleRepository.js @@ -154,6 +154,7 @@ async function deletePersonById(peopleId) { } console.log("row deleted"); + return true; } catch (error) { console.error(error); diff --git a/backend/service/activityLoggerService.js b/backend/service/activityLoggerService.js index 80c0da9..9fa3a89 100644 --- a/backend/service/activityLoggerService.js +++ b/backend/service/activityLoggerService.js @@ -1,6 +1,7 @@ const { logSuccessfulLogin, getLoginDataTimerange, + logDatabaseChange, } = require("../repository/activityRepository"); /* @@ -16,7 +17,15 @@ async function documentSuccessfulLogin(userId, timestamp) { } } -async function logDatabaseChange() {} +async function logDatabaseChange( + tableName, + recordId, + userId, + changeType, + changedColumns, + oldValues, + newValues +) {} /* Get the login data for a sopecific time range @@ -28,4 +37,8 @@ async function viewLoginsTimerange(start, end) { async function viewDatabaseChanges() {} -module.exports = { documentSuccessfulLogin, viewLoginsTimerange }; +module.exports = { + documentSuccessfulLogin, + viewLoginsTimerange, + logDatabaseChange, +}; diff --git a/backend/service/peopleService.js b/backend/service/peopleService.js index 413079f..10b760c 100644 --- a/backend/service/peopleService.js +++ b/backend/service/peopleService.js @@ -79,6 +79,7 @@ async function findByName(firstName, lastName) { Function to delete person by their id. */ async function deleteById(peopleId) { + // delete the person const personDeleted = await deletePersonById(peopleId); if (personDeleted) { -- GitLab