Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions back-end/controllers/audit.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const {
getAudit
} = require("../services/audit.services");

async function getAuditHandler(req, res) {
try {
const projectId = req.params.projectId;
const audits = await getAudit({projectId});

if (!audits || audits.length === 0) {
return res.status(404).json({
message: "There was an error with the request",
});
}
return res.status(200).json({
message: "Audit retrieved successfully",
data: audits,
});
} catch (e) {
console.error('Error retrieving audits:', e); // Log the error details
return res.status(500).json({
message: "An unexpected error occured please try again later.",
});
}
}

module.exports = {
getAuditHandler
};
3 changes: 2 additions & 1 deletion back-end/db/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ require("dotenv").config();
const mysql = require("mysql2/promise");

const db = mysql.createPool({
host: process.env.host, // or '127.0.0.1'
host: process.env.host, // || '127.0.0.1'
user: process.env.user,
password: process.env.password,
port: process.env.port,
Expand All @@ -11,6 +11,7 @@ const db = mysql.createPool({
multipleStatements: true,
});


const closePool = async () => {
if (db) {
await db.end();
Expand Down
1 change: 1 addition & 0 deletions back-end/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

const { createServer } = require("./server");

require("dotenv").config();
Expand Down
13 changes: 13 additions & 0 deletions back-end/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions back-end/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"cookie-parser": "^1.4.6",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"env": "^0.0.2",
"express": "^4.19.2",
"jsonwebtoken": "^9.0.2",
"mysql2": "^3.10.1",
Expand Down
17 changes: 17 additions & 0 deletions back-end/routes/auditRoutes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
const express = require("express");
const router = express.Router();
const validate = require("../middleware/validate");
const requireAuth = require("../middleware/requireAuth");
const {
getAuditHandler
} = require("../controllers/audit.controller");
const {
getAuditSchema
} = require("../schemas/audit.schema");

router.get("/:projectId", [requireAuth, validate(getAuditSchema)], getAuditHandler);

module.exports = router;


//given the route in this router.get, is my request in postman written correctly?
19 changes: 19 additions & 0 deletions back-end/schemas/audit.schema.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const { object, string, number } = require("zod");


const params = {
params: object({
projectId: number({
required_error: "projectId is required",
coerce: true,
}),
}),
};

const getAuditSchema = object({
...params,
});

module.exports = {
getAuditSchema
};
22 changes: 22 additions & 0 deletions back-end/services/audit.services.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const db = require("../db");

async function getAudit({ projectId }) {
try {
const [results] = await db.query(
`
SELECT * from audits where project_id = ?
`,
[ projectId ]
);

return results;

} catch (err) {
console.error('Error executing query:', err);
throw err;
}
}

module.exports = {
getAudit,
};
21 changes: 20 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
version: "3.8"

services:
mysql:
Expand All @@ -15,5 +14,25 @@ services:
- mysql_data:/var/lib/mysql
- ./back-end/db/init.sql:/docker-entrypoint-initdb.d/init.sql
- ./back-end/db/seed.sql:/docker-entrypoint-initdb.d/seed.sql

# ChatGPT reccomends this code
# app:
# build: .
# environment:
# host: mysql
# user: user
# password: password
# port: 3306
# database: bvt_auth
# ACCESS_TOKEN_SECRET: dowYzS+LKidwNwQsPXn1Wswfj4YujivVyn8dzWdL+p0=
# REFRESH_TOKEN_SECRET: qGAzyqZldHi06ibEwkqzWhUq19JgB+vX++MNmC8n+e0=
# SERVER_PORT: 4000
# depends_on:
# - mysql
# ports:
# - "4000:4000"
# ChatGPT reccomends this code


volumes:
mysql_data: