implemented performance profiling into some areas
This commit is contained in:
@@ -9,6 +9,9 @@ import { getAllMembersLite, getMemberSettings, getMembersFull, getMembersLite, g
|
||||
import { getUserRoles } from '../services/db/rolesService';
|
||||
import { memberSettings, MemberState, myData } from '@app/shared/types/member';
|
||||
|
||||
import { Performance } from 'perf_hooks';
|
||||
import { logger } from '../services/logging/logger';
|
||||
|
||||
//get all users
|
||||
router.get('/', [requireLogin, requireMemberState(MemberState.Member)], async (req, res) => {
|
||||
try {
|
||||
@@ -32,23 +35,56 @@ router.get('/', [requireLogin, requireMemberState(MemberState.Member)], async (r
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/me', [requireLogin], async (req, res) => {
|
||||
if (req.user === undefined)
|
||||
return res.sendStatus(401)
|
||||
router.get('/me', [requireLogin], async (req: Request, res) => {
|
||||
if (!req.user) return res.sendStatus(401);
|
||||
|
||||
const routeStart = performance.now();
|
||||
const timings: Record<string, number> = {};
|
||||
|
||||
try {
|
||||
const memData = await getUserData(req.user.id);
|
||||
const LOAData = await getUserActiveLOA(req.user.id);
|
||||
const memState = await getUserState(req.user.id);
|
||||
const roleData = await getUserRoles(req.user.id);
|
||||
let t;
|
||||
|
||||
t = performance.now();
|
||||
const memData = await getUserData(req.user.id);
|
||||
timings.member = performance.now() - t;
|
||||
|
||||
t = performance.now();
|
||||
const LOAData = await getUserActiveLOA(req.user.id);
|
||||
timings.loa = performance.now() - t;
|
||||
|
||||
t = performance.now();
|
||||
const memState = await getUserState(req.user.id);
|
||||
timings.state = performance.now() - t;
|
||||
|
||||
t = performance.now();
|
||||
const roleData = await getUserRoles(req.user.id);
|
||||
timings.roles = performance.now() - t;
|
||||
|
||||
const userDataFull: myData = {
|
||||
member: memData,
|
||||
LOAs: LOAData,
|
||||
roles: roleData,
|
||||
state: memState,
|
||||
};
|
||||
|
||||
const userDataFull: myData = { member: memData, LOAs: LOAData, roles: roleData, state: memState };
|
||||
res.status(200).json(userDataFull);
|
||||
|
||||
logger.info('profiling', 'GET /members/me completed', {
|
||||
userId: req.user.id,
|
||||
total_ms: performance.now() - routeStart,
|
||||
breakdown_ms: timings,
|
||||
}, 'profiling');
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error fetching user data:', error);
|
||||
logger.error('profiling', 'GET /members/me failed', {
|
||||
userId: req.user?.id,
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
});
|
||||
|
||||
return res.status(500).json({ error: 'Failed to fetch user data' });
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
router.get('/settings', [requireLogin], async (req: Request, res: Response) => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user