Merge pull request 'full API ts transition and sentry not reporting fix' (#89) from Sentry-log-capture into main
All checks were successful
Continuous Integration / Update Development (push) Successful in 2m27s

Reviewed-on: #89
This commit was merged in pull request #89.
This commit is contained in:
2025-12-14 12:52:32 -06:00
10 changed files with 54 additions and 60 deletions

View File

@@ -1,9 +1,9 @@
const dotenv = require('dotenv') import dotenv = require('dotenv');
dotenv.config(); dotenv.config();
const express = require('express') import express = require('express');
const cors = require('cors') import cors = require('cors');
const morgan = require('morgan') import morgan = require('morgan');
const app = express() const app = express()
app.use(morgan('dev')) app.use(morgan('dev'))
@@ -19,7 +19,7 @@ app.set('trust proxy', 1);
const port = process.env.SERVER_PORT; const port = process.env.SERVER_PORT;
//glitchtip setup //glitchtip setup
const sentry = require('@sentry/node'); import sentry = require('@sentry/node');
if (process.env.DISABLE_GLITCHTIP === "true") { if (process.env.DISABLE_GLITCHTIP === "true") {
console.log("Glitchtip disabled") console.log("Glitchtip disabled")
} else { } else {
@@ -27,14 +27,14 @@ if (process.env.DISABLE_GLITCHTIP === "true") {
let release = process.env.APPLICATION_VERSION; let release = process.env.APPLICATION_VERSION;
let environment = process.env.APPLICATION_ENVIRONMENT; let environment = process.env.APPLICATION_ENVIRONMENT;
console.log(release, environment) console.log(release, environment)
sentry.init({ dsn: dsn, release: release, environment: environment }); sentry.init({ dsn: dsn, release: release, environment: environment, integrations: [sentry.captureConsoleIntegration({levels: ['error']})] });
console.log("Glitchtip initialized"); console.log("Glitchtip initialized");
} }
//session setup //session setup
const path = require('path') import path = require('path');
const session = require('express-session') import session = require('express-session');
const passport = require('passport') import passport = require('passport');
const SQLiteStore = require('connect-sqlite3')(session); const SQLiteStore = require('connect-sqlite3')(session);
app.use(session({ app.use(session({
@@ -51,23 +51,21 @@ app.use(session({
app.use(passport.authenticate('session')); app.use(passport.authenticate('session'));
// Mount route modules // Mount route modules
const applicationsRouter = require('./routes/applications'); import { applicationRouter } from './routes/applications';
const { memberRanks, ranks } = require('./routes/ranks'); import { memberRanks, ranks } from './routes/ranks';
const members = require('./routes/members'); import { memberRouter } from './routes/members';
const loaHandler = require('./routes/loa') import { loaRouter } from './routes/loa';
const { status, memberStatus } = require('./routes/statuses') import { status, memberStatus } from './routes/statuses';
const authRouter = require('./routes/auth') import { authRouter } from './routes/auth';
const { roles, memberRoles } = require('./routes/roles'); import { roles, memberRoles } from './routes/roles';
const { courseRouter, eventRouter } = require('./routes/course'); import { courseRouter, eventRouter } from './routes/course';
const { calendarRouter } = require('./routes/calendar') import { calendarRouter } from './routes/calendar';
const morgan = require('morgan');
const { env } = require('process');
app.use('/application', applicationsRouter); app.use('/application', applicationRouter);
app.use('/ranks', ranks); app.use('/ranks', ranks);
app.use('/memberRanks', memberRanks); app.use('/memberRanks', memberRanks);
app.use('/members', members); app.use('/members', memberRouter);
app.use('/loa', loaHandler); app.use('/loa', loaRouter);
app.use('/status', status) app.use('/status', status)
app.use('/memberStatus', memberStatus) app.use('/memberStatus', memberStatus)
app.use('/roles', roles) app.use('/roles', roles)

View File

@@ -291,5 +291,4 @@ router.post('/restart', async (req: Request, res: Response) => {
} }
}) })
export const applicationRouter = router;
module.exports = router;

View File

@@ -143,5 +143,4 @@ declare global {
} }
export const authRouter = router;
module.exports = router;

View File

@@ -116,5 +116,4 @@ r.put('/', [requireLogin, requireMemberState(MemberState.Member)], async (req: R
} }
}) })
export const calendarRouter = r;
module.exports.calendarRouter = r;

View File

@@ -4,15 +4,15 @@ 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";
const courseRouter = Router(); const cr = Router();
const eventRouter = Router(); const er = Router();
courseRouter.use(requireLogin) cr.use(requireLogin)
eventRouter.use(requireLogin) er.use(requireLogin)
courseRouter.use(requireMemberState(MemberState.Member)) cr.use(requireMemberState(MemberState.Member))
eventRouter.use(requireMemberState(MemberState.Member)) er.use(requireMemberState(MemberState.Member))
courseRouter.get('/', async (req, res) => { cr.get('/', async (req, res) => {
try { try {
const courses = await getAllCourses(); const courses = await getAllCourses();
res.status(200).json(courses); res.status(200).json(courses);
@@ -22,7 +22,7 @@ courseRouter.get('/', async (req, res) => {
} }
}) })
courseRouter.get('/roles', async (req, res) => { cr.get('/roles', async (req, res) => {
try { try {
const roles = await getCourseEventRoles(); const roles = await getCourseEventRoles();
res.status(200).json(roles); res.status(200).json(roles);
@@ -32,7 +32,7 @@ courseRouter.get('/roles', async (req, res) => {
} }
}) })
eventRouter.get('/', async (req: Request, res: Response) => { er.get('/', async (req: Request, res: Response) => {
const allowedSorts = new Map([ const allowedSorts = new Map([
["ascending", "ASC"], ["ascending", "ASC"],
["descending", "DESC"] ["descending", "DESC"]
@@ -57,7 +57,7 @@ eventRouter.get('/', async (req: Request, res: Response) => {
} }
}); });
eventRouter.get('/:id', async (req: Request, res: Response) => { er.get('/:id', async (req: Request, res: Response) => {
try { try {
let out = await getCourseEventDetails(Number(req.params.id)); let out = await getCourseEventDetails(Number(req.params.id));
res.status(200).json(out); res.status(200).json(out);
@@ -67,7 +67,7 @@ eventRouter.get('/:id', async (req: Request, res: Response) => {
} }
}); });
eventRouter.get('/attendees/:id', async (req: Request, res: Response) => { er.get('/attendees/:id', async (req: Request, res: Response) => {
try { try {
const attendees: CourseAttendee[] = await getCourseEventAttendees(Number(req.params.id)); const attendees: CourseAttendee[] = await getCourseEventAttendees(Number(req.params.id));
res.status(200).json(attendees); res.status(200).json(attendees);
@@ -77,7 +77,7 @@ eventRouter.get('/attendees/:id', async (req: Request, res: Response) => {
} }
}) })
eventRouter.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(); console.log();
@@ -92,5 +92,5 @@ eventRouter.post('/', async (req: Request, res: Response) => {
} }
}) })
module.exports.courseRouter = courseRouter; export const courseRouter = cr;
module.exports.eventRouter = eventRouter; export const eventRouter = er;

View File

@@ -148,4 +148,4 @@ router.get('/policy', async (req: Request, res: Response) => {
} }
}) })
module.exports = router; export const loaRouter = router;

View File

@@ -127,6 +127,4 @@ router.put('/:id/displayname', async (req, res) => {
}); });
export const memberRouter = router;
module.exports = router;

View File

@@ -35,5 +35,5 @@ r.get('/', async (req, res) => {
} }
}); });
module.exports.ranks = r; export const ranks = r;
module.exports.memberRanks = ur; export const memberRanks = ur;

