diff --git a/backend/repository/activityRepository.js b/backend/repository/activityRepository.js index 7a69c34856188141c04a924d8733bcc2c3cd608a..7cfefcd602145fe2a5eb59afde162bb4eb92088c 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 5805df02630a7fa226a2ee0dbe21fbc7ccbf3229..59dda80f2d70b9bdde1d78737ea05a2bf3a9666b 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 80c0da9443d87fde439af420b8e05a4ce35f36d1..9fa3a89b4a3b22ec7d12a49ac14dbe23ba50fa66 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 413079f96bcd41e92c1d11d3ff8465a1a4bd7525..10b760c4ac84705ffb8d48a037c23ac8ab10e1d8 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) {