Restructured services to support more... services

This commit is contained in:
2025-12-31 09:51:31 -05:00
parent c02e4e2851
commit 0e6a3c4a01
17 changed files with 58 additions and 34 deletions

View File

@@ -7,22 +7,45 @@ import morgan = require('morgan');
const app = express()
app.use(morgan((tokens: morgan.TokenIndexer, req: express.Request, res: express.Response) => {
return JSON.stringify({
type: 'http',
timestamp: new Date().toISOString(),
const head: LogHeader = {
type: 'http',
level: 'info',
depth: 'normal',
timestamp: new Date().toISOString(),
}
const payload: LogPayload = {
message: 'HTTP request completed',
data: {
method: tokens.method(req, res),
path: tokens.url(req, res),
status: Number(tokens.status(req, res)),
response_time_ms: Number(tokens['response-time'](req, res)),
ip: req.ip,
user_id: req.user.id,
user_name: req.user.name,
user_agent: req.headers['user-agent'],
},
}
user: req.user
? { id: req.user.id, name: req.user.name }
: null,
});
logger.log(head.level, head.type, payload.message, payload.data, head.depth)
// {
// type: 'http',
// timestamp: new Date().toISOString(),
// method: tokens.method(req, res),
// path: tokens.url(req, res),
// status: Number(tokens.status(req, res)),
// response_time_ms: Number(tokens['response-time'](req, res)),
// ip: req.ip,
// user_agent: req.headers['user-agent'],
// user: req.user
// ? { id: req.user.id, name: req.user.name }
// : null,
// }
return '';
}, {
skip: (req: express.Request) => {
return req.originalUrl === '/members/me';
@@ -89,6 +112,7 @@ import { roles, memberRoles } from './routes/roles';
import { courseRouter, eventRouter } from './routes/course';
import { calendarRouter } from './routes/calendar';
import { docsRouter } from './routes/docs';
import { logger, LogHeader, LogPayload } from './services/logging/logger';
app.use('/application', applicationRouter);
app.use('/ranks', ranks);

View File

@@ -2,14 +2,14 @@ const express = require('express');
const router = express.Router();
import pool from '../db';
import { approveApplication, createApplication, denyApplication, getAllMemberApplications, getApplicationByID, getApplicationComments, getApplicationList, getMemberApplication } from '../services/applicationService';
import { setUserState } from '../services/memberService';
import { approveApplication, createApplication, denyApplication, getAllMemberApplications, getApplicationByID, getApplicationComments, getApplicationList, getMemberApplication } from '../services/db/applicationService';
import { setUserState } from '../services/db/memberService';
import { MemberState } from '@app/shared/types/member';
import { getRankByName, insertMemberRank } from '../services/rankService';
import { getRankByName, insertMemberRank } from '../services/db/rankService';
import { ApplicationFull, CommentRow } from "@app/shared/types/application"
import { assignUserToStatus } from '../services/statusService';
import { assignUserToStatus } from '../services/db/statusService';
import { Request, response, Response } from 'express';
import { getUserRoles } from '../services/rolesService';
import { getUserRoles } from '../services/db/rolesService';
import { requireLogin, requireRole } from '../middleware/auth';
//get CoC

View File

@@ -9,8 +9,8 @@ const router = express.Router();
import { Role } from '@app/shared/types/roles';
import pool from '../db';
import { requireLogin } from '../middleware/auth';
import { getUserRoles } from '../services/rolesService';
import { getUserState, mapDiscordtoID } from '../services/memberService';
import { getUserRoles } from '../services/db/rolesService';
import { getUserState, mapDiscordtoID } from '../services/db/memberService';
import { MemberState } from '@app/shared/types/member';
import { toDateTime } from '@app/shared/utils/time';
const querystring = require('querystring');

View File

@@ -1,5 +1,5 @@
import { Request, Response } from "express";
import { createEvent, getEventAttendance, getEventDetails, getShortEventsInRange, setAttendanceStatus, setEventCancelled, updateEvent } from "../services/calendarService";
import { createEvent, getEventAttendance, getEventDetails, getShortEventsInRange, setAttendanceStatus, setEventCancelled, updateEvent } from "../services/db/calendarService";
import { CalendarAttendance, CalendarEvent } from "@app/shared/types/calendar";
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
import { MemberState } from "@app/shared/types/member";

View File

@@ -1,5 +1,5 @@
import { CourseAttendee, CourseEventDetails } from "@app/shared/types/course";
import { getAllCourses, getCourseEventAttendees, getCourseEventDetails, getCourseEventRoles, getCourseEvents, insertCourseEvent } from "../services/CourseSerivce";
import { getAllCourses, getCourseEventAttendees, getCourseEventDetails, getCourseEventRoles, getCourseEvents, insertCourseEvent } from "../services/db/CourseSerivce";
import { Request, Response, Router } from "express";
import { requireLogin, requireMemberState } from "../middleware/auth";
import { MemberState } from "@app/shared/types/member";

View File

@@ -3,7 +3,7 @@ const router = express.Router();
import { Request, Response } from 'express';
import pool from '../db';
import { closeLOA, createNewLOA, getAllLOA, getLOAbyID, getLoaTypes, getUserLOA, setLOAExtension } from '../services/loaService';
import { closeLOA, createNewLOA, getAllLOA, getLOAbyID, getLoaTypes, getUserLOA, setLOAExtension } from '../services/db/loaService';
import { LOARequest } from '@app/shared/types/loa';
import { requireLogin, requireRole } from '../middleware/auth';

View File

@@ -4,9 +4,9 @@ const router = express.Router();
import { Request, Response } from 'express';
import pool from '../db';
import { requireLogin, requireMemberState, requireRole } from '../middleware/auth';
import { getUserActiveLOA } from '../services/loaService';
import { getAllMembersLite, getMemberSettings, getMembersFull, getMembersLite, getUserData, getUserState, setUserSettings } from '../services/memberService';
import { getUserRoles } from '../services/rolesService';
import { getUserActiveLOA } from '../services/db/loaService';
import { getAllMembersLite, getMemberSettings, getMembersFull, getMembersLite, getUserData, getUserState, setUserSettings } from '../services/db/memberService';
import { getUserRoles } from '../services/db/rolesService';
import { memberSettings, MemberState, myData } from '@app/shared/types/member';
//get all users

View File

@@ -1,6 +1,6 @@
import { MemberState } from "@app/shared/types/member";
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
import { batchInsertMemberRank, getAllRanks, getPromotionHistorySummary, getPromotionsOnDay, insertMemberRank } from "../services/rankService";
import { batchInsertMemberRank, getAllRanks, getPromotionHistorySummary, getPromotionsOnDay, insertMemberRank } from "../services/db/rankService";
import { BatchPromotion, BatchPromotionMember } from '@app/shared/schemas/promotionSchema'
import express = require('express');

View File

@@ -5,7 +5,7 @@ const ur = express.Router();
import { MemberState } from '@app/shared/types/member';
import pool from '../db';
import { requireLogin, requireMemberState, requireRole } from '../middleware/auth';
import { assignUserGroup, createGroup, getAllRoles, getRole, getUsersWithRole } from '../services/rolesService';
import { assignUserGroup, createGroup, getAllRoles, getRole, getUsersWithRole } from '../services/db/rolesService';
import { Request, Response } from 'express';
r.use(requireLogin)

View File

@@ -1,4 +1,4 @@
import pool from "../db"
import pool from "../../db"
import { Course, CourseAttendee, CourseAttendeeRole, CourseEventDetails, CourseEventSummary, RawAttendeeRow } from "@app/shared/types/course"
import { PagedData } from "@app/shared/types/pagination";
import { toDateTime } from "@app/shared/utils/time";

View File

@@ -1,5 +1,5 @@
import { ApplicationListRow, ApplicationRow, CommentRow } from "@app/shared/types/application";
import pool from "../db";
import pool from "../../db";
import { error } from "console";
export async function createApplication(memberID: number, appVersion: number, app: string) {

View File

@@ -1,4 +1,4 @@
import pool from '../db';
import pool from '../../db';
import { CalendarEventShort, CalendarSignup, CalendarEvent, CalendarAttendance } from "@app/shared/types/calendar"
import { toDateTime } from "@app/shared/utils/time"

View File

@@ -1,5 +1,5 @@
import { toDateTime } from "@app/shared/utils/time";
import pool from "../db";
import pool from "../../db";
import { LOARequest, LOAType } from '@app/shared/types/loa'
import { PagedData } from '@app/shared/types/pagination'

View File

@@ -1,5 +1,5 @@
import { Role } from "@app/shared/types/roles";
import pool from "../db";
import pool from "../../db";
import { Member, MemberCardDetails, MemberLight, memberSettings, MemberState } from '@app/shared/types/member'
export async function getUserData(userID: number): Promise<Member> {

View File

@@ -1,6 +1,6 @@
import { BatchPromotion, BatchPromotionMember } from "@app/shared/schemas/promotionSchema";
import { PromotionDetails, PromotionSummary } from "@app/shared/types/rank"
import pool from "../db";
import pool from "../../db";
import { PagedData } from "@app/shared/types/pagination";
import { toDateTime } from "@app/shared/utils/time";

View File

@@ -1,5 +1,5 @@
import { MemberLight } from '@app/shared/types/member';
import pool from '../db';
import pool from '../../db';
import { Role, RoleSummary } from '@app/shared/types/roles'
export async function assignUserGroup(userID: number, roleID: number) {

View File

@@ -1,4 +1,4 @@
import pool from "../db"
import pool from "../../db"
export async function assignUserToStatus(userID: number, statusID: number) {
const sql = `INSERT INTO members_statuses (member_id, status_id, start_date) VALUES (?, ?, NOW())`