View File

@@ -117,5 +117,5 @@ r.delete('/:id', [requireMemberState(MemberState.Member), requireRole("17th Admi
} }
}) })
module.exports.roles = r; export const roles = r;
module.exports.memberRoles = ur; export const memberRoles = ur;

View File

@@ -1,15 +1,15 @@
const express = require('express'); import express = require('express');
const status = express.Router(); const statusR = express.Router();
const memberStatus = express.Router(); const memberStatusR = express.Router();
import pool from '../db'; import pool from '../db';
import { requireLogin } from '../middleware/auth'; import { requireLogin } from '../middleware/auth';
status.use(requireLogin); statusR.use(requireLogin);
memberStatus.use(requireLogin); memberStatusR.use(requireLogin);
//insert a new latest rank for a user //insert a new latest rank for a user
memberStatus.post('/', async (req, res) => { memberStatusR.post('/', async (req, res) => {
// try { // try {
// const App = req.body?.App || {}; // const App = req.body?.App || {};
@@ -34,7 +34,7 @@ memberStatus.post('/', async (req, res) => {
}); });
//get all statuses //get all statuses
status.get('/', async (req, res) => { statusR.get('/', async (req, res) => {
try { try {
const result = await pool.query('SELECT * FROM statuses;'); const result = await pool.query('SELECT * FROM statuses;');
res.json(result); res.json(result);
@@ -44,7 +44,8 @@ status.get('/', async (req, res) => {
} }
}); });
module.exports.status = status; export const status = statusR;
module.exports.memberStatus = memberStatus; export const memberStatus = memberStatusR;
// TODO, implement get all ranks route with SQL stirng SELECT id, name, short_name, category, sort_id FROM ranks; // TODO, implement get all ranks route with SQL stirng SELECT id, name, short_name, category, sort_id FROM ranks;