Restructured services to support more... services
This commit is contained in:
@@ -7,22 +7,45 @@ import morgan = require('morgan');
|
|||||||
const app = express()
|
const app = express()
|
||||||
|
|
||||||
app.use(morgan((tokens: morgan.TokenIndexer, req: express.Request, res: express.Response) => {
|
app.use(morgan((tokens: morgan.TokenIndexer, req: express.Request, res: express.Response) => {
|
||||||
return JSON.stringify({
|
|
||||||
|
const head: LogHeader = {
|
||||||
type: 'http',
|
type: 'http',
|
||||||
|
level: 'info',
|
||||||
|
depth: 'normal',
|
||||||
timestamp: new Date().toISOString(),
|
timestamp: new Date().toISOString(),
|
||||||
|
}
|
||||||
|
|
||||||
method: tokens.method(req, res),
|
const payload: LogPayload = {
|
||||||
path: tokens.url(req, res),
|
message: 'HTTP request completed',
|
||||||
status: Number(tokens.status(req, res)),
|
data: {
|
||||||
response_time_ms: Number(tokens['response-time'](req, res)),
|
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)),
|
||||||
|
user_id: req.user.id,
|
||||||
|
user_name: req.user.name,
|
||||||
|
user_agent: req.headers['user-agent'],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
ip: req.ip,
|
logger.log(head.level, head.type, payload.message, payload.data, head.depth)
|
||||||
user_agent: req.headers['user-agent'],
|
// {
|
||||||
|
// type: 'http',
|
||||||
|
// timestamp: new Date().toISOString(),
|
||||||
|
|
||||||
user: req.user
|
// method: tokens.method(req, res),
|
||||||
? { id: req.user.id, name: req.user.name }
|
// path: tokens.url(req, res),
|
||||||
: null,
|
// 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) => {
|
skip: (req: express.Request) => {
|
||||||
return req.originalUrl === '/members/me';
|
return req.originalUrl === '/members/me';
|
||||||
@@ -89,6 +112,7 @@ import { roles, memberRoles } from './routes/roles';
|
|||||||
import { courseRouter, eventRouter } from './routes/course';
|
import { courseRouter, eventRouter } from './routes/course';
|
||||||
import { calendarRouter } from './routes/calendar';
|
import { calendarRouter } from './routes/calendar';
|
||||||
import { docsRouter } from './routes/docs';
|
import { docsRouter } from './routes/docs';
|
||||||
|
import { logger, LogHeader, LogPayload } from './services/logging/logger';
|
||||||
|
|
||||||
app.use('/application', applicationRouter);
|
app.use('/application', applicationRouter);
|
||||||
app.use('/ranks', ranks);
|
app.use('/ranks', ranks);
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ const express = require('express');
|
|||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
import pool from '../db';
|
import pool from '../db';
|
||||||
import { approveApplication, createApplication, denyApplication, getAllMemberApplications, getApplicationByID, getApplicationComments, getApplicationList, getMemberApplication } from '../services/applicationService';
|
import { approveApplication, createApplication, denyApplication, getAllMemberApplications, getApplicationByID, getApplicationComments, getApplicationList, getMemberApplication } from '../services/db/applicationService';
|
||||||
import { setUserState } from '../services/memberService';
|
import { setUserState } from '../services/db/memberService';
|
||||||
import { MemberState } from '@app/shared/types/member';
|
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 { 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 { Request, response, Response } from 'express';
|
||||||
import { getUserRoles } from '../services/rolesService';
|
import { getUserRoles } from '../services/db/rolesService';
|
||||||
import { requireLogin, requireRole } from '../middleware/auth';
|
import { requireLogin, requireRole } from '../middleware/auth';
|
||||||
|
|
||||||
//get CoC
|
//get CoC
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ const router = express.Router();
|
|||||||
import { Role } from '@app/shared/types/roles';
|
import { Role } from '@app/shared/types/roles';
|
||||||
import pool from '../db';
|
import pool from '../db';
|
||||||
import { requireLogin } from '../middleware/auth';
|
import { requireLogin } from '../middleware/auth';
|
||||||
import { getUserRoles } from '../services/rolesService';
|
import { getUserRoles } from '../services/db/rolesService';
|
||||||
import { getUserState, mapDiscordtoID } from '../services/memberService';
|
import { getUserState, mapDiscordtoID } from '../services/db/memberService';
|
||||||
import { MemberState } from '@app/shared/types/member';
|
import { MemberState } from '@app/shared/types/member';
|
||||||
import { toDateTime } from '@app/shared/utils/time';
|
import { toDateTime } from '@app/shared/utils/time';
|
||||||
const querystring = require('querystring');
|
const querystring = require('querystring');
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Request, Response } from "express";
|
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 { CalendarAttendance, CalendarEvent } from "@app/shared/types/calendar";
|
||||||
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
|
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
|
||||||
import { MemberState } from "@app/shared/types/member";
|
import { MemberState } from "@app/shared/types/member";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CourseAttendee, CourseEventDetails } from "@app/shared/types/course";
|
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 { Request, Response, Router } from "express";
|
||||||
import { requireLogin, requireMemberState } from "../middleware/auth";
|
import { requireLogin, requireMemberState } from "../middleware/auth";
|
||||||
import { MemberState } from "@app/shared/types/member";
|
import { MemberState } from "@app/shared/types/member";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const router = express.Router();
|
|||||||
|
|
||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import pool from '../db';
|
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 { LOARequest } from '@app/shared/types/loa';
|
||||||
import { requireLogin, requireRole } from '../middleware/auth';
|
import { requireLogin, requireRole } from '../middleware/auth';
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ const router = express.Router();
|
|||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import pool from '../db';
|
import pool from '../db';
|
||||||
import { requireLogin, requireMemberState, requireRole } from '../middleware/auth';
|
import { requireLogin, requireMemberState, requireRole } from '../middleware/auth';
|
||||||
import { getUserActiveLOA } from '../services/loaService';
|
import { getUserActiveLOA } from '../services/db/loaService';
|
||||||
import { getAllMembersLite, getMemberSettings, getMembersFull, getMembersLite, getUserData, getUserState, setUserSettings } from '../services/memberService';
|
import { getAllMembersLite, getMemberSettings, getMembersFull, getMembersLite, getUserData, getUserState, setUserSettings } from '../services/db/memberService';
|
||||||
import { getUserRoles } from '../services/rolesService';
|
import { getUserRoles } from '../services/db/rolesService';
|
||||||
import { memberSettings, MemberState, myData } from '@app/shared/types/member';
|
import { memberSettings, MemberState, myData } from '@app/shared/types/member';
|
||||||
|
|
||||||
//get all users
|
//get all users
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { MemberState } from "@app/shared/types/member";
|
import { MemberState } from "@app/shared/types/member";
|
||||||
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
|
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 { BatchPromotion, BatchPromotionMember } from '@app/shared/schemas/promotionSchema'
|
||||||
|
|
||||||
import express = require('express');
|
import express = require('express');
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const ur = express.Router();
|
|||||||
import { MemberState } from '@app/shared/types/member';
|
import { MemberState } from '@app/shared/types/member';
|
||||||
import pool from '../db';
|
import pool from '../db';
|
||||||
import { requireLogin, requireMemberState, requireRole } from '../middleware/auth';
|
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';
|
import { Request, Response } from 'express';
|
||||||
|
|
||||||
r.use(requireLogin)
|
r.use(requireLogin)
|
||||||
|
|||||||
@@ -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 { Course, CourseAttendee, CourseAttendeeRole, CourseEventDetails, CourseEventSummary, RawAttendeeRow } from "@app/shared/types/course"
|
||||||
import { PagedData } from "@app/shared/types/pagination";
|
import { PagedData } from "@app/shared/types/pagination";
|
||||||
import { toDateTime } from "@app/shared/utils/time";
|
import { toDateTime } from "@app/shared/utils/time";
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ApplicationListRow, ApplicationRow, CommentRow } from "@app/shared/types/application";
|
import { ApplicationListRow, ApplicationRow, CommentRow } from "@app/shared/types/application";
|
||||||
import pool from "../db";
|
import pool from "../../db";
|
||||||
import { error } from "console";
|
import { error } from "console";
|
||||||
|
|
||||||
export async function createApplication(memberID: number, appVersion: number, app: string) {
|
export async function createApplication(memberID: number, appVersion: number, app: string) {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import pool from '../db';
|
import pool from '../../db';
|
||||||
import { CalendarEventShort, CalendarSignup, CalendarEvent, CalendarAttendance } from "@app/shared/types/calendar"
|
import { CalendarEventShort, CalendarSignup, CalendarEvent, CalendarAttendance } from "@app/shared/types/calendar"
|
||||||
import { toDateTime } from "@app/shared/utils/time"
|
import { toDateTime } from "@app/shared/utils/time"
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { toDateTime } from "@app/shared/utils/time";
|
import { toDateTime } from "@app/shared/utils/time";
|
||||||
import pool from "../db";
|
import pool from "../../db";
|
||||||
import { LOARequest, LOAType } from '@app/shared/types/loa'
|
import { LOARequest, LOAType } from '@app/shared/types/loa'
|
||||||
import { PagedData } from '@app/shared/types/pagination'
|
import { PagedData } from '@app/shared/types/pagination'
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Role } from "@app/shared/types/roles";
|
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'
|
import { Member, MemberCardDetails, MemberLight, memberSettings, MemberState } from '@app/shared/types/member'
|
||||||
|
|
||||||
export async function getUserData(userID: number): Promise<Member> {
|
export async function getUserData(userID: number): Promise<Member> {
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { BatchPromotion, BatchPromotionMember } from "@app/shared/schemas/promotionSchema";
|
import { BatchPromotion, BatchPromotionMember } from "@app/shared/schemas/promotionSchema";
|
||||||
import { PromotionDetails, PromotionSummary } from "@app/shared/types/rank"
|
import { PromotionDetails, PromotionSummary } from "@app/shared/types/rank"
|
||||||
import pool from "../db";
|
import pool from "../../db";
|
||||||
import { PagedData } from "@app/shared/types/pagination";
|
import { PagedData } from "@app/shared/types/pagination";
|
||||||
import { toDateTime } from "@app/shared/utils/time";
|
import { toDateTime } from "@app/shared/utils/time";
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { MemberLight } from '@app/shared/types/member';
|
import { MemberLight } from '@app/shared/types/member';
|
||||||
import pool from '../db';
|
import pool from '../../db';
|
||||||
import { Role, RoleSummary } from '@app/shared/types/roles'
|
import { Role, RoleSummary } from '@app/shared/types/roles'
|
||||||
|
|
||||||
export async function assignUserGroup(userID: number, roleID: number) {
|
export async function assignUserGroup(userID: number, roleID: number) {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import pool from "../db"
|
import pool from "../../db"
|
||||||
|
|
||||||
export async function assignUserToStatus(userID: number, statusID: number) {
|
export async function assignUserToStatus(userID: number, statusID: number) {
|
||||||
const sql = `INSERT INTO members_statuses (member_id, status_id, start_date) VALUES (?, ?, NOW())`
|
const sql = `INSERT INTO members_statuses (member_id, status_id, start_date) VALUES (?, ?, NOW())`
|
||||||
Reference in New Issue
Block a user