Logging-upgrades #114

Merged
Ajdj100 merged 2 commits from Logging-upgrades into main 2025-12-17 08:43:30 -06:00
16 changed files with 35 additions and 28 deletions

13
api/package-lock.json generated
View File

@@ -10,6 +10,7 @@
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@sentry/node": "^10.27.0", "@sentry/node": "^10.27.0",
"chalk": "^5.6.2",
"connect-sqlite3": "^0.9.16", "connect-sqlite3": "^0.9.16",
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^17.2.1", "dotenv": "^17.2.1",
@@ -1314,6 +1315,18 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/chalk": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
"integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/chokidar": { "node_modules/chokidar": {
"version": "3.6.0", "version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",

View File

@@ -13,6 +13,7 @@
}, },
"dependencies": { "dependencies": {
"@sentry/node": "^10.27.0", "@sentry/node": "^10.27.0",
"chalk": "^5.6.2",
"connect-sqlite3": "^0.9.16", "connect-sqlite3": "^0.9.16",
"cors": "^2.8.5", "cors": "^2.8.5",
"dotenv": "^17.2.1", "dotenv": "^17.2.1",

View File

@@ -5,8 +5,26 @@ import express = require('express');
import cors = require('cors'); import cors = require('cors');
import morgan = require('morgan'); import morgan = require('morgan');
const app = express() const app = express()
app.use(morgan('dev', { import chalk from 'chalk';
skip: (req) => { app.use(morgan((tokens: morgan.TokenIndexer, req: express.Request, res: express.Response) => {
const status = Number(tokens.status(req, res));
// Colorize status code
const statusColor = status >= 500 ? chalk.red
: status >= 400 ? chalk.yellow
: status >= 300 ? chalk.cyan
: chalk.green;
return [
chalk.gray(`[${new Date().toISOString()}]`),
chalk.blue.bold(tokens.method(req, res)),
tokens.url(req, res),
statusColor(status),
chalk.magenta(tokens['response-time'](req, res) + ' ms'),
chalk.yellow(`- User: ${req.user?.name ? `${req.user.name} (${req.user.id})` : 'Unauthenticated'}`),
].join(' ');
}, {
skip: (req: express.Request) => {
return req.originalUrl === '/members/me'; return req.originalUrl === '/members/me';
} }
})) }))

View File

@@ -105,7 +105,6 @@ router.get('/me/:id', [requireLogin], async (req: Request, res: Response) => {
const application = await getApplicationByID(appID); const application = await getApplicationByID(appID);
if (application === undefined) if (application === undefined)
return res.sendStatus(204); return res.sendStatus(204);
console.log(application.member_id, member)
if (application.member_id != member) { if (application.member_id != member) {
return res.sendStatus(403); return res.sendStatus(403);
} }
@@ -191,8 +190,6 @@ router.post('/:id/comment', [requireLogin], async (req: Request, res: Response)
const data = req.body.message; const data = req.body.message;
const user = req.user; const user = req.user;
console.log(user)
const sql = `INSERT INTO application_comments( const sql = `INSERT INTO application_comments(
application_id, application_id,
poster_id, poster_id,
@@ -205,7 +202,6 @@ VALUES(?, ?, ?);`
var conn = await pool.getConnection(); var conn = await pool.getConnection();
const result = await conn.query(sql, [appID, user.id, data]) const result = await conn.query(sql, [appID, user.id, data])
console.log(result)
if (result.affectedRows !== 1) { if (result.affectedRows !== 1) {
conn.release(); conn.release();
throw new Error("Insert Failure") throw new Error("Insert Failure")
@@ -237,8 +233,6 @@ router.post('/:id/adminComment', [requireLogin, requireRole("Recruiter")], async
const data = req.body.message; const data = req.body.message;
const user = req.user; const user = req.user;
console.log(user)
const sql = `INSERT INTO application_comments( const sql = `INSERT INTO application_comments(
application_id, application_id,
poster_id, poster_id,
@@ -251,7 +245,6 @@ VALUES(?, ?, ?, 1);`
var conn = await pool.getConnection(); var conn = await pool.getConnection();
const result = await conn.query(sql, [appID, user.id, data]) const result = await conn.query(sql, [appID, user.id, data])
console.log(result)
if (result.affectedRows !== 1) { if (result.affectedRows !== 1) {
conn.release(); conn.release();
throw new Error("Insert Failure") throw new Error("Insert Failure")

View File

@@ -107,7 +107,6 @@ r.put('/', [requireLogin, requireMemberState(MemberState.Member)], async (req: R
let event: CalendarEvent = req.body; let event: CalendarEvent = req.body;
event.start = new Date(event.start); event.start = new Date(event.start);
event.end = new Date(event.end); event.end = new Date(event.end);
console.log(event);
updateEvent(event); updateEvent(event);
res.sendStatus(200); res.sendStatus(200);
} catch (error) { } catch (error) {

View File

@@ -83,7 +83,6 @@ er.get('/attendees/:id', async (req: Request, res: Response) => {
er.post('/', async (req: Request, res: Response) => { er.post('/', async (req: Request, res: Response) => {
const posterID: number = req.user.id; const posterID: number = req.user.id;
try { try {
console.log();
let data: CourseEventDetails = req.body; let data: CourseEventDetails = req.body;
data.created_by = posterID; data.created_by = posterID;
data.event_date = new Date(data.event_date); data.event_date = new Date(data.event_date);

View File

@@ -30,9 +30,6 @@ router.post("/admin", [requireRole("17th Administrator")], async (req: Request,
let LOARequest = req.body as LOARequest; let LOARequest = req.body as LOARequest;
LOARequest.created_by = req.user.id; LOARequest.created_by = req.user.id;
LOARequest.filed_date = new Date(); LOARequest.filed_date = new Date();
console.log(LOARequest);
try { try {
await createNewLOA(LOARequest); await createNewLOA(LOARequest);
res.sendStatus(201); res.sendStatus(201);

View File

@@ -53,7 +53,6 @@ router.get('/me', [requireLogin], async (req, res) => {
router.get('/settings', [requireLogin], async (req: Request, res: Response) => { router.get('/settings', [requireLogin], async (req: Request, res: Response) => {
try { try {
let user = req.user.id; let user = req.user.id;
console.log(user);
let output = await getMemberSettings(user); let output = await getMemberSettings(user);
res.status(200).json(output); res.status(200).json(output);
} catch (error) { } catch (error) {
@@ -66,7 +65,6 @@ router.put('/settings', [requireLogin], async (req: Request, res: Response) => {
try { try {
let user = req.user.id; let user = req.user.id;
let settings: memberSettings = req.body; let settings: memberSettings = req.body;
console.log(settings)
await setUserSettings(user, settings); await setUserSettings(user, settings);
res.sendStatus(200); res.sendStatus(200);
} catch (error) { } catch (error) {

View File

@@ -28,7 +28,6 @@ ur.post('/', [requireMemberState(MemberState.Member), requireRole("17th Administ
ur.delete('/', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req, res) => { ur.delete('/', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req, res) => {
try { try {
const body = req.body; const body = req.body;
console.log(body);
const sql = 'DELETE FROM members_roles WHERE member_id = ? AND role_id = ?' const sql = 'DELETE FROM members_roles WHERE member_id = ? AND role_id = ?'
await pool.query(sql, [body.member_id, body.role_id]) await pool.query(sql, [body.member_id, body.role_id])
@@ -86,7 +85,6 @@ r.get('/', [requireMemberState(MemberState.Member)], async (req, res) => {
r.post('/', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req, res) => { r.post('/', [requireMemberState(MemberState.Member), requireRole("17th Administrator")], async (req, res) => {
try { try {
const { name, color, description } = req.body; const { name, color, description } = req.body;
console.log('Creating role:', { name, color, description });
if (!name || !color) { if (!name || !color) {
return res.status(400).json({ error: 'Name and color are required' }); return res.status(400).json({ error: 'Name and color are required' });
} }
@@ -113,7 +111,7 @@ r.delete('/:id', [requireMemberState(MemberState.Member), requireRole("17th Admi
const res = await pool.query(sql, [id]); const res = await pool.query(sql, [id]);
res.sendStatus(200); res.sendStatus(200);
} catch (error) { } catch (error) {
console.log(error); console.error(error);
res.sendStatus(500); res.sendStatus(500);
} }
}) })

View File

@@ -73,7 +73,6 @@ export async function approveApplication(id: number, approver: number) {
`; `;
const result = await pool.execute(sql, [approver, id]); const result = await pool.execute(sql, [approver, id]);
console.log(result);
if (result.affectedRows == 1) { if (result.affectedRows == 1) {
return return
} else { } else {
@@ -91,7 +90,6 @@ export async function denyApplication(id: number, approver: number) {
`; `;
const result = await pool.execute(sql, [approver, id]); const result = await pool.execute(sql, [approver, id]);
console.log(result);
if (result.affectedRows == 1) { if (result.affectedRows == 1) {
return return
} else { } else {

View File

@@ -126,6 +126,5 @@ export async function getEventAttendance(eventID: number): Promise<CalendarSignu
const sql = "CALL `sp_GetCalendarEventSignups`(?)" const sql = "CALL `sp_GetCalendarEventSignups`(?)"
const res = await pool.query(sql, [eventID]); const res = await pool.query(sql, [eventID]);
console.log(res[0]);
return res[0]; return res[0];
} }

View File

@@ -89,13 +89,11 @@ export async function closeLOA(id: number, closer: number) {
ended_at = NOW() ended_at = NOW()
WHERE leave_of_absences.id = ?`; WHERE leave_of_absences.id = ?`;
let out = await pool.query(sql, [closer, id]); let out = await pool.query(sql, [closer, id]);
console.log(out);
return out; return out;
} }
export async function getLOAbyID(id: number): Promise<LOARequest> { export async function getLOAbyID(id: number): Promise<LOARequest> {
let res = await pool.query(`SELECT * FROM leave_of_absences WHERE id = ?`, [id]); let res = await pool.query(`SELECT * FROM leave_of_absences WHERE id = ?`, [id]);
console.log(res);
if (res.length != 1) if (res.length != 1)
throw new Error(`LOA with id ${id} not found`); throw new Error(`LOA with id ${id} not found`);
return res[0]; return res[0];

View File

@@ -34,7 +34,6 @@ export async function setUserSettings(id: number, settings: memberSettings) {
displayName = ? displayName = ?
WHERE id = ?;`; WHERE id = ?;`;
let result = await pool.query(sql, [settings.displayName, id]) let result = await pool.query(sql, [settings.displayName, id])
console.log(result);
} }
export async function getMembersLite(ids: number[]): Promise<MemberLight[]> { export async function getMembersLite(ids: number[]): Promise<MemberLight[]> {

View File

@@ -1,5 +1,4 @@
export function toDateTime(date: Date): string { export function toDateTime(date: Date): string {
console.log(date);
if (typeof date === 'string') { if (typeof date === 'string') {
date = new Date(date); date = new Date(date);
} }

View File

@@ -74,7 +74,6 @@ const { handleSubmit, values, resetForm } = useForm({
const formSubmitted = ref(false); const formSubmitted = ref(false);
const onSubmit = handleSubmit(async (values) => { const onSubmit = handleSubmit(async (values) => {
console.log(values);
const out: LOARequest = { const out: LOARequest = {
member_id: values.member_id, member_id: values.member_id,
start_date: values.start_date, start_date: values.start_date,

View File

@@ -25,7 +25,6 @@ function saveSettings() {
// Replace with your API save call // Replace with your API save call
setMemberSettings(form.value); setMemberSettings(form.value);
saving.value = false; saving.value = false;
console.log(userStore.user.id)
memberDictionary.invalidateMember(userStore.user.id) memberDictionary.invalidateMember(userStore.user.id)
}, 800); }, 800);
} }