From 7aaeab524372e7bd93de226176d99878a3f2ccc0 Mon Sep 17 00:00:00 2001 From: ajdj100 Date: Sun, 14 Dec 2025 13:52:32 -0500 Subject: [PATCH] full API ts transition and sentry not reporting fix --- api/src/{index.js => index.ts} | 44 ++++++++++----------- api/src/routes/applications.ts | 3 +- api/src/routes/auth.ts | 3 +- api/src/routes/calendar.ts | 3 +- api/src/routes/course.ts | 28 ++++++------- api/src/routes/loa.ts | 2 +- api/src/routes/members.ts | 4 +- api/src/routes/ranks.ts | 4 +- api/src/routes/roles.ts | 4 +- api/src/routes/{statuses.js => statuses.ts} | 19 ++++----- 10 files changed, 54 insertions(+), 60 deletions(-) rename api/src/{index.js => index.ts} (61%) rename api/src/routes/{statuses.js => statuses.ts} (74%) diff --git a/api/src/index.js b/api/src/index.ts similarity index 61% rename from api/src/index.js rename to api/src/index.ts index 00bf5cc..8327b4d 100644 --- a/api/src/index.js +++ b/api/src/index.ts @@ -1,9 +1,9 @@ -const dotenv = require('dotenv') +import dotenv = require('dotenv'); dotenv.config(); -const express = require('express') -const cors = require('cors') -const morgan = require('morgan') +import express = require('express'); +import cors = require('cors'); +import morgan = require('morgan'); const app = express() app.use(morgan('dev')) @@ -19,7 +19,7 @@ app.set('trust proxy', 1); const port = process.env.SERVER_PORT; //glitchtip setup -const sentry = require('@sentry/node'); +import sentry = require('@sentry/node'); if (process.env.DISABLE_GLITCHTIP === "true") { console.log("Glitchtip disabled") } else { @@ -27,14 +27,14 @@ if (process.env.DISABLE_GLITCHTIP === "true") { let release = process.env.APPLICATION_VERSION; let environment = process.env.APPLICATION_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"); } //session setup -const path = require('path') -const session = require('express-session') -const passport = require('passport') +import path = require('path'); +import session = require('express-session'); +import passport = require('passport'); const SQLiteStore = require('connect-sqlite3')(session); app.use(session({ @@ -51,23 +51,21 @@ app.use(session({ app.use(passport.authenticate('session')); // Mount route modules -const applicationsRouter = require('./routes/applications'); -const { memberRanks, ranks } = require('./routes/ranks'); -const members = require('./routes/members'); -const loaHandler = require('./routes/loa') -const { status, memberStatus } = require('./routes/statuses') -const authRouter = require('./routes/auth') -const { roles, memberRoles } = require('./routes/roles'); -const { courseRouter, eventRouter } = require('./routes/course'); -const { calendarRouter } = require('./routes/calendar') -const morgan = require('morgan'); -const { env } = require('process'); +import { applicationRouter } from './routes/applications'; +import { memberRanks, ranks } from './routes/ranks'; +import { memberRouter } from './routes/members'; +import { loaRouter } from './routes/loa'; +import { status, memberStatus } from './routes/statuses'; +import { authRouter } from './routes/auth'; +import { roles, memberRoles } from './routes/roles'; +import { courseRouter, eventRouter } from './routes/course'; +import { calendarRouter } from './routes/calendar'; -app.use('/application', applicationsRouter); +app.use('/application', applicationRouter); app.use('/ranks', ranks); app.use('/memberRanks', memberRanks); -app.use('/members', members); -app.use('/loa', loaHandler); +app.use('/members', memberRouter); +app.use('/loa', loaRouter); app.use('/status', status) app.use('/memberStatus', memberStatus) app.use('/roles', roles) diff --git a/api/src/routes/applications.ts b/api/src/routes/applications.ts index a479429..7e3c863 100644 --- a/api/src/routes/applications.ts +++ b/api/src/routes/applications.ts @@ -291,5 +291,4 @@ router.post('/restart', async (req: Request, res: Response) => { } }) - -module.exports = router; +export const applicationRouter = router; diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index ca8eeba..4851d63 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -143,5 +143,4 @@ declare global { } - -module.exports = router; \ No newline at end of file +export const authRouter = router; \ No newline at end of file diff --git a/api/src/routes/calendar.ts b/api/src/routes/calendar.ts index 82225ef..0492501 100644 --- a/api/src/routes/calendar.ts +++ b/api/src/routes/calendar.ts @@ -116,5 +116,4 @@ r.put('/', [requireLogin, requireMemberState(MemberState.Member)], async (req: R } }) - -module.exports.calendarRouter = r; \ No newline at end of file +export const calendarRouter = r; diff --git a/api/src/routes/course.ts b/api/src/routes/course.ts index 35bf916..f04ea08 100644 --- a/api/src/routes/course.ts +++ b/api/src/routes/course.ts @@ -4,15 +4,15 @@ import { Request, Response, Router } from "express"; import { requireLogin, requireMemberState } from "../middleware/auth"; import { MemberState } from "@app/shared/types/member"; -const courseRouter = Router(); -const eventRouter = Router(); +const cr = Router(); +const er = Router(); -courseRouter.use(requireLogin) -eventRouter.use(requireLogin) -courseRouter.use(requireMemberState(MemberState.Member)) -eventRouter.use(requireMemberState(MemberState.Member)) +cr.use(requireLogin) +er.use(requireLogin) +cr.use(requireMemberState(MemberState.Member)) +er.use(requireMemberState(MemberState.Member)) -courseRouter.get('/', async (req, res) => { +cr.get('/', async (req, res) => { try { const courses = await getAllCourses(); 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 { const roles = await getCourseEventRoles(); 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([ ["ascending", "ASC"], ["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 { let out = await getCourseEventDetails(Number(req.params.id)); 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 { const attendees: CourseAttendee[] = await getCourseEventAttendees(Number(req.params.id)); 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; try { console.log(); @@ -92,5 +92,5 @@ eventRouter.post('/', async (req: Request, res: Response) => { } }) -module.exports.courseRouter = courseRouter; -module.exports.eventRouter = eventRouter; \ No newline at end of file +export const courseRouter = cr; +export const eventRouter = er; diff --git a/api/src/routes/loa.ts b/api/src/routes/loa.ts index 6c984b1..f2de3b1 100644 --- a/api/src/routes/loa.ts +++ b/api/src/routes/loa.ts @@ -148,4 +148,4 @@ router.get('/policy', async (req: Request, res: Response) => { } }) -module.exports = router; +export const loaRouter = router; \ No newline at end of file diff --git a/api/src/routes/members.ts b/api/src/routes/members.ts index f0f06db..ff98483 100644 --- a/api/src/routes/members.ts +++ b/api/src/routes/members.ts @@ -127,6 +127,4 @@ router.put('/:id/displayname', async (req, res) => { }); - - -module.exports = router; +export const memberRouter = router; diff --git a/api/src/routes/ranks.ts b/api/src/routes/ranks.ts index ee16d13..5eff733 100644 --- a/api/src/routes/ranks.ts +++ b/api/src/routes/ranks.ts @@ -35,5 +35,5 @@ r.get('/', async (req, res) => { } }); -module.exports.ranks = r; -module.exports.memberRanks = ur; \ No newline at end of file +export const ranks = r; +export const memberRanks = ur; \ No newline at end of file diff --git a/api/src/routes/roles.ts b/api/src/routes/roles.ts index e5429a8..3444b03 100644 --- a/api/src/routes/roles.ts +++ b/api/src/routes/roles.ts @@ -117,5 +117,5 @@ r.delete('/:id', [requireMemberState(MemberState.Member), requireRole("17th Admi } }) -module.exports.roles = r; -module.exports.memberRoles = ur; \ No newline at end of file +export const roles = r; +export const memberRoles = ur; diff --git a/api/src/routes/statuses.js b/api/src/routes/statuses.ts similarity index 74% rename from api/src/routes/statuses.js rename to api/src/routes/statuses.ts index 7d07a71..8457800 100644 --- a/api/src/routes/statuses.js +++ b/api/src/routes/statuses.ts @@ -1,15 +1,15 @@ -const express = require('express'); -const status = express.Router(); -const memberStatus = express.Router(); +import express = require('express'); +const statusR = express.Router(); +const memberStatusR = express.Router(); import pool from '../db'; import { requireLogin } from '../middleware/auth'; -status.use(requireLogin); -memberStatus.use(requireLogin); +statusR.use(requireLogin); +memberStatusR.use(requireLogin); //insert a new latest rank for a user -memberStatus.post('/', async (req, res) => { +memberStatusR.post('/', async (req, res) => { // try { // const App = req.body?.App || {}; @@ -34,7 +34,7 @@ memberStatus.post('/', async (req, res) => { }); //get all statuses -status.get('/', async (req, res) => { +statusR.get('/', async (req, res) => { try { const result = await pool.query('SELECT * FROM statuses;'); res.json(result); @@ -44,7 +44,8 @@ status.get('/', async (req, res) => { } }); -module.exports.status = status; -module.exports.memberStatus = memberStatus; +export const status = statusR; +export const memberStatus = memberStatusR; + // TODO, implement get all ranks route with SQL stirng SELECT id, name, short_name, category, sort_id FROM ranks; \ No newline at end of file -- 2.37.3.windows.1