From 2f504ea5730fec4cf59aa2d0ecd250da60aa4af3 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 11:37:20 -0800 Subject: [PATCH 01/14] holy refactor (manager and slack endpoints --- package-lock.json | 146 +- src/app.ts | 24 + src/handler/analysis/analysisHandler.ts | 4 +- .../{manager => analysis/csv}/getReportCSV.ts | 8 +- .../{manager => analysis/csv}/getTeamCSV.ts | 8 +- .../csv}/getTeamMatchCSV.ts | 8 +- .../manager/addTournamentMatchesOneTime.ts | 3294 ----------------- src/handler/manager/{ => apikey}/addApiKey.ts | 4 +- .../manager/{ => apikey}/getApiKeys.ts | 0 .../manager/{ => apikey}/renameApiKey.ts | 0 .../manager/{ => apikey}/revokeApiKey.ts | 0 src/handler/manager/getMatches.ts | 769 ++-- src/handler/manager/getMatchesFaster.ts | 318 -- src/handler/manager/getMatchesNew.ts | 432 --- src/handler/manager/getScouterSchedule.ts | 87 - .../addMutablePicklist.ts | 0 .../deleteMutablePicklist.ts | 0 .../getMutablePicklists.ts | 4 +- .../getSingleMutablePicklist.ts | 0 .../updateMutablePicklist.ts | 0 .../manager/{ => onboarding}/addUsername.ts | 4 +- .../manager/{ => onboarding}/addWebsite.ts | 6 +- .../{ => onboarding}/approveTeamEmail.ts | 2 +- .../manager/{ => onboarding}/checkCode.ts | 4 +- .../manager/{ => onboarding}/resendEmail.ts | 4 +- .../manager/{ => picklists}/addPicklist.ts | 0 .../manager/{ => picklists}/deletePicklist.ts | 0 .../manager/{ => picklists}/getPicklists.ts | 0 .../{ => picklists}/getSinglePicklist.ts | 0 .../manager/{ => picklists}/updatePicklist.ts | 0 .../addRegisteredTeam.ts | 0 .../approveRegisteredTeam.ts | 0 .../checkRegisteredTeam.ts | 0 .../rejectRegisteredTeam.ts | 0 .../manager/{ => scouters}/addNewScouter.ts | 0 .../{ => scouters}/addScouterDashboard.ts | 0 .../manager/{ => scouters}/archiveScouter.ts | 4 +- .../{ => scouters}/changeNameScouter.ts | 2 +- .../{ => scouters}/checkCodeScouter.ts | 2 +- .../manager/{ => scouters}/deleteScouter.ts | 0 .../manager/{ => scouters}/emailTeamCode.ts | 2 +- .../{ => scouters}/getScheduleForScouter.ts | 6 +- .../{ => scouters}/getScouterTournaments.ts | 2 +- .../manager/{ => scouters}/getScouters.ts | 2 +- .../{ => scouters}/getScoutersOnTeam.ts | 4 +- .../getTournamentForScouterWithSchedule.ts | 2 +- .../scoutingLeadProgressPage.ts | 8 +- .../{ => scouters}/unarchiveScouter.ts | 0 .../updateRoleToScoutingLead.ts | 0 .../{ => scouters}/updateScouterName.ts | 4 +- .../checkScouterShiftMatches.ts | 4 +- .../{ => scoutershifts}/deleteScouterShift.ts | 4 +- .../{ => scoutershifts}/updateScouterShift.ts | 6 +- .../{ => scoutreports}/addScoutReport.ts | 0 .../addScoutReportDashboard.ts | 0 .../{ => scoutreports}/deleteScoutReport.ts | 0 .../{ => scoutreports}/getScoutReport.ts | 0 .../manager/{ => settings}/addTeamSource.ts | 0 .../{ => settings}/addTournamentSource.ts | 0 .../manager/{ => settings}/getTeamSource.ts | 0 .../{ => settings}/getTournamentSource.ts | 6 +- .../manager/{ => settings}/updateSettings.ts | 0 .../manager/{ => settings}/updateTeamEmail.ts | 6 +- .../manager/{ => temp}/addNotOnTeam.ts | 4 +- .../{ => tournament}/addScouterShift.ts | 8 +- .../{ => tournament}/getTeamRankings.ts | 2 +- .../{ => tournament}/getTeamsInTournament.ts | 2 +- src/handler/slack/addSlackWorkspace.ts | 2 +- src/index.ts | 251 +- src/lib/middleware/posthogMiddleware.ts | 2 +- src/routes/analysis/analysis.routes.ts | 17 + src/routes/index.ts | 16 + src/routes/manager/apikey.routes.ts | 17 + src/routes/manager/manager.routes.ts | 73 + src/routes/manager/mutablepicklists.routes.ts | 31 + src/routes/manager/onboarding.routes.ts | 54 + src/routes/manager/picklists.routes.ts | 35 + src/routes/manager/registeredteams.routes.ts | 16 + src/routes/manager/scouters.routes.ts | 41 + src/routes/manager/scoutershifts.routes.ts | 14 + src/routes/manager/scoutreports.routes.ts | 17 + src/routes/manager/settings.routes.ts | 33 + src/routes/manager/tournaments.routes.ts | 28 + src/routes/slack/slack.routes.ts | 27 + src/server.ts | 14 + 85 files changed, 1008 insertions(+), 4886 deletions(-) create mode 100644 src/app.ts rename src/handler/{manager => analysis/csv}/getReportCSV.ts (97%) rename src/handler/{manager => analysis/csv}/getTeamCSV.ts (98%) rename src/handler/{manager => analysis/csv}/getTeamMatchCSV.ts (98%) delete mode 100644 src/handler/manager/addTournamentMatchesOneTime.ts rename src/handler/manager/{ => apikey}/addApiKey.ts (88%) rename src/handler/manager/{ => apikey}/getApiKeys.ts (100%) rename src/handler/manager/{ => apikey}/renameApiKey.ts (100%) rename src/handler/manager/{ => apikey}/revokeApiKey.ts (100%) delete mode 100644 src/handler/manager/getMatchesFaster.ts delete mode 100644 src/handler/manager/getMatchesNew.ts delete mode 100644 src/handler/manager/getScouterSchedule.ts rename src/handler/manager/{ => mutablepicklists}/addMutablePicklist.ts (100%) rename src/handler/manager/{ => mutablepicklists}/deleteMutablePicklist.ts (100%) rename src/handler/manager/{ => mutablepicklists}/getMutablePicklists.ts (86%) rename src/handler/manager/{ => mutablepicklists}/getSingleMutablePicklist.ts (100%) rename src/handler/manager/{ => mutablepicklists}/updateMutablePicklist.ts (100%) rename src/handler/manager/{ => onboarding}/addUsername.ts (77%) rename src/handler/manager/{ => onboarding}/addWebsite.ts (81%) rename src/handler/manager/{ => onboarding}/approveTeamEmail.ts (96%) rename src/handler/manager/{ => onboarding}/checkCode.ts (88%) rename src/handler/manager/{ => onboarding}/resendEmail.ts (91%) rename src/handler/manager/{ => picklists}/addPicklist.ts (100%) rename src/handler/manager/{ => picklists}/deletePicklist.ts (100%) rename src/handler/manager/{ => picklists}/getPicklists.ts (100%) rename src/handler/manager/{ => picklists}/getSinglePicklist.ts (100%) rename src/handler/manager/{ => picklists}/updatePicklist.ts (100%) rename src/handler/manager/{ => registeredteams}/addRegisteredTeam.ts (100%) rename src/handler/manager/{ => registeredteams}/approveRegisteredTeam.ts (100%) rename src/handler/manager/{ => registeredteams}/checkRegisteredTeam.ts (100%) rename src/handler/manager/{ => registeredteams}/rejectRegisteredTeam.ts (100%) rename src/handler/manager/{ => scouters}/addNewScouter.ts (100%) rename src/handler/manager/{ => scouters}/addScouterDashboard.ts (100%) rename src/handler/manager/{ => scouters}/archiveScouter.ts (87%) rename src/handler/manager/{ => scouters}/changeNameScouter.ts (94%) rename src/handler/manager/{ => scouters}/checkCodeScouter.ts (94%) rename src/handler/manager/{ => scouters}/deleteScouter.ts (100%) rename src/handler/manager/{ => scouters}/emailTeamCode.ts (95%) rename src/handler/manager/{ => scouters}/getScheduleForScouter.ts (95%) rename src/handler/manager/{ => scouters}/getScouterTournaments.ts (99%) rename src/handler/manager/{ => scouters}/getScouters.ts (98%) rename src/handler/manager/{ => scouters}/getScoutersOnTeam.ts (94%) rename src/handler/manager/{ => scouters}/getTournamentForScouterWithSchedule.ts (95%) rename src/handler/manager/{ => scouters}/scoutingLeadProgressPage.ts (97%) rename src/handler/manager/{ => scouters}/unarchiveScouter.ts (100%) rename src/handler/manager/{ => scouters}/updateRoleToScoutingLead.ts (100%) rename src/handler/manager/{ => scouters}/updateScouterName.ts (91%) rename src/handler/manager/{ => scoutershifts}/checkScouterShiftMatches.ts (92%) rename src/handler/manager/{ => scoutershifts}/deleteScouterShift.ts (89%) rename src/handler/manager/{ => scoutershifts}/updateScouterShift.ts (94%) rename src/handler/manager/{ => scoutreports}/addScoutReport.ts (100%) rename src/handler/manager/{ => scoutreports}/addScoutReportDashboard.ts (100%) rename src/handler/manager/{ => scoutreports}/deleteScoutReport.ts (100%) rename src/handler/manager/{ => scoutreports}/getScoutReport.ts (100%) rename src/handler/manager/{ => settings}/addTeamSource.ts (100%) rename src/handler/manager/{ => settings}/addTournamentSource.ts (100%) rename src/handler/manager/{ => settings}/getTeamSource.ts (100%) rename src/handler/manager/{ => settings}/getTournamentSource.ts (73%) rename src/handler/manager/{ => settings}/updateSettings.ts (100%) rename src/handler/manager/{ => settings}/updateTeamEmail.ts (80%) rename src/handler/manager/{ => temp}/addNotOnTeam.ts (78%) rename src/handler/manager/{ => tournament}/addScouterShift.ts (91%) rename src/handler/manager/{ => tournament}/getTeamRankings.ts (97%) rename src/handler/manager/{ => tournament}/getTeamsInTournament.ts (95%) create mode 100644 src/routes/analysis/analysis.routes.ts create mode 100644 src/routes/index.ts create mode 100644 src/routes/manager/apikey.routes.ts create mode 100644 src/routes/manager/manager.routes.ts create mode 100644 src/routes/manager/mutablepicklists.routes.ts create mode 100644 src/routes/manager/onboarding.routes.ts create mode 100644 src/routes/manager/picklists.routes.ts create mode 100644 src/routes/manager/registeredteams.routes.ts create mode 100644 src/routes/manager/scouters.routes.ts create mode 100644 src/routes/manager/scoutershifts.routes.ts create mode 100644 src/routes/manager/scoutreports.routes.ts create mode 100644 src/routes/manager/settings.routes.ts create mode 100644 src/routes/manager/tournaments.routes.ts create mode 100644 src/routes/slack/slack.routes.ts create mode 100644 src/server.ts diff --git a/package-lock.json b/package-lock.json index b16c3d40..1bcf6f18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ }, "devDependencies": { "@eslint/js": "^9.8.0", + "@types/cookie-parser": "^1.4.7", "@types/crypto-js": "^4.2.1", "@types/express": "^4.17.21", "@types/node": "^20.9.2", @@ -1168,6 +1169,16 @@ "@types/node": "*" } }, + "node_modules/@types/cookie-parser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.10.tgz", + "integrity": "sha512-B4xqkqfZ8Wek+rCOeRxsjMS9OgvzebEzzLYw7NHYuvzb7IdxOkI0ZHGgeEBX4PUM7QGVvNSK60T3OvWj3YfBRg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/express": "*" + } + }, "node_modules/@types/crypto-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", @@ -1188,6 +1199,7 @@ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -1714,23 +1726,23 @@ } }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -1746,12 +1758,41 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -2719,39 +2760,39 @@ "license": "MIT" }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", + "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.13.0", + "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", + "send": "~0.19.0", + "serve-static": "~1.16.2", "setprototypeof": "1.2.0", - "statuses": "2.0.1", + "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" @@ -4358,12 +4399,12 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -4403,16 +4444,45 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } diff --git a/src/app.ts b/src/app.ts new file mode 100644 index 00000000..4d94fa51 --- /dev/null +++ b/src/app.ts @@ -0,0 +1,24 @@ +import express from "express"; +import bodyParser from "body-parser"; +import cookieParser from "cookie-parser"; +import "dotenv/config"; + +import { setupExpressErrorHandler } from "posthog-node"; +import { posthog } from "./posthogClient.js"; +import posthogReporter from "./lib/middleware/posthogMiddleware.js"; + +import routes from "./routes/index.js"; + +export const app = express(); + +setupExpressErrorHandler(posthog, app); +app.set("trust proxy", true); + +app.use(bodyParser.json()); +app.use(cookieParser()); + +// Logs requests using posthog +app.use(posthogReporter); + +// API entry point +app.use("/v1", routes); diff --git a/src/handler/analysis/analysisHandler.ts b/src/handler/analysis/analysisHandler.ts index 6772dc17..44f63999 100644 --- a/src/handler/analysis/analysisHandler.ts +++ b/src/handler/analysis/analysisHandler.ts @@ -120,7 +120,7 @@ export const createAnalysisHandler: < context, ); - res.set('X-Lovat-Cache','miss'); + res.set("X-Lovat-Cache", "miss"); res.status(200).send(calculatedAnalysis.error ?? calculatedAnalysis); try { @@ -143,7 +143,7 @@ export const createAnalysisHandler: < return; } } else { - res.set('X-Lovat-Cache','hit'); + res.set("X-Lovat-Cache", "hit"); res.status(200).send(JSON.parse(cacheRow.toString())); } } catch (error) { diff --git a/src/handler/manager/getReportCSV.ts b/src/handler/analysis/csv/getReportCSV.ts similarity index 97% rename from src/handler/manager/getReportCSV.ts rename to src/handler/analysis/csv/getReportCSV.ts index 2af0c9f3..68444cee 100644 --- a/src/handler/manager/getReportCSV.ts +++ b/src/handler/analysis/csv/getReportCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -16,12 +16,12 @@ import { TeamMatchData, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "../analysis/analysisConstants.js"; +import { autoEnd, endgameToPoints } from "../analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; // Scouting report condensed into a single dimension that can be pushed to a row in the csv export interface CondensedReport { diff --git a/src/handler/manager/getTeamCSV.ts b/src/handler/analysis/csv/getTeamCSV.ts similarity index 98% rename from src/handler/manager/getTeamCSV.ts rename to src/handler/analysis/csv/getTeamCSV.ts index 973402a1..55713b1e 100644 --- a/src/handler/manager/getTeamCSV.ts +++ b/src/handler/analysis/csv/getTeamCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -14,12 +14,12 @@ import { UnderShallowCage, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "../analysis/analysisConstants.js"; +import { autoEnd, endgameToPoints } from "../analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; interface AggregatedTeamData { teamNumber: number; diff --git a/src/handler/manager/getTeamMatchCSV.ts b/src/handler/analysis/csv/getTeamMatchCSV.ts similarity index 98% rename from src/handler/manager/getTeamMatchCSV.ts rename to src/handler/analysis/csv/getTeamMatchCSV.ts index e66c2bda..e1e1a4a9 100644 --- a/src/handler/manager/getTeamMatchCSV.ts +++ b/src/handler/analysis/csv/getTeamMatchCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -15,13 +15,13 @@ import { Scouter, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "../analysis/analysisConstants.js"; +import { autoEnd, endgameToPoints } from "../analysisConstants.js"; import { z } from "zod"; import { CondensedReport } from "./getReportCSV.js"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; // Simplified scouting report with properties required for aggregation interface PointsReport { diff --git a/src/handler/manager/addTournamentMatchesOneTime.ts b/src/handler/manager/addTournamentMatchesOneTime.ts deleted file mode 100644 index c930487c..00000000 --- a/src/handler/manager/addTournamentMatchesOneTime.ts +++ /dev/null @@ -1,3294 +0,0 @@ -import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; - -export const addTournamentMatchesOneTime = async ( - req: Request, - res: Response, -): Promise => { - try { - const rows = await prismaClient.teamMatchData.createMany({ - data: [ - { - key: "2024tuhc_qm1_3", - tournamentKey: "2024tuhc", - matchNumber: 1, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm1_4", - tournamentKey: "2024tuhc", - matchNumber: 1, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm1_5", - tournamentKey: "2024tuhc", - matchNumber: 1, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm1_0", - tournamentKey: "2024tuhc", - matchNumber: 1, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm1_1", - tournamentKey: "2024tuhc", - matchNumber: 1, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm1_2", - tournamentKey: "2024tuhc", - matchNumber: 1, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm2_3", - tournamentKey: "2024tuhc", - matchNumber: 2, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm2_4", - tournamentKey: "2024tuhc", - matchNumber: 2, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm2_5", - tournamentKey: "2024tuhc", - matchNumber: 2, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm2_0", - tournamentKey: "2024tuhc", - matchNumber: 2, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm2_1", - tournamentKey: "2024tuhc", - matchNumber: 2, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm2_2", - tournamentKey: "2024tuhc", - matchNumber: 2, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm3_3", - tournamentKey: "2024tuhc", - matchNumber: 3, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm3_4", - tournamentKey: "2024tuhc", - matchNumber: 3, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm3_5", - tournamentKey: "2024tuhc", - matchNumber: 3, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm3_0", - tournamentKey: "2024tuhc", - matchNumber: 3, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm3_1", - tournamentKey: "2024tuhc", - matchNumber: 3, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm3_2", - tournamentKey: "2024tuhc", - matchNumber: 3, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm4_3", - tournamentKey: "2024tuhc", - matchNumber: 4, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm4_4", - tournamentKey: "2024tuhc", - matchNumber: 4, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm4_5", - tournamentKey: "2024tuhc", - matchNumber: 4, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm4_0", - tournamentKey: "2024tuhc", - matchNumber: 4, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm4_1", - tournamentKey: "2024tuhc", - matchNumber: 4, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm4_2", - tournamentKey: "2024tuhc", - matchNumber: 4, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm5_3", - tournamentKey: "2024tuhc", - matchNumber: 5, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm5_4", - tournamentKey: "2024tuhc", - matchNumber: 5, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm5_5", - tournamentKey: "2024tuhc", - matchNumber: 5, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm5_0", - tournamentKey: "2024tuhc", - matchNumber: 5, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm5_1", - tournamentKey: "2024tuhc", - matchNumber: 5, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm5_2", - tournamentKey: "2024tuhc", - matchNumber: 5, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm6_3", - tournamentKey: "2024tuhc", - matchNumber: 6, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm6_4", - tournamentKey: "2024tuhc", - matchNumber: 6, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm6_5", - tournamentKey: "2024tuhc", - matchNumber: 6, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm6_0", - tournamentKey: "2024tuhc", - matchNumber: 6, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm6_1", - tournamentKey: "2024tuhc", - matchNumber: 6, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm6_2", - tournamentKey: "2024tuhc", - matchNumber: 6, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm7_3", - tournamentKey: "2024tuhc", - matchNumber: 7, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm7_4", - tournamentKey: "2024tuhc", - matchNumber: 7, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm7_5", - tournamentKey: "2024tuhc", - matchNumber: 7, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm7_0", - tournamentKey: "2024tuhc", - matchNumber: 7, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm7_1", - tournamentKey: "2024tuhc", - matchNumber: 7, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm7_2", - tournamentKey: "2024tuhc", - matchNumber: 7, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm8_3", - tournamentKey: "2024tuhc", - matchNumber: 8, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm8_4", - tournamentKey: "2024tuhc", - matchNumber: 8, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm8_5", - tournamentKey: "2024tuhc", - matchNumber: 8, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm8_0", - tournamentKey: "2024tuhc", - matchNumber: 8, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm8_1", - tournamentKey: "2024tuhc", - matchNumber: 8, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm8_2", - tournamentKey: "2024tuhc", - matchNumber: 8, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm9_3", - tournamentKey: "2024tuhc", - matchNumber: 9, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm9_4", - tournamentKey: "2024tuhc", - matchNumber: 9, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm9_5", - tournamentKey: "2024tuhc", - matchNumber: 9, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm9_0", - tournamentKey: "2024tuhc", - matchNumber: 9, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm9_1", - tournamentKey: "2024tuhc", - matchNumber: 9, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm9_2", - tournamentKey: "2024tuhc", - matchNumber: 9, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm10_3", - tournamentKey: "2024tuhc", - matchNumber: 10, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm10_4", - tournamentKey: "2024tuhc", - matchNumber: 10, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm10_5", - tournamentKey: "2024tuhc", - matchNumber: 10, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm10_0", - tournamentKey: "2024tuhc", - matchNumber: 10, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm10_1", - tournamentKey: "2024tuhc", - matchNumber: 10, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm10_2", - tournamentKey: "2024tuhc", - matchNumber: 10, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm11_3", - tournamentKey: "2024tuhc", - matchNumber: 11, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm11_4", - tournamentKey: "2024tuhc", - matchNumber: 11, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm11_5", - tournamentKey: "2024tuhc", - matchNumber: 11, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm11_0", - tournamentKey: "2024tuhc", - matchNumber: 11, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm11_1", - tournamentKey: "2024tuhc", - matchNumber: 11, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm11_2", - tournamentKey: "2024tuhc", - matchNumber: 11, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm12_3", - tournamentKey: "2024tuhc", - matchNumber: 12, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm12_4", - tournamentKey: "2024tuhc", - matchNumber: 12, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm12_5", - tournamentKey: "2024tuhc", - matchNumber: 12, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm12_0", - tournamentKey: "2024tuhc", - matchNumber: 12, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm12_1", - tournamentKey: "2024tuhc", - matchNumber: 12, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm12_2", - tournamentKey: "2024tuhc", - matchNumber: 12, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm13_3", - tournamentKey: "2024tuhc", - matchNumber: 13, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm13_4", - tournamentKey: "2024tuhc", - matchNumber: 13, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm13_5", - tournamentKey: "2024tuhc", - matchNumber: 13, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm13_0", - tournamentKey: "2024tuhc", - matchNumber: 13, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm13_1", - tournamentKey: "2024tuhc", - matchNumber: 13, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm13_2", - tournamentKey: "2024tuhc", - matchNumber: 13, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm14_3", - tournamentKey: "2024tuhc", - matchNumber: 14, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm14_4", - tournamentKey: "2024tuhc", - matchNumber: 14, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm14_5", - tournamentKey: "2024tuhc", - matchNumber: 14, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm14_0", - tournamentKey: "2024tuhc", - matchNumber: 14, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm14_1", - tournamentKey: "2024tuhc", - matchNumber: 14, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm14_2", - tournamentKey: "2024tuhc", - matchNumber: 14, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm15_3", - tournamentKey: "2024tuhc", - matchNumber: 15, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm15_4", - tournamentKey: "2024tuhc", - matchNumber: 15, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm15_5", - tournamentKey: "2024tuhc", - matchNumber: 15, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm15_0", - tournamentKey: "2024tuhc", - matchNumber: 15, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm15_1", - tournamentKey: "2024tuhc", - matchNumber: 15, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm15_2", - tournamentKey: "2024tuhc", - matchNumber: 15, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm16_3", - tournamentKey: "2024tuhc", - matchNumber: 16, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm16_4", - tournamentKey: "2024tuhc", - matchNumber: 16, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm16_5", - tournamentKey: "2024tuhc", - matchNumber: 16, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm16_0", - tournamentKey: "2024tuhc", - matchNumber: 16, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm16_1", - tournamentKey: "2024tuhc", - matchNumber: 16, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm16_2", - tournamentKey: "2024tuhc", - matchNumber: 16, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm17_3", - tournamentKey: "2024tuhc", - matchNumber: 17, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm17_4", - tournamentKey: "2024tuhc", - matchNumber: 17, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm17_5", - tournamentKey: "2024tuhc", - matchNumber: 17, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm17_0", - tournamentKey: "2024tuhc", - matchNumber: 17, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm17_1", - tournamentKey: "2024tuhc", - matchNumber: 17, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm17_2", - tournamentKey: "2024tuhc", - matchNumber: 17, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm18_3", - tournamentKey: "2024tuhc", - matchNumber: 18, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm18_4", - tournamentKey: "2024tuhc", - matchNumber: 18, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm18_5", - tournamentKey: "2024tuhc", - matchNumber: 18, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm18_0", - tournamentKey: "2024tuhc", - matchNumber: 18, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm18_1", - tournamentKey: "2024tuhc", - matchNumber: 18, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm18_2", - tournamentKey: "2024tuhc", - matchNumber: 18, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm19_3", - tournamentKey: "2024tuhc", - matchNumber: 19, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm19_4", - tournamentKey: "2024tuhc", - matchNumber: 19, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm19_5", - tournamentKey: "2024tuhc", - matchNumber: 19, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm19_0", - tournamentKey: "2024tuhc", - matchNumber: 19, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm19_1", - tournamentKey: "2024tuhc", - matchNumber: 19, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm19_2", - tournamentKey: "2024tuhc", - matchNumber: 19, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm20_3", - tournamentKey: "2024tuhc", - matchNumber: 20, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm20_4", - tournamentKey: "2024tuhc", - matchNumber: 20, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm20_5", - tournamentKey: "2024tuhc", - matchNumber: 20, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm20_0", - tournamentKey: "2024tuhc", - matchNumber: 20, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm20_1", - tournamentKey: "2024tuhc", - matchNumber: 20, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm20_2", - tournamentKey: "2024tuhc", - matchNumber: 20, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm21_3", - tournamentKey: "2024tuhc", - matchNumber: 21, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm21_4", - tournamentKey: "2024tuhc", - matchNumber: 21, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm21_5", - tournamentKey: "2024tuhc", - matchNumber: 21, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm21_0", - tournamentKey: "2024tuhc", - matchNumber: 21, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm21_1", - tournamentKey: "2024tuhc", - matchNumber: 21, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm21_2", - tournamentKey: "2024tuhc", - matchNumber: 21, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm22_3", - tournamentKey: "2024tuhc", - matchNumber: 22, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm22_4", - tournamentKey: "2024tuhc", - matchNumber: 22, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm22_5", - tournamentKey: "2024tuhc", - matchNumber: 22, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm22_0", - tournamentKey: "2024tuhc", - matchNumber: 22, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm22_1", - tournamentKey: "2024tuhc", - matchNumber: 22, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm22_2", - tournamentKey: "2024tuhc", - matchNumber: 22, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm23_3", - tournamentKey: "2024tuhc", - matchNumber: 23, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm23_4", - tournamentKey: "2024tuhc", - matchNumber: 23, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm23_5", - tournamentKey: "2024tuhc", - matchNumber: 23, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm23_0", - tournamentKey: "2024tuhc", - matchNumber: 23, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm23_1", - tournamentKey: "2024tuhc", - matchNumber: 23, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm23_2", - tournamentKey: "2024tuhc", - matchNumber: 23, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm24_3", - tournamentKey: "2024tuhc", - matchNumber: 24, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm24_4", - tournamentKey: "2024tuhc", - matchNumber: 24, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm24_5", - tournamentKey: "2024tuhc", - matchNumber: 24, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm24_0", - tournamentKey: "2024tuhc", - matchNumber: 24, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm24_1", - tournamentKey: "2024tuhc", - matchNumber: 24, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm24_2", - tournamentKey: "2024tuhc", - matchNumber: 24, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm25_3", - tournamentKey: "2024tuhc", - matchNumber: 25, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm25_4", - tournamentKey: "2024tuhc", - matchNumber: 25, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm25_5", - tournamentKey: "2024tuhc", - matchNumber: 25, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm25_0", - tournamentKey: "2024tuhc", - matchNumber: 25, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm25_1", - tournamentKey: "2024tuhc", - matchNumber: 25, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm25_2", - tournamentKey: "2024tuhc", - matchNumber: 25, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm26_3", - tournamentKey: "2024tuhc", - matchNumber: 26, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm26_4", - tournamentKey: "2024tuhc", - matchNumber: 26, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm26_5", - tournamentKey: "2024tuhc", - matchNumber: 26, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm26_0", - tournamentKey: "2024tuhc", - matchNumber: 26, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm26_1", - tournamentKey: "2024tuhc", - matchNumber: 26, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm26_2", - tournamentKey: "2024tuhc", - matchNumber: 26, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm27_3", - tournamentKey: "2024tuhc", - matchNumber: 27, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm27_4", - tournamentKey: "2024tuhc", - matchNumber: 27, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm27_5", - tournamentKey: "2024tuhc", - matchNumber: 27, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm27_0", - tournamentKey: "2024tuhc", - matchNumber: 27, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm27_1", - tournamentKey: "2024tuhc", - matchNumber: 27, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm27_2", - tournamentKey: "2024tuhc", - matchNumber: 27, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm28_3", - tournamentKey: "2024tuhc", - matchNumber: 28, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm28_4", - tournamentKey: "2024tuhc", - matchNumber: 28, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm28_5", - tournamentKey: "2024tuhc", - matchNumber: 28, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm28_0", - tournamentKey: "2024tuhc", - matchNumber: 28, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm28_1", - tournamentKey: "2024tuhc", - matchNumber: 28, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm28_2", - tournamentKey: "2024tuhc", - matchNumber: 28, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm29_3", - tournamentKey: "2024tuhc", - matchNumber: 29, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm29_4", - tournamentKey: "2024tuhc", - matchNumber: 29, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm29_5", - tournamentKey: "2024tuhc", - matchNumber: 29, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm29_0", - tournamentKey: "2024tuhc", - matchNumber: 29, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm29_1", - tournamentKey: "2024tuhc", - matchNumber: 29, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm29_2", - tournamentKey: "2024tuhc", - matchNumber: 29, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm30_3", - tournamentKey: "2024tuhc", - matchNumber: 30, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm30_4", - tournamentKey: "2024tuhc", - matchNumber: 30, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm30_5", - tournamentKey: "2024tuhc", - matchNumber: 30, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm30_0", - tournamentKey: "2024tuhc", - matchNumber: 30, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm30_1", - tournamentKey: "2024tuhc", - matchNumber: 30, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm30_2", - tournamentKey: "2024tuhc", - matchNumber: 30, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm31_3", - tournamentKey: "2024tuhc", - matchNumber: 31, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm31_4", - tournamentKey: "2024tuhc", - matchNumber: 31, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm31_5", - tournamentKey: "2024tuhc", - matchNumber: 31, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm31_0", - tournamentKey: "2024tuhc", - matchNumber: 31, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm31_1", - tournamentKey: "2024tuhc", - matchNumber: 31, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm31_2", - tournamentKey: "2024tuhc", - matchNumber: 31, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm32_3", - tournamentKey: "2024tuhc", - matchNumber: 32, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm32_4", - tournamentKey: "2024tuhc", - matchNumber: 32, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm32_5", - tournamentKey: "2024tuhc", - matchNumber: 32, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm32_0", - tournamentKey: "2024tuhc", - matchNumber: 32, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm32_1", - tournamentKey: "2024tuhc", - matchNumber: 32, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm32_2", - tournamentKey: "2024tuhc", - matchNumber: 32, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm33_3", - tournamentKey: "2024tuhc", - matchNumber: 33, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm33_4", - tournamentKey: "2024tuhc", - matchNumber: 33, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm33_5", - tournamentKey: "2024tuhc", - matchNumber: 33, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm33_0", - tournamentKey: "2024tuhc", - matchNumber: 33, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm33_1", - tournamentKey: "2024tuhc", - matchNumber: 33, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm33_2", - tournamentKey: "2024tuhc", - matchNumber: 33, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm34_3", - tournamentKey: "2024tuhc", - matchNumber: 34, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm34_4", - tournamentKey: "2024tuhc", - matchNumber: 34, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm34_5", - tournamentKey: "2024tuhc", - matchNumber: 34, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm34_0", - tournamentKey: "2024tuhc", - matchNumber: 34, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm34_1", - tournamentKey: "2024tuhc", - matchNumber: 34, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm34_2", - tournamentKey: "2024tuhc", - matchNumber: 34, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm35_3", - tournamentKey: "2024tuhc", - matchNumber: 35, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm35_4", - tournamentKey: "2024tuhc", - matchNumber: 35, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm35_5", - tournamentKey: "2024tuhc", - matchNumber: 35, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm35_0", - tournamentKey: "2024tuhc", - matchNumber: 35, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm35_1", - tournamentKey: "2024tuhc", - matchNumber: 35, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm35_2", - tournamentKey: "2024tuhc", - matchNumber: 35, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm36_3", - tournamentKey: "2024tuhc", - matchNumber: 36, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm36_4", - tournamentKey: "2024tuhc", - matchNumber: 36, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm36_5", - tournamentKey: "2024tuhc", - matchNumber: 36, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm36_0", - tournamentKey: "2024tuhc", - matchNumber: 36, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm36_1", - tournamentKey: "2024tuhc", - matchNumber: 36, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm36_2", - tournamentKey: "2024tuhc", - matchNumber: 36, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm37_3", - tournamentKey: "2024tuhc", - matchNumber: 37, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm37_4", - tournamentKey: "2024tuhc", - matchNumber: 37, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm37_5", - tournamentKey: "2024tuhc", - matchNumber: 37, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm37_0", - tournamentKey: "2024tuhc", - matchNumber: 37, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm37_1", - tournamentKey: "2024tuhc", - matchNumber: 37, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm37_2", - tournamentKey: "2024tuhc", - matchNumber: 37, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm38_3", - tournamentKey: "2024tuhc", - matchNumber: 38, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm38_4", - tournamentKey: "2024tuhc", - matchNumber: 38, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm38_5", - tournamentKey: "2024tuhc", - matchNumber: 38, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm38_0", - tournamentKey: "2024tuhc", - matchNumber: 38, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm38_1", - tournamentKey: "2024tuhc", - matchNumber: 38, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm38_2", - tournamentKey: "2024tuhc", - matchNumber: 38, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm39_3", - tournamentKey: "2024tuhc", - matchNumber: 39, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm39_4", - tournamentKey: "2024tuhc", - matchNumber: 39, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm39_5", - tournamentKey: "2024tuhc", - matchNumber: 39, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm39_0", - tournamentKey: "2024tuhc", - matchNumber: 39, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm39_1", - tournamentKey: "2024tuhc", - matchNumber: 39, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm39_2", - tournamentKey: "2024tuhc", - matchNumber: 39, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm40_3", - tournamentKey: "2024tuhc", - matchNumber: 40, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm40_4", - tournamentKey: "2024tuhc", - matchNumber: 40, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm40_5", - tournamentKey: "2024tuhc", - matchNumber: 40, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm40_0", - tournamentKey: "2024tuhc", - matchNumber: 40, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm40_1", - tournamentKey: "2024tuhc", - matchNumber: 40, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm40_2", - tournamentKey: "2024tuhc", - matchNumber: 40, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm41_3", - tournamentKey: "2024tuhc", - matchNumber: 41, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm41_4", - tournamentKey: "2024tuhc", - matchNumber: 41, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm41_5", - tournamentKey: "2024tuhc", - matchNumber: 41, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm41_0", - tournamentKey: "2024tuhc", - matchNumber: 41, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm41_1", - tournamentKey: "2024tuhc", - matchNumber: 41, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm41_2", - tournamentKey: "2024tuhc", - matchNumber: 41, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm42_3", - tournamentKey: "2024tuhc", - matchNumber: 42, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm42_4", - tournamentKey: "2024tuhc", - matchNumber: 42, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm42_5", - tournamentKey: "2024tuhc", - matchNumber: 42, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm42_0", - tournamentKey: "2024tuhc", - matchNumber: 42, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm42_1", - tournamentKey: "2024tuhc", - matchNumber: 42, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm42_2", - tournamentKey: "2024tuhc", - matchNumber: 42, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm43_3", - tournamentKey: "2024tuhc", - matchNumber: 43, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm43_4", - tournamentKey: "2024tuhc", - matchNumber: 43, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm43_5", - tournamentKey: "2024tuhc", - matchNumber: 43, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm43_0", - tournamentKey: "2024tuhc", - matchNumber: 43, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm43_1", - tournamentKey: "2024tuhc", - matchNumber: 43, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm43_2", - tournamentKey: "2024tuhc", - matchNumber: 43, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm44_3", - tournamentKey: "2024tuhc", - matchNumber: 44, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm44_4", - tournamentKey: "2024tuhc", - matchNumber: 44, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm44_5", - tournamentKey: "2024tuhc", - matchNumber: 44, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm44_0", - tournamentKey: "2024tuhc", - matchNumber: 44, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm44_1", - tournamentKey: "2024tuhc", - matchNumber: 44, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm44_2", - tournamentKey: "2024tuhc", - matchNumber: 44, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm45_3", - tournamentKey: "2024tuhc", - matchNumber: 45, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm45_4", - tournamentKey: "2024tuhc", - matchNumber: 45, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm45_5", - tournamentKey: "2024tuhc", - matchNumber: 45, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm45_0", - tournamentKey: "2024tuhc", - matchNumber: 45, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm45_1", - tournamentKey: "2024tuhc", - matchNumber: 45, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm45_2", - tournamentKey: "2024tuhc", - matchNumber: 45, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm46_3", - tournamentKey: "2024tuhc", - matchNumber: 46, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm46_4", - tournamentKey: "2024tuhc", - matchNumber: 46, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm46_5", - tournamentKey: "2024tuhc", - matchNumber: 46, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm46_0", - tournamentKey: "2024tuhc", - matchNumber: 46, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm46_1", - tournamentKey: "2024tuhc", - matchNumber: 46, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm46_2", - tournamentKey: "2024tuhc", - matchNumber: 46, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm47_3", - tournamentKey: "2024tuhc", - matchNumber: 47, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm47_4", - tournamentKey: "2024tuhc", - matchNumber: 47, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm47_5", - tournamentKey: "2024tuhc", - matchNumber: 47, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm47_0", - tournamentKey: "2024tuhc", - matchNumber: 47, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm47_1", - tournamentKey: "2024tuhc", - matchNumber: 47, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm47_2", - tournamentKey: "2024tuhc", - matchNumber: 47, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm48_3", - tournamentKey: "2024tuhc", - matchNumber: 48, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm48_4", - tournamentKey: "2024tuhc", - matchNumber: 48, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm48_5", - tournamentKey: "2024tuhc", - matchNumber: 48, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm48_0", - tournamentKey: "2024tuhc", - matchNumber: 48, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm48_1", - tournamentKey: "2024tuhc", - matchNumber: 48, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm48_2", - tournamentKey: "2024tuhc", - matchNumber: 48, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm49_3", - tournamentKey: "2024tuhc", - matchNumber: 49, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm49_4", - tournamentKey: "2024tuhc", - matchNumber: 49, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm49_5", - tournamentKey: "2024tuhc", - matchNumber: 49, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm49_0", - tournamentKey: "2024tuhc", - matchNumber: 49, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm49_1", - tournamentKey: "2024tuhc", - matchNumber: 49, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm49_2", - tournamentKey: "2024tuhc", - matchNumber: 49, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm50_3", - tournamentKey: "2024tuhc", - matchNumber: 50, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm50_4", - tournamentKey: "2024tuhc", - matchNumber: 50, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm50_5", - tournamentKey: "2024tuhc", - matchNumber: 50, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm50_0", - tournamentKey: "2024tuhc", - matchNumber: 50, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm50_1", - tournamentKey: "2024tuhc", - matchNumber: 50, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm50_2", - tournamentKey: "2024tuhc", - matchNumber: 50, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm51_3", - tournamentKey: "2024tuhc", - matchNumber: 51, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm51_4", - tournamentKey: "2024tuhc", - matchNumber: 51, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm51_5", - tournamentKey: "2024tuhc", - matchNumber: 51, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm51_0", - tournamentKey: "2024tuhc", - matchNumber: 51, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm51_1", - tournamentKey: "2024tuhc", - matchNumber: 51, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm51_2", - tournamentKey: "2024tuhc", - matchNumber: 51, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm52_3", - tournamentKey: "2024tuhc", - matchNumber: 52, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm52_4", - tournamentKey: "2024tuhc", - matchNumber: 52, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm52_5", - tournamentKey: "2024tuhc", - matchNumber: 52, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm52_0", - tournamentKey: "2024tuhc", - matchNumber: 52, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm52_1", - tournamentKey: "2024tuhc", - matchNumber: 52, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm52_2", - tournamentKey: "2024tuhc", - matchNumber: 52, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm53_3", - tournamentKey: "2024tuhc", - matchNumber: 53, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm53_4", - tournamentKey: "2024tuhc", - matchNumber: 53, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm53_5", - tournamentKey: "2024tuhc", - matchNumber: 53, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm53_0", - tournamentKey: "2024tuhc", - matchNumber: 53, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm53_1", - tournamentKey: "2024tuhc", - matchNumber: 53, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm53_2", - tournamentKey: "2024tuhc", - matchNumber: 53, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm54_3", - tournamentKey: "2024tuhc", - matchNumber: 54, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm54_4", - tournamentKey: "2024tuhc", - matchNumber: 54, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm54_5", - tournamentKey: "2024tuhc", - matchNumber: 54, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm54_0", - tournamentKey: "2024tuhc", - matchNumber: 54, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm54_1", - tournamentKey: "2024tuhc", - matchNumber: 54, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm54_2", - tournamentKey: "2024tuhc", - matchNumber: 54, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm55_3", - tournamentKey: "2024tuhc", - matchNumber: 55, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm55_4", - tournamentKey: "2024tuhc", - matchNumber: 55, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm55_5", - tournamentKey: "2024tuhc", - matchNumber: 55, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm55_0", - tournamentKey: "2024tuhc", - matchNumber: 55, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm55_1", - tournamentKey: "2024tuhc", - matchNumber: 55, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm55_2", - tournamentKey: "2024tuhc", - matchNumber: 55, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm56_3", - tournamentKey: "2024tuhc", - matchNumber: 56, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm56_4", - tournamentKey: "2024tuhc", - matchNumber: 56, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm56_5", - tournamentKey: "2024tuhc", - matchNumber: 56, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm56_0", - tournamentKey: "2024tuhc", - matchNumber: 56, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm56_1", - tournamentKey: "2024tuhc", - matchNumber: 56, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm56_2", - tournamentKey: "2024tuhc", - matchNumber: 56, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm57_3", - tournamentKey: "2024tuhc", - matchNumber: 57, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm57_4", - tournamentKey: "2024tuhc", - matchNumber: 57, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm57_5", - tournamentKey: "2024tuhc", - matchNumber: 57, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm57_0", - tournamentKey: "2024tuhc", - matchNumber: 57, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm57_1", - tournamentKey: "2024tuhc", - matchNumber: 57, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm57_2", - tournamentKey: "2024tuhc", - matchNumber: 57, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm58_3", - tournamentKey: "2024tuhc", - matchNumber: 58, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm58_4", - tournamentKey: "2024tuhc", - matchNumber: 58, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm58_5", - tournamentKey: "2024tuhc", - matchNumber: 58, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm58_0", - tournamentKey: "2024tuhc", - matchNumber: 58, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm58_1", - tournamentKey: "2024tuhc", - matchNumber: 58, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm58_2", - tournamentKey: "2024tuhc", - matchNumber: 58, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm59_3", - tournamentKey: "2024tuhc", - matchNumber: 59, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm59_4", - tournamentKey: "2024tuhc", - matchNumber: 59, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm59_5", - tournamentKey: "2024tuhc", - matchNumber: 59, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm59_0", - tournamentKey: "2024tuhc", - matchNumber: 59, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm59_1", - tournamentKey: "2024tuhc", - matchNumber: 59, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm59_2", - tournamentKey: "2024tuhc", - matchNumber: 59, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm60_3", - tournamentKey: "2024tuhc", - matchNumber: 60, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm60_4", - tournamentKey: "2024tuhc", - matchNumber: 60, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm60_5", - tournamentKey: "2024tuhc", - matchNumber: 60, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm60_0", - tournamentKey: "2024tuhc", - matchNumber: 60, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm60_1", - tournamentKey: "2024tuhc", - matchNumber: 60, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm60_2", - tournamentKey: "2024tuhc", - matchNumber: 60, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm61_3", - tournamentKey: "2024tuhc", - matchNumber: 61, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm61_4", - tournamentKey: "2024tuhc", - matchNumber: 61, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm61_5", - tournamentKey: "2024tuhc", - matchNumber: 61, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm61_0", - tournamentKey: "2024tuhc", - matchNumber: 61, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm61_1", - tournamentKey: "2024tuhc", - matchNumber: 61, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm61_2", - tournamentKey: "2024tuhc", - matchNumber: 61, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm62_3", - tournamentKey: "2024tuhc", - matchNumber: 62, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm62_4", - tournamentKey: "2024tuhc", - matchNumber: 62, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm62_5", - tournamentKey: "2024tuhc", - matchNumber: 62, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm62_0", - tournamentKey: "2024tuhc", - matchNumber: 62, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm62_1", - tournamentKey: "2024tuhc", - matchNumber: 62, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm62_2", - tournamentKey: "2024tuhc", - matchNumber: 62, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm63_3", - tournamentKey: "2024tuhc", - matchNumber: 63, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm63_4", - tournamentKey: "2024tuhc", - matchNumber: 63, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm63_5", - tournamentKey: "2024tuhc", - matchNumber: 63, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm63_0", - tournamentKey: "2024tuhc", - matchNumber: 63, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm63_1", - tournamentKey: "2024tuhc", - matchNumber: 63, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm63_2", - tournamentKey: "2024tuhc", - matchNumber: 63, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm64_3", - tournamentKey: "2024tuhc", - matchNumber: 64, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm64_4", - tournamentKey: "2024tuhc", - matchNumber: 64, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm64_5", - tournamentKey: "2024tuhc", - matchNumber: 64, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm64_0", - tournamentKey: "2024tuhc", - matchNumber: 64, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm64_1", - tournamentKey: "2024tuhc", - matchNumber: 64, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm64_2", - tournamentKey: "2024tuhc", - matchNumber: 64, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm65_3", - tournamentKey: "2024tuhc", - matchNumber: 65, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm65_4", - tournamentKey: "2024tuhc", - matchNumber: 65, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm65_5", - tournamentKey: "2024tuhc", - matchNumber: 65, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm65_0", - tournamentKey: "2024tuhc", - matchNumber: 65, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm65_1", - tournamentKey: "2024tuhc", - matchNumber: 65, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm65_2", - tournamentKey: "2024tuhc", - matchNumber: 65, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm66_3", - tournamentKey: "2024tuhc", - matchNumber: 66, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm66_4", - tournamentKey: "2024tuhc", - matchNumber: 66, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm66_5", - tournamentKey: "2024tuhc", - matchNumber: 66, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm66_0", - tournamentKey: "2024tuhc", - matchNumber: 66, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm66_1", - tournamentKey: "2024tuhc", - matchNumber: 66, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm66_2", - tournamentKey: "2024tuhc", - matchNumber: 66, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm67_3", - tournamentKey: "2024tuhc", - matchNumber: 67, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm67_4", - tournamentKey: "2024tuhc", - matchNumber: 67, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm67_5", - tournamentKey: "2024tuhc", - matchNumber: 67, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm67_0", - tournamentKey: "2024tuhc", - matchNumber: 67, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm67_1", - tournamentKey: "2024tuhc", - matchNumber: 67, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm67_2", - tournamentKey: "2024tuhc", - matchNumber: 67, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm68_3", - tournamentKey: "2024tuhc", - matchNumber: 68, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm68_4", - tournamentKey: "2024tuhc", - matchNumber: 68, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm68_5", - tournamentKey: "2024tuhc", - matchNumber: 68, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm68_0", - tournamentKey: "2024tuhc", - matchNumber: 68, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm68_1", - tournamentKey: "2024tuhc", - matchNumber: 68, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm68_2", - tournamentKey: "2024tuhc", - matchNumber: 68, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm69_3", - tournamentKey: "2024tuhc", - matchNumber: 69, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm69_4", - tournamentKey: "2024tuhc", - matchNumber: 69, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm69_5", - tournamentKey: "2024tuhc", - matchNumber: 69, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm69_0", - tournamentKey: "2024tuhc", - matchNumber: 69, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm69_1", - tournamentKey: "2024tuhc", - matchNumber: 69, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm69_2", - tournamentKey: "2024tuhc", - matchNumber: 69, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm70_3", - tournamentKey: "2024tuhc", - matchNumber: 70, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm70_4", - tournamentKey: "2024tuhc", - matchNumber: 70, - teamNumber: 9447, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm70_5", - tournamentKey: "2024tuhc", - matchNumber: 70, - teamNumber: 2905, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm70_0", - tournamentKey: "2024tuhc", - matchNumber: 70, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm70_1", - tournamentKey: "2024tuhc", - matchNumber: 70, - teamNumber: 9436, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm70_2", - tournamentKey: "2024tuhc", - matchNumber: 70, - teamNumber: 6874, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm71_3", - tournamentKey: "2024tuhc", - matchNumber: 71, - teamNumber: 9502, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm71_4", - tournamentKey: "2024tuhc", - matchNumber: 71, - teamNumber: 9281, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm71_5", - tournamentKey: "2024tuhc", - matchNumber: 71, - teamNumber: 9025, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm71_0", - tournamentKey: "2024tuhc", - matchNumber: 71, - teamNumber: 6429, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm71_1", - tournamentKey: "2024tuhc", - matchNumber: 71, - teamNumber: 5883, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm71_2", - tournamentKey: "2024tuhc", - matchNumber: 71, - teamNumber: 8308, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm72_3", - tournamentKey: "2024tuhc", - matchNumber: 72, - teamNumber: 6430, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm72_4", - tournamentKey: "2024tuhc", - matchNumber: 72, - teamNumber: 9690, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm72_5", - tournamentKey: "2024tuhc", - matchNumber: 72, - teamNumber: 9490, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm72_0", - tournamentKey: "2024tuhc", - matchNumber: 72, - teamNumber: 9247, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm72_1", - tournamentKey: "2024tuhc", - matchNumber: 72, - teamNumber: 3646, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm72_2", - tournamentKey: "2024tuhc", - matchNumber: 72, - teamNumber: 7086, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm73_3", - tournamentKey: "2024tuhc", - matchNumber: 73, - teamNumber: 7050, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm73_4", - tournamentKey: "2024tuhc", - matchNumber: 73, - teamNumber: 6415, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm73_5", - tournamentKey: "2024tuhc", - matchNumber: 73, - teamNumber: 6838, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm73_0", - tournamentKey: "2024tuhc", - matchNumber: 73, - teamNumber: 9231, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm73_1", - tournamentKey: "2024tuhc", - matchNumber: 73, - teamNumber: 6024, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm73_2", - tournamentKey: "2024tuhc", - matchNumber: 73, - teamNumber: 8158, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm74_3", - tournamentKey: "2024tuhc", - matchNumber: 74, - teamNumber: 7672, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm74_4", - tournamentKey: "2024tuhc", - matchNumber: 74, - teamNumber: 8058, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm74_5", - tournamentKey: "2024tuhc", - matchNumber: 74, - teamNumber: 6417, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm74_0", - tournamentKey: "2024tuhc", - matchNumber: 74, - teamNumber: 8084, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm74_1", - tournamentKey: "2024tuhc", - matchNumber: 74, - teamNumber: 9469, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm74_2", - tournamentKey: "2024tuhc", - matchNumber: 74, - teamNumber: 9591, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm75_3", - tournamentKey: "2024tuhc", - matchNumber: 75, - teamNumber: 7035, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm75_4", - tournamentKey: "2024tuhc", - matchNumber: 75, - teamNumber: 6064, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm75_5", - tournamentKey: "2024tuhc", - matchNumber: 75, - teamNumber: 9583, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm75_0", - tournamentKey: "2024tuhc", - matchNumber: 75, - teamNumber: 8220, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm75_1", - tournamentKey: "2024tuhc", - matchNumber: 75, - teamNumber: 9468, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm75_2", - tournamentKey: "2024tuhc", - matchNumber: 75, - teamNumber: 9070, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm76_3", - tournamentKey: "2024tuhc", - matchNumber: 76, - teamNumber: 7522, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm76_4", - tournamentKey: "2024tuhc", - matchNumber: 76, - teamNumber: 8777, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm76_5", - tournamentKey: "2024tuhc", - matchNumber: 76, - teamNumber: 9609, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm76_0", - tournamentKey: "2024tuhc", - matchNumber: 76, - teamNumber: 8557, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm76_1", - tournamentKey: "2024tuhc", - matchNumber: 76, - teamNumber: 8159, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm76_2", - tournamentKey: "2024tuhc", - matchNumber: 76, - teamNumber: 9625, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm77_3", - tournamentKey: "2024tuhc", - matchNumber: 77, - teamNumber: 9464, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm77_4", - tournamentKey: "2024tuhc", - matchNumber: 77, - teamNumber: 8173, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm77_5", - tournamentKey: "2024tuhc", - matchNumber: 77, - teamNumber: 6985, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm77_0", - tournamentKey: "2024tuhc", - matchNumber: 77, - teamNumber: 7575, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm77_1", - tournamentKey: "2024tuhc", - matchNumber: 77, - teamNumber: 9692, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm77_2", - tournamentKey: "2024tuhc", - matchNumber: 77, - teamNumber: 7444, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm78_3", - tournamentKey: "2024tuhc", - matchNumber: 78, - teamNumber: 8042, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm78_4", - tournamentKey: "2024tuhc", - matchNumber: 78, - teamNumber: 8214, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm78_5", - tournamentKey: "2024tuhc", - matchNumber: 78, - teamNumber: 9523, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm78_0", - tournamentKey: "2024tuhc", - matchNumber: 78, - teamNumber: 9565, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm78_1", - tournamentKey: "2024tuhc", - matchNumber: 78, - teamNumber: 4191, - matchType: "QUALIFICATION", - }, - { - key: "2024tuhc_qm78_2", - tournamentKey: "2024tuhc", - matchNumber: 78, - teamNumber: 8500, - matchType: "QUALIFICATION", - }, - ], - }); - res.status(200).send(rows); - } catch (error) { - console.error(error); - res.status(500).send(error); - } -}; diff --git a/src/handler/manager/addApiKey.ts b/src/handler/manager/apikey/addApiKey.ts similarity index 88% rename from src/handler/manager/addApiKey.ts rename to src/handler/manager/apikey/addApiKey.ts index 1499ea9d..beb7b593 100644 --- a/src/handler/manager/addApiKey.ts +++ b/src/handler/manager/apikey/addApiKey.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { createHash, randomBytes } from "crypto"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addApiKey = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getApiKeys.ts b/src/handler/manager/apikey/getApiKeys.ts similarity index 100% rename from src/handler/manager/getApiKeys.ts rename to src/handler/manager/apikey/getApiKeys.ts diff --git a/src/handler/manager/renameApiKey.ts b/src/handler/manager/apikey/renameApiKey.ts similarity index 100% rename from src/handler/manager/renameApiKey.ts rename to src/handler/manager/apikey/renameApiKey.ts diff --git a/src/handler/manager/revokeApiKey.ts b/src/handler/manager/apikey/revokeApiKey.ts similarity index 100% rename from src/handler/manager/revokeApiKey.ts rename to src/handler/manager/apikey/revokeApiKey.ts diff --git a/src/handler/manager/getMatches.ts b/src/handler/manager/getMatches.ts index 95a56e13..e246277c 100644 --- a/src/handler/manager/getMatches.ts +++ b/src/handler/manager/getMatches.ts @@ -3,18 +3,20 @@ import prismaClient from "../../prismaClient.js"; import z from "zod"; import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; import { addTournamentMatches } from "./addTournamentMatches.js"; -import { - MatchTypeMap, - MatchTypeToAbrivation, - ReverseMatchTypeMap, - ReverseScouterScheduleMap, - ScouterScheduleMap, -} from "./managerConstants.js"; +import { ReverseMatchTypeMap } from "./managerConstants.js"; +import { MatchType, Prisma } from "@prisma/client"; +import { swrConstant, ttlConstant } from "../analysis/analysisConstants.js"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, } from "../analysis/dataSourceRule.js"; +/** + * @param params.tournament tournament to pull from + * @param query.teams optional - limit to matches containing all these teams + * + * @returns list of matches organized by number and type, with data for teams/scouts/external reports + */ export const getMatches = async ( req: AuthenticatedRequest, res: Response, @@ -22,496 +24,409 @@ export const getMatches = async ( try { const user = req.user; let teams = null; - let isScouted = null; - //type check, convert isScouted to a boolean - if (req.query.isScouted != undefined) { - isScouted = req.query.isScouted === "true"; - } if (req.query.teams != undefined) { teams = JSON.parse(req.query.teams as string); } const params = z .object({ tournamentKey: z.string(), - teamNumbers: z.array(z.number()).nullable(), - isScouted: z.boolean().nullable(), + teamFilter: z.array(z.number()).nullable(), }) .safeParse({ tournamentKey: req.params.tournament, - teamNumbers: teams, - isScouted: isScouted, + teamFilter: teams, }); if (!params.success) { res.status(400).send(params); return; } - //get matches from tournament, check that tournament has been inserted. If not add it - const matchRows = await prismaClient.teamMatchData.findMany({ + if (params.data.teamFilter && params.data.teamFilter.length > 6) { + res.status(400).send("Too many team filters"); + return; + } + + // Check that matches from a tournament exist; if not, add them + const matchRow = await prismaClient.teamMatchData.findFirst({ where: { tournamentKey: params.data.tournamentKey, }, }); - if (matchRows.length === 0) { + if (!matchRow) { await addTournamentMatches(params.data.tournamentKey); } - //find scouted matches (using sourceTeam and isScouted ) - //get all matches regarless for ordinal number calculation later on - const qualMatches = await prismaClient.teamMatchData.findMany({ + // Assuming all elimination matches are not scouted, find the last scouted match (and pretend it is the last completed one) + const last = await prismaClient.teamMatchData.findFirst({ where: { tournamentKey: params.data.tournamentKey, - matchType: "QUALIFICATION", + matchType: MatchType.QUALIFICATION, + scoutReports: { + some: {}, + }, }, - orderBy: { - teamNumber: "asc", + orderBy: [{ matchNumber: "desc" }], + select: { + matchNumber: true, }, }); - if (qualMatches.length === 0) { - res - .status(404) - .send("The match schedule for this tournament hasn't been posted yet."); - return; + // Default to 0 + const lastFinishedMatch = last ? last.matchNumber : 0; + + // Filter to return a list of user's team's scout reports for each row, only valid if user has a team number + let includeTeamReports: Prisma.TeamMatchData$scoutReportsArgs | undefined = + undefined; + + const teamSourceRule = dataSourceRuleSchema(z.number()).parse( + req.user.teamSourceRule, + ); + + if (user.teamNumber) { + // make sure the user's teamSourceRule has their own team included + if (teamSourceRule.mode === "EXCLUDE") { + // if their source rule is exclude, make sure the user's team number isn't in items + teamSourceRule.items = teamSourceRule.items.filter( + (item) => item !== user.teamNumber, + ); + } else if ( + // if their mode is include, make sure the user's team number is on their list of items + teamSourceRule.mode === "INCLUDE" && + !teamSourceRule.items.includes(user.teamNumber) + ) { + teamSourceRule.items.push(user.teamNumber); + } + + includeTeamReports = { + where: { + scouter: { + sourceTeamNumber: user.teamNumber, + }, + }, + select: { + scouter: { + select: { + name: true, + uuid: true, + }, + }, + }, + }; } - const lastQualMatch = Number(qualMatches.length / 6); - //find non scouted matches (not scouted from user.sourceTeam) - const notScouted = await prismaClient.teamMatchData.findMany({ + const rawData = await prismaClient.teamMatchData.findMany({ + cacheStrategy: { + swr: swrConstant, + ttl: ttlConstant, + }, where: { tournamentKey: params.data.tournamentKey, - scoutReports: { - none: { - scouter: { - sourceTeamNumber: dataSourceRuleToPrismaFilter( - dataSourceRuleSchema(z.number()).parse(req.user.teamSourceRule), - ), + }, + select: { + matchNumber: true, + matchType: true, + teamNumber: true, + key: true, + _count: { + // Represents the total number of valid scout reports for this row + select: { + scoutReports: { + where: { + scouter: { + sourceTeamNumber: + dataSourceRuleToPrismaFilter(teamSourceRule), + }, + }, }, }, }, + scoutReports: includeTeamReports, }, - - orderBy: [{ matchType: "desc" }, { matchNumber: "asc" }], }); - //check to make sure each match has 6 rows, if not than 1 + rows have been scouted already - const groupedMatches = await notScouted.reduce((acc, match) => { - const key = `${match.matchNumber}-${match.matchType}`; - if (!acc[key]) { - acc[key] = []; - } - acc[key].push(match); + + /* + * SELECT matchNumber, matchType, teamNumber, key + * (SELECT COUNT(*) + * FROM scoutReports + * WHERE scouter.sourceTeamNumber IN (${[9143, 8033].join(",")})) AS _reports + * (SELECT COUNT(*) + * FROM scoutReports + * WHERE (NOT scouter.sourceTeamNumber = (${9143})) + * AND (scouter.sourceTeamNumber IN (${[9143, 8033].join(",")}))) AS _external + * FROM TeamMatchData + * WHERE tournamentKey = ${"2024casf"}; + */ + + // Group data by match (first layer, elimination matches are negative indices) and team (second layer, 0-5) + // !!!IMPORTANT: the scoutReports property only exists if user.teamNumber exists + let groupedData: { + matchNumber: number; + teamNumber: number; + matchType: MatchType; + key: string; + _count: { scoutReports: number }; + scoutReports: { scouter: { name: string; uuid: string } }[] | undefined; + }[][] = rawData.reduce((acc, curr) => { + // Positive indices are quals, negatives are elims + const i = + curr.matchNumber * (curr.matchType === MatchType.ELIMINATION ? -1 : 1); + acc[i] ??= []; + // Order match by team index [0-5] + acc[i][Number(curr.key.at(-1))] = curr; return acc; - }, {}); + }, []); - // find matches with less than 6 rows - const groupsToKeep = Object.keys(groupedMatches).filter( - (key) => groupedMatches[key].length >= 6, - ); + const lastQualMatch = groupedData.length - 1; - // remove unwanted matches - const nonScoutedMatches = notScouted.filter((match) => { - const key = `${match.matchNumber}-${match.matchType}`; - return groupsToKeep.includes(key); - }); + // If team filters are set, limit matches to those including all selected teams + if (params.data.teamFilter && params.data.teamFilter.length > 0) { + const tempArray: typeof groupedData = []; - const scoutedMatches = await prismaClient.teamMatchData.findMany({ - where: { - tournamentKey: params.data.tournamentKey, - key: { - notIn: nonScoutedMatches.map((item) => item.key), - }, - }, - }); - //get just the matchNumber + matchType for matches scouted and unscouted speratly - let matchKeyAndNumber = []; - if ( - params.data.isScouted === null || - params.data.isScouted === undefined || - params.data.isScouted - ) { - const matchKeyAndNumberScouted = await prismaClient.teamMatchData.groupBy( - { - by: ["matchNumber", "matchType"], - where: { - tournamentKey: params.data.tournamentKey, - key: { - in: scoutedMatches.map((item) => item.key), - }, - }, - orderBy: [{ matchType: "desc" }, { matchNumber: "asc" }], - }, - ); - matchKeyAndNumber = matchKeyAndNumber.concat( - matchKeyAndNumberScouted.map((match) => ({ ...match, scouted: true })), - ); + // For..in to iterate over positive and negative properties + for (const k in groupedData) { + const i = parseInt(k); + const match = groupedData[i]; + if ( + params.data.teamFilter.every((requiredTeam) => + match.find((team) => team.teamNumber === requiredTeam), + ) + ) { + // Check that all required teams are included in a match + tempArray[i] = match; + } + } + + groupedData = tempArray; } - if ( - params.data.isScouted === null || - params.data.isScouted === undefined || - !params.data.isScouted - ) { - const matchKeyAndNumberUnScouted = - await prismaClient.teamMatchData.groupBy({ - by: ["matchNumber", "matchType"], - where: { - tournamentKey: params.data.tournamentKey, - key: { - in: nonScoutedMatches.map((item) => item.key), - }, + + // Fetch data for matches and attach scouted and finished flags + const finalFormattedMatches: { + matchNumber: number; + matchType: number; + scouted: boolean; + finished: boolean; + team1: { + number: number; + scouters: { name: string; scouted: boolean }[]; + externalReports: number; + }; + team2: { + number: number; + scouters: { name: string; scouted: boolean }[]; + externalReports: number; + }; + team3: { + number: number; + scouters: { name: string; scouted: boolean }[]; + externalReports: number; + }; + team4: { + number: number; + scouters: { name: string; scouted: boolean }[]; + externalReports: number; + }; + team5: { + number: number; + scouters: { name: string; scouted: boolean }[]; + externalReports: number; + }; + team6: { + number: number; + scouters: { name: string; scouted: boolean }[]; + externalReports: number; + }; + }[] = []; + + // If no team number is set, there are no scouters and all reports are external + if (!user.teamNumber) { + for (const k in groupedData) { + const i = parseInt(k); + const match = groupedData[i]; + const currData = { + matchNumber: match[0].matchNumber, + matchType: ReverseMatchTypeMap[match[0].matchType], + scouted: match.some((team) => team._count.scoutReports >= 1), + finished: + match[0].matchType === MatchType.QUALIFICATION && + match[0].matchNumber <= lastFinishedMatch, + team1: { + number: match[0].teamNumber, + scouters: [], + externalReports: match[0]._count.scoutReports, }, - _count: { - _all: true, + team2: { + number: match[1].teamNumber, + scouters: [], + externalReports: match[1]._count.scoutReports, }, - orderBy: [{ matchType: "asc" }, { matchNumber: "asc" }], - }); - matchKeyAndNumber = matchKeyAndNumber.concat( - matchKeyAndNumberUnScouted.map((match) => ({ - ...match, - scouted: false, - })), - ); - } - //assuming scouted matches always come before non scouted, add sort to comfim that - let finalMatches = []; - if ( - params.data.teamNumbers && - params.data.teamNumbers.length > 0 && - params.data.teamNumbers.length <= 6 - ) { - for (const currMatchKeyAndNumber of matchKeyAndNumber) { - const currMatch = await prismaClient.teamMatchData.findMany({ - where: { - matchNumber: currMatchKeyAndNumber.matchNumber, - matchType: currMatchKeyAndNumber.matchType, - tournamentKey: params.data.tournamentKey, + team3: { + number: match[2].teamNumber, + scouters: [], + externalReports: match[2]._count.scoutReports, }, - }); - const currMatchTeamNumbers = currMatch.map((match) => match.teamNumber); - const allTeamsPresent = params.data.teamNumbers.every((teamNumber) => - currMatchTeamNumbers.includes(teamNumber), - ); - if (allTeamsPresent) { - finalMatches.push(currMatchKeyAndNumber); + team4: { + number: match[3].teamNumber, + scouters: [], + externalReports: match[3]._count.scoutReports, + }, + team5: { + number: match[4].teamNumber, + scouters: [], + externalReports: match[4]._count.scoutReports, + }, + team6: { + number: match[5].teamNumber, + scouters: [], + externalReports: match[5]._count.scoutReports, + }, + }; + + // Index = ordinal match number, 0 indexed + if (i > 0) { + finalFormattedMatches[i - 1] = currData; + } else { + finalFormattedMatches[lastQualMatch - i - 1] = currData; } } - } else if ( - params.data.teamNumbers === null || - params.data.teamNumbers === undefined || - params.data.teamNumbers.length === 0 - ) { - finalMatches = matchKeyAndNumber; + + res.status(200).send(finalFormattedMatches); + return; } - //sort - finalMatches.sort((a, b) => { - if (a.matchType < b.matchType) return 1; - if (a.matchType > b.matchType) return -1; - return a.matchNumber - b.matchNumber; + // Done here if user has no team number + + const scouterShifts = await prismaClient.scouterScheduleShift.findMany({ + where: { + tournamentKey: params.data.tournamentKey, + sourceTeamNumber: user.teamNumber, + }, + orderBy: [{ startMatchOrdinalNumber: "asc" }], + select: { + startMatchOrdinalNumber: true, + endMatchOrdinalNumber: true, + team1: { select: { name: true, uuid: true } }, + team2: { select: { name: true, uuid: true } }, + team3: { select: { name: true, uuid: true } }, + team4: { select: { name: true, uuid: true } }, + team5: { select: { name: true, uuid: true } }, + team6: { select: { name: true, uuid: true } }, + }, }); - const finalFormatedMatches = []; - //change into proper format once we know all the matches we are including - for (const element of finalMatches) { - let currMatch = await prismaClient.teamMatchData.findMany({ - where: { - matchNumber: element.matchNumber, - matchType: element.matchType, - tournamentKey: params.data.tournamentKey, - }, - }); - if (currMatch.length != 6) { - res - .status(400) - .send( - `Matches not added correctly, does not have 6 teams for match ${element.matchNumber} of type ${element.matchType}`, - ); - return; + let currShiftIndex = 0; + // For..in should iterate through array indices first, then other properties by insertion order + for (const k in groupedData) { + const i = parseInt(k); + const match = groupedData[i]; + const ordinalMatchNumber = i > 0 ? i : lastQualMatch - i; + + // Increment the scouter shift if we passed the upper bound + if ( + scouterShifts[currShiftIndex] && + ordinalMatchNumber > scouterShifts[currShiftIndex].endMatchOrdinalNumber + ) { + currShiftIndex++; } - //sort by 0, 1, 2, 3, 4, 5 in case its out of order - currMatch = currMatch.sort((a, b) => { - const lastDigitA = parseInt(a.key[a.key.length - 1]); - const lastDigitB = parseInt(b.key[b.key.length - 1]); - return lastDigitA - lastDigitB; - }); + + const matchScouters: { name: string; scouted: boolean }[][] = []; + for (let j = 0; j < 6; j++) { + // Add all complete scout reports from user's team + matchScouters[j] = match[j].scoutReports.map((e) => ({ + name: e.scouter.name, + scouted: true, + })); + + // If the current match number is within a scouter shift, add incomplete scout reports + if ( + scouterShifts[currShiftIndex] && + ordinalMatchNumber >= + scouterShifts[currShiftIndex].startMatchOrdinalNumber + ) { + // Sketchy but iterates through team1-6, could cause problems if schema is changed + for (const currScouter of scouterShifts[currShiftIndex][ + `team${j + 1}` + ]) { + // If the sourced scout reports do not include ones from the shift, add those as incomplete + if ( + !match[j].scoutReports.some( + (e) => e.scouter.uuid === currScouter.uuid, + ) + ) { + matchScouters[j].push({ name: currScouter.name, scouted: false }); + } + } + } + } + + // Scouted flag based on if any team in this match has at least 1 sourced scout report + // Finished flag is true if the match is a qualification before the last finished match + // Scouters array includes all scouters from user's team, and all incomplete reports from assigned scouting shifts + // External reports are the number of non-team scout reports, so [other team reports - user team reports] const currData = { - tournamentKey: params.data.tournamentKey, - matchNumber: element.matchNumber, - matchType: ReverseMatchTypeMap[element.matchType], - scouted: element.scouted, + matchNumber: match[0].matchNumber, + matchType: ReverseMatchTypeMap[match[0].matchType], + scouted: match.some((team) => team._count.scoutReports >= 1), + finished: + match[0].matchType === MatchType.QUALIFICATION && + match[0].matchNumber <= lastFinishedMatch, team1: { - number: currMatch[0].teamNumber, - alliance: "red", - scouters: [], - externalReports: 0, + number: match[0].teamNumber, + scouters: matchScouters[0], + externalReports: + match[0]._count.scoutReports - match[0].scoutReports.length, }, team2: { - number: currMatch[1].teamNumber, - alliance: "red", - scouters: [], - externalReports: 0, + number: match[1].teamNumber, + scouters: matchScouters[1], + externalReports: + match[1]._count.scoutReports - match[1].scoutReports.length, }, team3: { - number: currMatch[2].teamNumber, - alliance: "red", - scouters: [], - externalReports: 0, + number: match[2].teamNumber, + scouters: matchScouters[2], + externalReports: + match[2]._count.scoutReports - match[2].scoutReports.length, }, team4: { - number: currMatch[3].teamNumber, - alliance: "blue", - scouters: [], - externalReports: 0, + number: match[3].teamNumber, + scouters: matchScouters[3], + externalReports: + match[3]._count.scoutReports - match[3].scoutReports.length, }, team5: { - number: currMatch[4].teamNumber, - alliance: "blue", - scouters: [], - externalReports: 0, + number: match[4].teamNumber, + scouters: matchScouters[4], + externalReports: + match[4]._count.scoutReports - match[4].scoutReports.length, }, team6: { - number: currMatch[5].teamNumber, - alliance: "blue", - scouters: [], - externalReports: 0, + number: match[5].teamNumber, + scouters: matchScouters[5], + externalReports: + match[5]._count.scoutReports - match[5].scoutReports.length, }, }; - finalFormatedMatches.push(currData); - } - const promises = []; - if (user.teamNumber) { - const scouterShifts = await prismaClient.scouterScheduleShift.findMany({ - where: { - tournamentKey: params.data.tournamentKey, - sourceTeamNumber: user.teamNumber, - }, - orderBy: [{ startMatchOrdinalNumber: "asc" }], - include: { - team1: true, - team2: true, - team3: true, - team4: true, - team5: true, - team6: true, - }, - }); - if (scouterShifts.length !== 0) { - for (const element of finalFormatedMatches) { - let scoutersExist = true; - //if its an elimination match get the ordinal number, so that we can compare it to the scouterShift start/end - let matchNumber = element.matchNumber; - if (element.matchType === 1) { - matchNumber += lastQualMatch; - } - //move onto correct shift - let currIndex = 0; - while (scouterShifts[currIndex].endMatchOrdinalNumber < matchNumber) { - currIndex += 1; - if (currIndex >= scouterShifts.length) { - scoutersExist = false; - break; - } - } - if ( - scoutersExist && - scouterShifts[currIndex].startMatchOrdinalNumber > matchNumber - ) { - scoutersExist = false; - } - if (scoutersExist) { - promises.push( - addScoutedTeam(req, scouterShifts, currIndex, "team1", element), - ); - promises.push( - addScoutedTeam(req, scouterShifts, currIndex, "team2", element), - ); - promises.push( - addScoutedTeam(req, scouterShifts, currIndex, "team3", element), - ); - promises.push( - addScoutedTeam(req, scouterShifts, currIndex, "team4", element), - ); - promises.push( - addScoutedTeam(req, scouterShifts, currIndex, "team5", element), - ); - promises.push( - addScoutedTeam(req, scouterShifts, currIndex, "team6", element), - ); - } else { - promises.push(addScoutedTeamNotOnSchedule(req, "team1", element)); - promises.push(addScoutedTeamNotOnSchedule(req, "team2", element)); - promises.push(addScoutedTeamNotOnSchedule(req, "team3", element)); - promises.push(addScoutedTeamNotOnSchedule(req, "team4", element)); - promises.push(addScoutedTeamNotOnSchedule(req, "team5", element)); - promises.push(addScoutedTeamNotOnSchedule(req, "team6", element)); - } - if (element.scouted) { - promises.push(addExternalReports(req, element)); - } - } - } else { - for (const match of finalFormatedMatches) { - promises.push(addScoutedTeamNotOnSchedule(req, "team1", match)); - promises.push(addScoutedTeamNotOnSchedule(req, "team2", match)); - promises.push(addScoutedTeamNotOnSchedule(req, "team3", match)); - promises.push(addScoutedTeamNotOnSchedule(req, "team4", match)); - promises.push(addScoutedTeamNotOnSchedule(req, "team5", match)); - promises.push(addScoutedTeamNotOnSchedule(req, "team6", match)); - if (match.scouted) { - await addExternalReports(req, match); - } - } - } - } else { - for (const match of finalFormatedMatches) { - promises.push(addExternalReports(req, match)); - } - } - - await Promise.all(promises); - res.status(200).send(finalFormatedMatches); - } catch (error) { - res.status(500).send(error); - } -}; -//problem: will push to all 6 teams -async function addScoutedTeamNotOnSchedule( - req: AuthenticatedRequest, - team: string, - match, - scouterShifts = null, - currIndex = -1, -) { - try { - const key = - match.tournamentKey + - "_" + - MatchTypeToAbrivation[match.matchType] + - match.matchNumber + - "_" + - ReverseScouterScheduleMap[team]; - if (scouterShifts !== null && currIndex !== -1) { - const rows = await prismaClient.scoutReport.findMany({ - where: { - teamMatchData: { - key: key, - }, - scouterUuid: { - notIn: scouterShifts[currIndex][team].map((item) => item.uuid), - }, - scouter: { - sourceTeamNumber: req.user.teamNumber, - }, - }, - include: { - scouter: true, - }, - }); - for (const scoutReport of rows) { - await match[team].scouters.push({ - name: scoutReport.scouter.name, - scouted: true, - }); - } - } else { - const rows = await prismaClient.scoutReport.findMany({ - where: { - teamMatchData: { - key: key, - }, - scouter: { - sourceTeamNumber: req.user.teamNumber, - }, - }, - include: { - scouter: true, - }, - }); + // Ordered by ordinal match number, 0 indexed + finalFormattedMatches[ordinalMatchNumber - 1] = currData; + } - for (const scoutReport of rows) { - await match[team].scouters.push({ - name: scoutReport.scouter.name, - scouted: true, - }); - } + if (!params.data.teamFilter) { + res.status(200).send(finalFormattedMatches); + return; } - return true; - } catch (error) { - throw error; - } -} -async function addScoutedTeam( - req: AuthenticatedRequest, - scouterShifts, - currIndex: number, - team: string, - match, -) { - try { - const key = - match.tournamentKey + - "_" + - MatchTypeToAbrivation[match.matchType] + - match.matchNumber + - "_" + - ReverseScouterScheduleMap[team]; - for (const scouter of scouterShifts[currIndex][team]) { - const rows = await prismaClient.scoutReport.findMany({ - where: { - scouterUuid: scouter.uuid, - teamMatchKey: key, - }, - }); - if (rows !== null && rows.length > 0) { - for (const element of rows) { - await match[team].scouters.push({ - name: scouter.name, - scouted: true, - }); + // If teams are filtered, the array will be sparse and has to be condensed + const denseFormattedMatches: typeof finalFormattedMatches = []; + if (params.data.teamFilter) { + for (const match of finalFormattedMatches) { + if (match) { + denseFormattedMatches.push(match); } - } else { - await match[team].scouters.push({ name: scouter.name, scouted: false }); } } - await addScoutedTeamNotOnSchedule( - req, - team, - match, - scouterShifts, - currIndex, - ); - return true; + + res.status(200).send(denseFormattedMatches); } catch (error) { - throw error; + console.log(error); + res.status(500).send(error); } -} -async function addExternalReports(req: AuthenticatedRequest, match) { - //don't use null for "not" in prisma below - const teamNumber = req.user.teamNumber || 0; - const externalReports = await prismaClient.scoutReport.groupBy({ - by: ["teamMatchKey"], - _count: { - _all: true, - }, - where: { - teamMatchData: { - tournamentKey: match.tournamentKey, - matchType: MatchTypeMap[match.matchType], - matchNumber: match.matchNumber, - }, - scouter: { - sourceTeamNumber: dataSourceRuleToPrismaFilter( - dataSourceRuleSchema(z.number()).parse(req.user.teamSourceRule), - ), - }, - }, - }); - - await externalReports.forEach((externalReport) => { - const team = - ScouterScheduleMap[ - externalReport.teamMatchKey[externalReport.teamMatchKey.length - 1] - ]; - match[team].externalReports = externalReport._count._all; - }); - return true; -} +}; diff --git a/src/handler/manager/getMatchesFaster.ts b/src/handler/manager/getMatchesFaster.ts deleted file mode 100644 index 3a7972f2..00000000 --- a/src/handler/manager/getMatchesFaster.ts +++ /dev/null @@ -1,318 +0,0 @@ -import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { addTournamentMatches } from "./addTournamentMatches.js"; -import { - MatchTypeMap, - MatchTypeToAbrivation, - ReverseMatchTypeMap, - ReverseScouterScheduleMap, - ScouterScheduleMap, -} from "./managerConstants"; -import { - dataSourceRuleSchema, - dataSourceRuleToArray, - dataSourceRuleToPrismaFilter, -} from "../analysis/dataSourceRule.js"; -import { allTeamNumbers } from "../analysis/analysisConstants.js"; -//maybe faster??? -export const getMatches = async ( - req: AuthenticatedRequest, - res: Response, -): Promise => { - try { - const user = req.user; - const teamNumber = user.teamNumber || 0; - - // parse and validate - const isScouted = - req.query.isScouted !== undefined ? req.query.isScouted === "true" : null; - const teams = - req.query.teams !== undefined - ? JSON.parse(req.query.teams as string) - : null; - - const params = z - .object({ - tournamentKey: z.string(), - teamNumbers: z.array(z.number()).nullable(), - isScouted: z.boolean().nullable(), - }) - .safeParse({ - tournamentKey: req.params.tournament, - teamNumbers: teams, - isScouted: isScouted, - }); - if (!params.success) { - res.status(400).send(params); - return; - } - //check that matches are added - const matchExists = await prismaClient.teamMatchData.findFirst({ - where: { tournamentKey: params.data.tournamentKey }, - }); - if (!matchExists) { - await addTournamentMatches(params.data.tournamentKey); - } - - //get all matches - const allMatches = await prismaClient.teamMatchData.findMany({ - where: { - tournamentKey: params.data.tournamentKey, - }, - include: { - scoutReports: { - include: { - scouter: true, - }, - }, - }, - }); - - if (allMatches.length === 0) { - res - .status(404) - .send("The match schedule for this tournament hasn't been posted yet."); - return; - } - - //match type - interface GroupedMatch { - matchNumber: number; - matchType: string; - tournamentKey: string; - teams: { - teamNumber: number; - alliance: string; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - teamPosition: string; // team1, team2, etc. - }[]; - scoutReports: (typeof allMatches)[0]["scoutReports"]; - } - - const groupedMatches = allMatches.reduce( - (acc, match) => { - const key = `${match.matchNumber}-${match.matchType}`; - if (!acc[key]) { - acc[key] = { - matchNumber: match.matchNumber, - matchType: match.matchType, - tournamentKey: match.tournamentKey, - teams: [], - scoutReports: [], - } as GroupedMatch; - } - - const teamPosition = - ScouterScheduleMap[match.key[match.key.length - 1]]; - const alliance = - parseInt(match.key[match.key.length - 1]) < 3 ? "red" : "blue"; - - acc[key].teams.push({ - teamNumber: match.teamNumber, - alliance: alliance, - scouters: [], - externalReports: 0, - teamPosition: teamPosition, - }); - - acc[key].scoutReports.push(...match.scoutReports); - return acc; - }, - {} as Record, - ); - - let finalMatches = Object.values(groupedMatches); - - //filter matches on team numbers (if needed) - if ( - params.data.teamNumbers && - params.data.teamNumbers.length > 0 && - params.data.teamNumbers.length <= 6 - ) { - finalMatches = finalMatches.filter((match) => { - const teamNumbers = match.teams.map((team) => team.teamNumber); - return params.data.teamNumbers!.every((num) => - teamNumbers.includes(num), - ); - }); - } - - const teamNumbers = await allTeamNumbers; - - //filter matches by scouted or not, if provided - if (params.data.isScouted !== null) { - finalMatches = finalMatches.filter((match) => { - const scouted = match.scoutReports.some((report) => - dataSourceRuleToArray( - dataSourceRuleSchema(z.number()).parse(req.user.teamSourceRule), - teamNumbers, - ).includes(report.scouter.sourceTeamNumber), - ); - return params.data.isScouted ? scouted : !scouted; - }); - } - - //sory matches by type, Qual first elim after - finalMatches.sort((a, b) => { - if (a.matchType < b.matchType) return 1; - if (a.matchType > b.matchType) return -1; - return a.matchNumber - b.matchNumber; - }); - - const finalFormatedMatches = finalMatches.map((match) => { - const teams = match.teams.sort((a, b) => - a.teamPosition.localeCompare(b.teamPosition), - ); - - return { - tournamentKey: match.tournamentKey, - matchNumber: match.matchNumber, - matchType: ReverseMatchTypeMap[match.matchType], - scouted: match.scoutReports.some((report) => - dataSourceRuleToArray( - dataSourceRuleSchema(z.number()).parse(user.teamSourceRule), - teamNumbers, - ).includes(report.scouter.sourceTeamNumber), - ), - team1: teams.find((team) => team.teamPosition === "team1"), - team2: teams.find((team) => team.teamPosition === "team2"), - team3: teams.find((team) => team.teamPosition === "team3"), - team4: teams.find((team) => team.teamPosition === "team4"), - team5: teams.find((team) => team.teamPosition === "team5"), - team6: teams.find((team) => team.teamPosition === "team6"), - }; - }); - - //get scouter shifts - let scouterShifts = []; - if (user.teamNumber) { - scouterShifts = await prismaClient.scouterScheduleShift.findMany({ - where: { - tournamentKey: params.data.tournamentKey, - sourceTeamNumber: user.teamNumber, - }, - include: { - team1: true, - team2: true, - team3: true, - team4: true, - team5: true, - team6: true, - }, - }); - } - - const scoutReports = await prismaClient.scoutReport.findMany({ - where: { - teamMatchData: { - tournamentKey: params.data.tournamentKey, - }, - scouter: { - sourceTeamNumber: user.teamNumber, // only include scouters from user's team - }, - }, - include: { - scouter: true, - teamMatchData: true, - }, - }); - - const externalReports = await prismaClient.scoutReport.groupBy({ - by: ["teamMatchKey"], - _count: { - _all: true, - }, - where: { - teamMatchData: { - tournamentKey: params.data.tournamentKey, - }, - scouter: { - sourceTeamNumber: dataSourceRuleToPrismaFilter( - dataSourceRuleSchema(z.number()).parse(req.user.teamSourceRule), - ), - }, - }, - }); - - const externalReportsMap = externalReports.reduce( - (acc, report) => { - acc[report.teamMatchKey] = report._count._all; - return acc; - }, - {} as Record, - ); - - const scouterShiftsMap = scouterShifts.reduce( - (acc, shift) => { - for (let i = 1; i <= 6; i++) { - const teamKey = `team${i}` as keyof typeof shift; - shift[teamKey]?.forEach((scouter) => { - acc[scouter.uuid] = scouter.name; - }); - } - return acc; - }, - {} as Record, - ); - - //update matches w scouter info - for (const match of finalFormatedMatches) { - for (let i = 1; i <= 6; i++) { - const teamKey = `team${i}` as keyof typeof match; - const team = match[teamKey]; - - if (!team) continue; - - //add scouters from user's team - const teamScoutReports = scoutReports.filter( - (report) => - report.teamMatchData.key.endsWith( - ReverseScouterScheduleMap[teamKey as string], - ) && - report.teamMatchData.matchNumber === match.matchNumber && - report.teamMatchData.matchType === MatchTypeMap[match.matchType], - ); - - team.scouters = teamScoutReports.map((report) => ({ - name: report.scouter.name, - scouted: true, - })); - - if (user.teamNumber) { - const assignedShifts = scouterShifts.filter( - (shift) => - shift.startMatchOrdinalNumber <= match.matchNumber && - shift.endMatchOrdinalNumber >= match.matchNumber, - ); - - const assignedScouters = assignedShifts - .flatMap((shift) => shift[teamKey] || []) - .filter((scouter) => scouter.sourceTeamNumber === user.teamNumber); - - assignedScouters.forEach((scouter) => { - if ( - !team.scouters.some( - (s) => s.name === scouter.name && s.scouted === true, - ) - ) { - team.scouters.push({ name: scouter.name, scouted: false }); - } - }); - } - - const teamMatchKey = `${match.tournamentKey}_${ - MatchTypeToAbrivation[match.matchType] - }${match.matchNumber}_${ReverseScouterScheduleMap[teamKey as string]}`; - team.externalReports = externalReportsMap[teamMatchKey] || 0; - } - } - - res.status(200).send(finalFormatedMatches); - } catch (error) { - console.log(error); - res.status(500).send(error); - } -}; diff --git a/src/handler/manager/getMatchesNew.ts b/src/handler/manager/getMatchesNew.ts deleted file mode 100644 index e246277c..00000000 --- a/src/handler/manager/getMatchesNew.ts +++ /dev/null @@ -1,432 +0,0 @@ -import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { addTournamentMatches } from "./addTournamentMatches.js"; -import { ReverseMatchTypeMap } from "./managerConstants.js"; -import { MatchType, Prisma } from "@prisma/client"; -import { swrConstant, ttlConstant } from "../analysis/analysisConstants.js"; -import { - dataSourceRuleSchema, - dataSourceRuleToPrismaFilter, -} from "../analysis/dataSourceRule.js"; - -/** - * @param params.tournament tournament to pull from - * @param query.teams optional - limit to matches containing all these teams - * - * @returns list of matches organized by number and type, with data for teams/scouts/external reports - */ -export const getMatches = async ( - req: AuthenticatedRequest, - res: Response, -): Promise => { - try { - const user = req.user; - let teams = null; - if (req.query.teams != undefined) { - teams = JSON.parse(req.query.teams as string); - } - const params = z - .object({ - tournamentKey: z.string(), - teamFilter: z.array(z.number()).nullable(), - }) - .safeParse({ - tournamentKey: req.params.tournament, - teamFilter: teams, - }); - if (!params.success) { - res.status(400).send(params); - return; - } - - if (params.data.teamFilter && params.data.teamFilter.length > 6) { - res.status(400).send("Too many team filters"); - return; - } - - // Check that matches from a tournament exist; if not, add them - const matchRow = await prismaClient.teamMatchData.findFirst({ - where: { - tournamentKey: params.data.tournamentKey, - }, - }); - if (!matchRow) { - await addTournamentMatches(params.data.tournamentKey); - } - - // Assuming all elimination matches are not scouted, find the last scouted match (and pretend it is the last completed one) - const last = await prismaClient.teamMatchData.findFirst({ - where: { - tournamentKey: params.data.tournamentKey, - matchType: MatchType.QUALIFICATION, - scoutReports: { - some: {}, - }, - }, - orderBy: [{ matchNumber: "desc" }], - select: { - matchNumber: true, - }, - }); - // Default to 0 - const lastFinishedMatch = last ? last.matchNumber : 0; - - // Filter to return a list of user's team's scout reports for each row, only valid if user has a team number - let includeTeamReports: Prisma.TeamMatchData$scoutReportsArgs | undefined = - undefined; - - const teamSourceRule = dataSourceRuleSchema(z.number()).parse( - req.user.teamSourceRule, - ); - - if (user.teamNumber) { - // make sure the user's teamSourceRule has their own team included - if (teamSourceRule.mode === "EXCLUDE") { - // if their source rule is exclude, make sure the user's team number isn't in items - teamSourceRule.items = teamSourceRule.items.filter( - (item) => item !== user.teamNumber, - ); - } else if ( - // if their mode is include, make sure the user's team number is on their list of items - teamSourceRule.mode === "INCLUDE" && - !teamSourceRule.items.includes(user.teamNumber) - ) { - teamSourceRule.items.push(user.teamNumber); - } - - includeTeamReports = { - where: { - scouter: { - sourceTeamNumber: user.teamNumber, - }, - }, - select: { - scouter: { - select: { - name: true, - uuid: true, - }, - }, - }, - }; - } - - const rawData = await prismaClient.teamMatchData.findMany({ - cacheStrategy: { - swr: swrConstant, - ttl: ttlConstant, - }, - where: { - tournamentKey: params.data.tournamentKey, - }, - select: { - matchNumber: true, - matchType: true, - teamNumber: true, - key: true, - _count: { - // Represents the total number of valid scout reports for this row - select: { - scoutReports: { - where: { - scouter: { - sourceTeamNumber: - dataSourceRuleToPrismaFilter(teamSourceRule), - }, - }, - }, - }, - }, - scoutReports: includeTeamReports, - }, - }); - - /* - * SELECT matchNumber, matchType, teamNumber, key - * (SELECT COUNT(*) - * FROM scoutReports - * WHERE scouter.sourceTeamNumber IN (${[9143, 8033].join(",")})) AS _reports - * (SELECT COUNT(*) - * FROM scoutReports - * WHERE (NOT scouter.sourceTeamNumber = (${9143})) - * AND (scouter.sourceTeamNumber IN (${[9143, 8033].join(",")}))) AS _external - * FROM TeamMatchData - * WHERE tournamentKey = ${"2024casf"}; - */ - - // Group data by match (first layer, elimination matches are negative indices) and team (second layer, 0-5) - // !!!IMPORTANT: the scoutReports property only exists if user.teamNumber exists - let groupedData: { - matchNumber: number; - teamNumber: number; - matchType: MatchType; - key: string; - _count: { scoutReports: number }; - scoutReports: { scouter: { name: string; uuid: string } }[] | undefined; - }[][] = rawData.reduce((acc, curr) => { - // Positive indices are quals, negatives are elims - const i = - curr.matchNumber * (curr.matchType === MatchType.ELIMINATION ? -1 : 1); - acc[i] ??= []; - // Order match by team index [0-5] - acc[i][Number(curr.key.at(-1))] = curr; - return acc; - }, []); - - const lastQualMatch = groupedData.length - 1; - - // If team filters are set, limit matches to those including all selected teams - if (params.data.teamFilter && params.data.teamFilter.length > 0) { - const tempArray: typeof groupedData = []; - - // For..in to iterate over positive and negative properties - for (const k in groupedData) { - const i = parseInt(k); - const match = groupedData[i]; - if ( - params.data.teamFilter.every((requiredTeam) => - match.find((team) => team.teamNumber === requiredTeam), - ) - ) { - // Check that all required teams are included in a match - tempArray[i] = match; - } - } - - groupedData = tempArray; - } - - // Fetch data for matches and attach scouted and finished flags - const finalFormattedMatches: { - matchNumber: number; - matchType: number; - scouted: boolean; - finished: boolean; - team1: { - number: number; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - }; - team2: { - number: number; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - }; - team3: { - number: number; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - }; - team4: { - number: number; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - }; - team5: { - number: number; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - }; - team6: { - number: number; - scouters: { name: string; scouted: boolean }[]; - externalReports: number; - }; - }[] = []; - - // If no team number is set, there are no scouters and all reports are external - if (!user.teamNumber) { - for (const k in groupedData) { - const i = parseInt(k); - const match = groupedData[i]; - const currData = { - matchNumber: match[0].matchNumber, - matchType: ReverseMatchTypeMap[match[0].matchType], - scouted: match.some((team) => team._count.scoutReports >= 1), - finished: - match[0].matchType === MatchType.QUALIFICATION && - match[0].matchNumber <= lastFinishedMatch, - team1: { - number: match[0].teamNumber, - scouters: [], - externalReports: match[0]._count.scoutReports, - }, - team2: { - number: match[1].teamNumber, - scouters: [], - externalReports: match[1]._count.scoutReports, - }, - team3: { - number: match[2].teamNumber, - scouters: [], - externalReports: match[2]._count.scoutReports, - }, - team4: { - number: match[3].teamNumber, - scouters: [], - externalReports: match[3]._count.scoutReports, - }, - team5: { - number: match[4].teamNumber, - scouters: [], - externalReports: match[4]._count.scoutReports, - }, - team6: { - number: match[5].teamNumber, - scouters: [], - externalReports: match[5]._count.scoutReports, - }, - }; - - // Index = ordinal match number, 0 indexed - if (i > 0) { - finalFormattedMatches[i - 1] = currData; - } else { - finalFormattedMatches[lastQualMatch - i - 1] = currData; - } - } - - res.status(200).send(finalFormattedMatches); - return; - } - // Done here if user has no team number - - const scouterShifts = await prismaClient.scouterScheduleShift.findMany({ - where: { - tournamentKey: params.data.tournamentKey, - sourceTeamNumber: user.teamNumber, - }, - orderBy: [{ startMatchOrdinalNumber: "asc" }], - select: { - startMatchOrdinalNumber: true, - endMatchOrdinalNumber: true, - team1: { select: { name: true, uuid: true } }, - team2: { select: { name: true, uuid: true } }, - team3: { select: { name: true, uuid: true } }, - team4: { select: { name: true, uuid: true } }, - team5: { select: { name: true, uuid: true } }, - team6: { select: { name: true, uuid: true } }, - }, - }); - - let currShiftIndex = 0; - // For..in should iterate through array indices first, then other properties by insertion order - for (const k in groupedData) { - const i = parseInt(k); - const match = groupedData[i]; - const ordinalMatchNumber = i > 0 ? i : lastQualMatch - i; - - // Increment the scouter shift if we passed the upper bound - if ( - scouterShifts[currShiftIndex] && - ordinalMatchNumber > scouterShifts[currShiftIndex].endMatchOrdinalNumber - ) { - currShiftIndex++; - } - - const matchScouters: { name: string; scouted: boolean }[][] = []; - for (let j = 0; j < 6; j++) { - // Add all complete scout reports from user's team - matchScouters[j] = match[j].scoutReports.map((e) => ({ - name: e.scouter.name, - scouted: true, - })); - - // If the current match number is within a scouter shift, add incomplete scout reports - if ( - scouterShifts[currShiftIndex] && - ordinalMatchNumber >= - scouterShifts[currShiftIndex].startMatchOrdinalNumber - ) { - // Sketchy but iterates through team1-6, could cause problems if schema is changed - for (const currScouter of scouterShifts[currShiftIndex][ - `team${j + 1}` - ]) { - // If the sourced scout reports do not include ones from the shift, add those as incomplete - if ( - !match[j].scoutReports.some( - (e) => e.scouter.uuid === currScouter.uuid, - ) - ) { - matchScouters[j].push({ name: currScouter.name, scouted: false }); - } - } - } - } - - // Scouted flag based on if any team in this match has at least 1 sourced scout report - // Finished flag is true if the match is a qualification before the last finished match - // Scouters array includes all scouters from user's team, and all incomplete reports from assigned scouting shifts - // External reports are the number of non-team scout reports, so [other team reports - user team reports] - const currData = { - matchNumber: match[0].matchNumber, - matchType: ReverseMatchTypeMap[match[0].matchType], - scouted: match.some((team) => team._count.scoutReports >= 1), - finished: - match[0].matchType === MatchType.QUALIFICATION && - match[0].matchNumber <= lastFinishedMatch, - team1: { - number: match[0].teamNumber, - scouters: matchScouters[0], - externalReports: - match[0]._count.scoutReports - match[0].scoutReports.length, - }, - team2: { - number: match[1].teamNumber, - scouters: matchScouters[1], - externalReports: - match[1]._count.scoutReports - match[1].scoutReports.length, - }, - team3: { - number: match[2].teamNumber, - scouters: matchScouters[2], - externalReports: - match[2]._count.scoutReports - match[2].scoutReports.length, - }, - team4: { - number: match[3].teamNumber, - scouters: matchScouters[3], - externalReports: - match[3]._count.scoutReports - match[3].scoutReports.length, - }, - team5: { - number: match[4].teamNumber, - scouters: matchScouters[4], - externalReports: - match[4]._count.scoutReports - match[4].scoutReports.length, - }, - team6: { - number: match[5].teamNumber, - scouters: matchScouters[5], - externalReports: - match[5]._count.scoutReports - match[5].scoutReports.length, - }, - }; - - // Ordered by ordinal match number, 0 indexed - finalFormattedMatches[ordinalMatchNumber - 1] = currData; - } - - if (!params.data.teamFilter) { - res.status(200).send(finalFormattedMatches); - return; - } - - // If teams are filtered, the array will be sparse and has to be condensed - const denseFormattedMatches: typeof finalFormattedMatches = []; - if (params.data.teamFilter) { - for (const match of finalFormattedMatches) { - if (match) { - denseFormattedMatches.push(match); - } - } - } - - res.status(200).send(denseFormattedMatches); - } catch (error) { - console.log(error); - res.status(500).send(error); - } -}; diff --git a/src/handler/manager/getScouterSchedule.ts b/src/handler/manager/getScouterSchedule.ts deleted file mode 100644 index a46a7a2f..00000000 --- a/src/handler/manager/getScouterSchedule.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import SHA256 from "crypto-js/sha256.js"; - -export const getScouterSchedule = async ( - req: AuthenticatedRequest, - res: Response, -): Promise => { - try { - const params = z - .object({ - tournament: z.string(), - }) - .safeParse({ - tournament: req.params.tournament, - }); - if (!params.success) { - res.status(400).send(params); - return; - } - if (req.user.teamNumber === null) { - res.status(403).send("User is not affilated with a team"); - return; - } - const rows = await prismaClient.scouterScheduleShift.findMany({ - where: { - sourceTeamNumber: req.user.teamNumber, - tournamentKey: params.data.tournament, - }, - include: { - team1: { - select: { - name: true, - uuid: true, - }, - }, - team2: { - select: { - name: true, - uuid: true, - }, - }, - team3: { - select: { - name: true, - uuid: true, - }, - }, - team4: { - select: { - name: true, - uuid: true, - }, - }, - team5: { - select: { - name: true, - uuid: true, - }, - }, - team6: { - select: { - name: true, - uuid: true, - }, - }, - }, - orderBy: { - startMatchOrdinalNumber: "asc", - }, - }); - - res.status(200).send({ hash: hashJsonObject(rows), data: rows }); - } catch (error) { - console.error(error); - res.status(500).send(error); - } -}; -function hashJsonObject(json: object): string { - const jsonString = JSON.stringify(json); - - const hash = SHA256(jsonString); - - return hash.toString(); -} diff --git a/src/handler/manager/addMutablePicklist.ts b/src/handler/manager/mutablepicklists/addMutablePicklist.ts similarity index 100% rename from src/handler/manager/addMutablePicklist.ts rename to src/handler/manager/mutablepicklists/addMutablePicklist.ts diff --git a/src/handler/manager/deleteMutablePicklist.ts b/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts similarity index 100% rename from src/handler/manager/deleteMutablePicklist.ts rename to src/handler/manager/mutablepicklists/deleteMutablePicklist.ts diff --git a/src/handler/manager/getMutablePicklists.ts b/src/handler/manager/mutablepicklists/getMutablePicklists.ts similarity index 86% rename from src/handler/manager/getMutablePicklists.ts rename to src/handler/manager/mutablepicklists/getMutablePicklists.ts index 483ce749..a0d81987 100644 --- a/src/handler/manager/getMutablePicklists.ts +++ b/src/handler/manager/mutablepicklists/getMutablePicklists.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const getMutablePicklists = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getSingleMutablePicklist.ts b/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts similarity index 100% rename from src/handler/manager/getSingleMutablePicklist.ts rename to src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts diff --git a/src/handler/manager/updateMutablePicklist.ts b/src/handler/manager/mutablepicklists/updateMutablePicklist.ts similarity index 100% rename from src/handler/manager/updateMutablePicklist.ts rename to src/handler/manager/mutablepicklists/updateMutablePicklist.ts diff --git a/src/handler/manager/addUsername.ts b/src/handler/manager/onboarding/addUsername.ts similarity index 77% rename from src/handler/manager/addUsername.ts rename to src/handler/manager/onboarding/addUsername.ts index 346cff2d..c3e1b6fa 100644 --- a/src/handler/manager/addUsername.ts +++ b/src/handler/manager/onboarding/addUsername.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addUsername = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/addWebsite.ts b/src/handler/manager/onboarding/addWebsite.ts similarity index 81% rename from src/handler/manager/addWebsite.ts rename to src/handler/manager/onboarding/addWebsite.ts index 3f740b32..ddb2b94b 100644 --- a/src/handler/manager/addWebsite.ts +++ b/src/handler/manager/onboarding/addWebsite.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { sendSlackVerification } from "./sendSlackVerification.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { sendSlackVerification } from "../sendSlackVerification.js"; export const addWebsite = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/approveTeamEmail.ts b/src/handler/manager/onboarding/approveTeamEmail.ts similarity index 96% rename from src/handler/manager/approveTeamEmail.ts rename to src/handler/manager/onboarding/approveTeamEmail.ts index 0a50611e..0b34ca8b 100644 --- a/src/handler/manager/approveTeamEmail.ts +++ b/src/handler/manager/onboarding/approveTeamEmail.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; diff --git a/src/handler/manager/checkCode.ts b/src/handler/manager/onboarding/checkCode.ts similarity index 88% rename from src/handler/manager/checkCode.ts rename to src/handler/manager/onboarding/checkCode.ts index 865093da..d03347fd 100644 --- a/src/handler/manager/checkCode.ts +++ b/src/handler/manager/onboarding/checkCode.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const checkCode = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/resendEmail.ts b/src/handler/manager/onboarding/resendEmail.ts similarity index 91% rename from src/handler/manager/resendEmail.ts rename to src/handler/manager/onboarding/resendEmail.ts index 9fe0b908..830fbf40 100644 --- a/src/handler/manager/resendEmail.ts +++ b/src/handler/manager/onboarding/resendEmail.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { Resend } from "resend"; import { randomBytes } from "crypto"; import { DateTime } from "luxon"; diff --git a/src/handler/manager/addPicklist.ts b/src/handler/manager/picklists/addPicklist.ts similarity index 100% rename from src/handler/manager/addPicklist.ts rename to src/handler/manager/picklists/addPicklist.ts diff --git a/src/handler/manager/deletePicklist.ts b/src/handler/manager/picklists/deletePicklist.ts similarity index 100% rename from src/handler/manager/deletePicklist.ts rename to src/handler/manager/picklists/deletePicklist.ts diff --git a/src/handler/manager/getPicklists.ts b/src/handler/manager/picklists/getPicklists.ts similarity index 100% rename from src/handler/manager/getPicklists.ts rename to src/handler/manager/picklists/getPicklists.ts diff --git a/src/handler/manager/getSinglePicklist.ts b/src/handler/manager/picklists/getSinglePicklist.ts similarity index 100% rename from src/handler/manager/getSinglePicklist.ts rename to src/handler/manager/picklists/getSinglePicklist.ts diff --git a/src/handler/manager/updatePicklist.ts b/src/handler/manager/picklists/updatePicklist.ts similarity index 100% rename from src/handler/manager/updatePicklist.ts rename to src/handler/manager/picklists/updatePicklist.ts diff --git a/src/handler/manager/addRegisteredTeam.ts b/src/handler/manager/registeredteams/addRegisteredTeam.ts similarity index 100% rename from src/handler/manager/addRegisteredTeam.ts rename to src/handler/manager/registeredteams/addRegisteredTeam.ts diff --git a/src/handler/manager/approveRegisteredTeam.ts b/src/handler/manager/registeredteams/approveRegisteredTeam.ts similarity index 100% rename from src/handler/manager/approveRegisteredTeam.ts rename to src/handler/manager/registeredteams/approveRegisteredTeam.ts diff --git a/src/handler/manager/checkRegisteredTeam.ts b/src/handler/manager/registeredteams/checkRegisteredTeam.ts similarity index 100% rename from src/handler/manager/checkRegisteredTeam.ts rename to src/handler/manager/registeredteams/checkRegisteredTeam.ts diff --git a/src/handler/manager/rejectRegisteredTeam.ts b/src/handler/manager/registeredteams/rejectRegisteredTeam.ts similarity index 100% rename from src/handler/manager/rejectRegisteredTeam.ts rename to src/handler/manager/registeredteams/rejectRegisteredTeam.ts diff --git a/src/handler/manager/addNewScouter.ts b/src/handler/manager/scouters/addNewScouter.ts similarity index 100% rename from src/handler/manager/addNewScouter.ts rename to src/handler/manager/scouters/addNewScouter.ts diff --git a/src/handler/manager/addScouterDashboard.ts b/src/handler/manager/scouters/addScouterDashboard.ts similarity index 100% rename from src/handler/manager/addScouterDashboard.ts rename to src/handler/manager/scouters/addScouterDashboard.ts diff --git a/src/handler/manager/archiveScouter.ts b/src/handler/manager/scouters/archiveScouter.ts similarity index 87% rename from src/handler/manager/archiveScouter.ts rename to src/handler/manager/scouters/archiveScouter.ts index fffeca09..6c7b38b3 100644 --- a/src/handler/manager/archiveScouter.ts +++ b/src/handler/manager/scouters/archiveScouter.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const archiveScouter = async ( diff --git a/src/handler/manager/changeNameScouter.ts b/src/handler/manager/scouters/changeNameScouter.ts similarity index 94% rename from src/handler/manager/changeNameScouter.ts rename to src/handler/manager/scouters/changeNameScouter.ts index 72d01004..b6c0d327 100644 --- a/src/handler/manager/changeNameScouter.ts +++ b/src/handler/manager/scouters/changeNameScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const changeNameScouter = async ( diff --git a/src/handler/manager/checkCodeScouter.ts b/src/handler/manager/scouters/checkCodeScouter.ts similarity index 94% rename from src/handler/manager/checkCodeScouter.ts rename to src/handler/manager/scouters/checkCodeScouter.ts index e39a10dc..b08454c8 100644 --- a/src/handler/manager/checkCodeScouter.ts +++ b/src/handler/manager/scouters/checkCodeScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const checkCodeScouter = async ( diff --git a/src/handler/manager/deleteScouter.ts b/src/handler/manager/scouters/deleteScouter.ts similarity index 100% rename from src/handler/manager/deleteScouter.ts rename to src/handler/manager/scouters/deleteScouter.ts diff --git a/src/handler/manager/emailTeamCode.ts b/src/handler/manager/scouters/emailTeamCode.ts similarity index 95% rename from src/handler/manager/emailTeamCode.ts rename to src/handler/manager/scouters/emailTeamCode.ts index 7bc6cc94..b7652cda 100644 --- a/src/handler/manager/emailTeamCode.ts +++ b/src/handler/manager/scouters/emailTeamCode.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; import z from "zod"; import { Resend } from "resend"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; export const emailTeamCode = async ( req: Request, diff --git a/src/handler/manager/getScheduleForScouter.ts b/src/handler/manager/scouters/getScheduleForScouter.ts similarity index 95% rename from src/handler/manager/getScheduleForScouter.ts rename to src/handler/manager/scouters/getScheduleForScouter.ts index cf4fd109..50325b88 100644 --- a/src/handler/manager/getScheduleForScouter.ts +++ b/src/handler/manager/scouters/getScheduleForScouter.ts @@ -1,9 +1,9 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { MatchTypeMap, ScouterScheduleMap } from "./managerConstants.js"; +import { MatchTypeMap, ScouterScheduleMap } from "../managerConstants.js"; import SHA256 from "crypto-js/sha256.js"; -import { addTournamentMatches } from "./addTournamentMatches.js"; +import { addTournamentMatches } from "../addTournamentMatches.js"; export const getScheduleForScouter = async ( req: Request, diff --git a/src/handler/manager/getScouterTournaments.ts b/src/handler/manager/scouters/getScouterTournaments.ts similarity index 99% rename from src/handler/manager/getScouterTournaments.ts rename to src/handler/manager/scouters/getScouterTournaments.ts index 353a421c..626072a9 100644 --- a/src/handler/manager/getScouterTournaments.ts +++ b/src/handler/manager/scouters/getScouterTournaments.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getScouterTournaments = async ( diff --git a/src/handler/manager/getScouters.ts b/src/handler/manager/scouters/getScouters.ts similarity index 98% rename from src/handler/manager/getScouters.ts rename to src/handler/manager/scouters/getScouters.ts index d86e81a5..6218fae1 100644 --- a/src/handler/manager/getScouters.ts +++ b/src/handler/manager/scouters/getScouters.ts @@ -5,7 +5,7 @@ import z from "zod"; export const getScouters = async ( req: AuthenticatedRequest, - res: Response + res: Response, ): Promise => { try { const params = z diff --git a/src/handler/manager/getScoutersOnTeam.ts b/src/handler/manager/scouters/getScoutersOnTeam.ts similarity index 94% rename from src/handler/manager/getScoutersOnTeam.ts rename to src/handler/manager/scouters/getScoutersOnTeam.ts index a3933c71..d7a393e7 100644 --- a/src/handler/manager/getScoutersOnTeam.ts +++ b/src/handler/manager/scouters/getScoutersOnTeam.ts @@ -1,10 +1,10 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getScoutersOnTeam = async ( req: Request, - res: Response + res: Response, ): Promise => { try { console.log(req.headers); diff --git a/src/handler/manager/getTournamentForScouterWithSchedule.ts b/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts similarity index 95% rename from src/handler/manager/getTournamentForScouterWithSchedule.ts rename to src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts index f1f5dbc6..03905ca5 100644 --- a/src/handler/manager/getTournamentForScouterWithSchedule.ts +++ b/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getTournamentForScouterWithSchedule = async ( diff --git a/src/handler/manager/scoutingLeadProgressPage.ts b/src/handler/manager/scouters/scoutingLeadProgressPage.ts similarity index 97% rename from src/handler/manager/scoutingLeadProgressPage.ts rename to src/handler/manager/scouters/scoutingLeadProgressPage.ts index 5f48ec45..5fb7598c 100644 --- a/src/handler/manager/scoutingLeadProgressPage.ts +++ b/src/handler/manager/scouters/scoutingLeadProgressPage.ts @@ -1,11 +1,11 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const scoutingLeadProgressPage = async ( req: AuthenticatedRequest, - res: Response + res: Response, ): Promise => { try { const params = z @@ -147,7 +147,7 @@ export const scoutingLeadProgressPage = async ( matchesScouted: matchesScoutedAtTournament.length, missedMatches: Math.max( 0, - totalAssignedScouterMatches - matchesScoutedAtTournament.length + totalAssignedScouterMatches - matchesScoutedAtTournament.length, ), }; result.push(currData); diff --git a/src/handler/manager/unarchiveScouter.ts b/src/handler/manager/scouters/unarchiveScouter.ts similarity index 100% rename from src/handler/manager/unarchiveScouter.ts rename to src/handler/manager/scouters/unarchiveScouter.ts diff --git a/src/handler/manager/updateRoleToScoutingLead.ts b/src/handler/manager/scouters/updateRoleToScoutingLead.ts similarity index 100% rename from src/handler/manager/updateRoleToScoutingLead.ts rename to src/handler/manager/scouters/updateRoleToScoutingLead.ts diff --git a/src/handler/manager/updateScouterName.ts b/src/handler/manager/scouters/updateScouterName.ts similarity index 91% rename from src/handler/manager/updateScouterName.ts rename to src/handler/manager/scouters/updateScouterName.ts index d9c9b3fd..8cfb95a5 100644 --- a/src/handler/manager/updateScouterName.ts +++ b/src/handler/manager/scouters/updateScouterName.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const updateScouterName = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/checkScouterShiftMatches.ts b/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts similarity index 92% rename from src/handler/manager/checkScouterShiftMatches.ts rename to src/handler/manager/scoutershifts/checkScouterShiftMatches.ts index fedb2d13..635c5996 100644 --- a/src/handler/manager/checkScouterShiftMatches.ts +++ b/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts @@ -1,5 +1,5 @@ -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; //uuid is when editing a shift so it doesnt check that its over lapping with itself export const checkScouterShiftMatches = async ( diff --git a/src/handler/manager/deleteScouterShift.ts b/src/handler/manager/scoutershifts/deleteScouterShift.ts similarity index 89% rename from src/handler/manager/deleteScouterShift.ts rename to src/handler/manager/scoutershifts/deleteScouterShift.ts index 3090f0f7..61447b99 100644 --- a/src/handler/manager/deleteScouterShift.ts +++ b/src/handler/manager/scoutershifts/deleteScouterShift.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const deleteScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/updateScouterShift.ts b/src/handler/manager/scoutershifts/updateScouterShift.ts similarity index 94% rename from src/handler/manager/updateScouterShift.ts rename to src/handler/manager/scoutershifts/updateScouterShift.ts index 08326dfa..0552af0d 100644 --- a/src/handler/manager/updateScouterShift.ts +++ b/src/handler/manager/scoutershifts/updateScouterShift.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { checkScouterShiftMatches } from "./checkScouterShiftMatches.js"; -import { checkOnlyOneInstanceOfScouter } from "./checkOnlyInstanceOfScouter.js"; +import { checkOnlyOneInstanceOfScouter } from "../checkOnlyInstanceOfScouter.js"; export const updateScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/addScoutReport.ts b/src/handler/manager/scoutreports/addScoutReport.ts similarity index 100% rename from src/handler/manager/addScoutReport.ts rename to src/handler/manager/scoutreports/addScoutReport.ts diff --git a/src/handler/manager/addScoutReportDashboard.ts b/src/handler/manager/scoutreports/addScoutReportDashboard.ts similarity index 100% rename from src/handler/manager/addScoutReportDashboard.ts rename to src/handler/manager/scoutreports/addScoutReportDashboard.ts diff --git a/src/handler/manager/deleteScoutReport.ts b/src/handler/manager/scoutreports/deleteScoutReport.ts similarity index 100% rename from src/handler/manager/deleteScoutReport.ts rename to src/handler/manager/scoutreports/deleteScoutReport.ts diff --git a/src/handler/manager/getScoutReport.ts b/src/handler/manager/scoutreports/getScoutReport.ts similarity index 100% rename from src/handler/manager/getScoutReport.ts rename to src/handler/manager/scoutreports/getScoutReport.ts diff --git a/src/handler/manager/addTeamSource.ts b/src/handler/manager/settings/addTeamSource.ts similarity index 100% rename from src/handler/manager/addTeamSource.ts rename to src/handler/manager/settings/addTeamSource.ts diff --git a/src/handler/manager/addTournamentSource.ts b/src/handler/manager/settings/addTournamentSource.ts similarity index 100% rename from src/handler/manager/addTournamentSource.ts rename to src/handler/manager/settings/addTournamentSource.ts diff --git a/src/handler/manager/getTeamSource.ts b/src/handler/manager/settings/getTeamSource.ts similarity index 100% rename from src/handler/manager/getTeamSource.ts rename to src/handler/manager/settings/getTeamSource.ts diff --git a/src/handler/manager/getTournamentSource.ts b/src/handler/manager/settings/getTournamentSource.ts similarity index 73% rename from src/handler/manager/getTournamentSource.ts rename to src/handler/manager/settings/getTournamentSource.ts index e9c0e962..41748439 100644 --- a/src/handler/manager/getTournamentSource.ts +++ b/src/handler/manager/settings/getTournamentSource.ts @@ -1,10 +1,10 @@ import { Response } from "express"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "../analysis/dataSourceRule.js"; -import { allTournaments } from "../analysis/analysisConstants.js"; +} from "../../analysis/dataSourceRule.js"; +import { allTournaments } from "../../analysis/analysisConstants.js"; import z from "zod"; export const getTournamentSource = async ( diff --git a/src/handler/manager/updateSettings.ts b/src/handler/manager/settings/updateSettings.ts similarity index 100% rename from src/handler/manager/updateSettings.ts rename to src/handler/manager/settings/updateSettings.ts diff --git a/src/handler/manager/updateTeamEmail.ts b/src/handler/manager/settings/updateTeamEmail.ts similarity index 80% rename from src/handler/manager/updateTeamEmail.ts rename to src/handler/manager/settings/updateTeamEmail.ts index 6789be66..ccfc6e90 100644 --- a/src/handler/manager/updateTeamEmail.ts +++ b/src/handler/manager/settings/updateTeamEmail.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { sendVerificationEmail } from "./resendEmail.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { sendVerificationEmail } from "../onboarding/resendEmail.js"; export const updateTeamEmail = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/addNotOnTeam.ts b/src/handler/manager/temp/addNotOnTeam.ts similarity index 78% rename from src/handler/manager/addNotOnTeam.ts rename to src/handler/manager/temp/addNotOnTeam.ts index 302321bc..ea8c6c32 100644 --- a/src/handler/manager/addNotOnTeam.ts +++ b/src/handler/manager/temp/addNotOnTeam.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addNotOnTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/addScouterShift.ts b/src/handler/manager/tournament/addScouterShift.ts similarity index 91% rename from src/handler/manager/addScouterShift.ts rename to src/handler/manager/tournament/addScouterShift.ts index b69b8294..9e59de6b 100644 --- a/src/handler/manager/addScouterShift.ts +++ b/src/handler/manager/tournament/addScouterShift.ts @@ -1,10 +1,10 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; -import { checkOnlyOneInstanceOfScouter } from "./checkOnlyInstanceOfScouter.js"; -import { checkScouterShiftMatches } from "./checkScouterShiftMatches.js"; +import { checkOnlyOneInstanceOfScouter } from "../checkOnlyInstanceOfScouter.js"; +import { checkScouterShiftMatches } from "../scoutershifts/checkScouterShiftMatches.js"; export const addScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTeamRankings.ts b/src/handler/manager/tournament/getTeamRankings.ts similarity index 97% rename from src/handler/manager/getTeamRankings.ts rename to src/handler/manager/tournament/getTeamRankings.ts index e514bef6..fd6ba5f9 100644 --- a/src/handler/manager/getTeamRankings.ts +++ b/src/handler/manager/tournament/getTeamRankings.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getTeamRankings = async ( diff --git a/src/handler/manager/getTeamsInTournament.ts b/src/handler/manager/tournament/getTeamsInTournament.ts similarity index 95% rename from src/handler/manager/getTeamsInTournament.ts rename to src/handler/manager/tournament/getTeamsInTournament.ts index 7f10c466..9555b14a 100644 --- a/src/handler/manager/getTeamsInTournament.ts +++ b/src/handler/manager/tournament/getTeamsInTournament.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getTeamsInTournament = async ( diff --git a/src/handler/slack/addSlackWorkspace.ts b/src/handler/slack/addSlackWorkspace.ts index a2b1252f..a17b5603 100644 --- a/src/handler/slack/addSlackWorkspace.ts +++ b/src/handler/slack/addSlackWorkspace.ts @@ -48,7 +48,7 @@ export const addSlackWorkspace = async ( if (!teamRow) { res.status(404).send("Team not found"); - return + return; } await prismaClient.slackWorkspace.upsert({ diff --git a/src/index.ts b/src/index.ts index d813e07b..40d12fe5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,36 +8,36 @@ import { addMutablePicklist } from "./handler/manager/addMutablePicklist.js"; import { addPicklist } from "./handler/manager/addPicklist.js"; import { addRegisteredTeam } from "./handler/manager/addRegisteredTeam.js"; -import { addScouterShift } from "./handler/manager/addScouterShift.js"; +import { addScouterShift } from "./handler/manager/tournament/addScouterShift.js"; import { approveRegisteredTeam } from "./handler/manager/approveRegisteredTeam.js"; import { checkRegisteredTeam } from "./handler/manager/checkRegisteredTeam.js"; import { deleteScoutReport } from "./handler/manager/deleteScoutReport.js"; import { deleteMutablePicklist } from "./handler/manager/deleteMutablePicklist.js"; import { deletePicklist } from "./handler/manager/deletePicklist.js"; -import { deleteScouterShift } from "./handler/manager/deleteScouterShift.js"; -import { getMutablePicklists } from "./handler/manager/getMutablePicklists.js"; +import { deleteScouterShift } from "./handler/manager/scoutershifts/deleteScouterShift.js"; +import { getMutablePicklists } from "./handler/manager/mutablepicklists/getMutablePicklists.js"; import { getPicklists } from "./handler/manager/getPicklists.js"; import { getScouterSchedule } from "./handler/manager/getScouterSchedule.js"; -import { getTeamsInTournament } from "./handler/manager/getTeamsInTournament.js"; +import { getTeamsInTournament } from "./handler/manager/tournament/getTeamsInTournament.js"; import { rejectRegisteredTeam } from "./handler/manager/rejectRegisteredTeam.js"; import { getTournaments } from "./handler/manager/getTournaments.js"; -import { addUsername } from "./handler/manager/addUsername.js"; +import { addUsername } from "./handler/manager/onboarding/addUsername.js"; import { getTeams } from "./handler/manager/getTeams.js"; -import { updateScouterShift } from "./handler/manager/updateScouterShift.js"; +import { updateScouterShift } from "./handler/manager/scoutershifts/updateScouterShift.js"; import scheduleJobs from "./lib/scheduleJobs.js"; -import { checkCode } from "./handler/manager/checkCode.js"; +import { checkCode } from "./handler/manager/onboarding/checkCode.js"; import { addTournamentSource } from "./handler/manager/addTournamentSource.js"; import { addTeamSource } from "./handler/manager/addTeamSource.js"; import { addScoutReport } from "./handler/manager/addScoutReport.js"; import { getScoutReport } from "./handler/manager/getScoutReport.js"; -import { getMatches } from "./handler/manager/getMatchesNew.js"; +import { getMatches } from "./handler/manager/getMatches.js"; import { getSinglePicklist } from "./handler/manager/getSinglePicklist.js"; import { getSingleMutablePicklist } from "./handler/manager/getSingleMutablePicklist.js"; import { updatePicklist } from "./handler/manager/updatePicklist.js"; import { updateMutablePicklist } from "./handler/manager/updateMutablePicklist.js"; -import { addWebsite } from "./handler/manager/addWebsite.js"; +import { addWebsite } from "./handler/manager/onboarding/addWebsite.js"; import requireLovatSignature from "./lib/middleware/requireLovatSignature.js"; -import { approveTeamEmail } from "./handler/manager/approveTeamEmail.js"; +import { approveTeamEmail } from "./handler/manager/onboarding/approveTeamEmail.js"; import rateLimit from "express-rate-limit"; import { resendEmail } from "./handler/manager/resendEmail.js"; import { getProfile } from "./handler/manager/getProfile.js"; @@ -47,10 +47,10 @@ import { updateRoleToScoutingLead } from "./handler/manager/updateRoleToScouting import { detailsPage } from "./handler/analysis/teamLookUp/detailsPage.js"; import { categoryMetrics } from "./handler/analysis/teamLookUp/categoryMetrics.js"; import { breakdownMetrics } from "./handler/analysis/teamLookUp/breakdownMetrics.js"; -import { checkCodeScouter } from "./handler/manager/checkCodeScouter.js"; -import { changeNameScouter } from "./handler/manager/changeNameScouter.js"; -import { getScoutersOnTeam } from "./handler/manager/getScoutersOnTeam.js"; -import { getScheduleForScouter } from "./handler/manager/getScheduleForScouter.js"; +import { checkCodeScouter } from "./handler/manager/scouters/checkCodeScouter.js"; +import { changeNameScouter } from "./handler/manager/scouters/changeNameScouter.js"; +import { getScoutersOnTeam } from "./handler/manager/scouters/getScoutersOnTeam.js"; +import { getScheduleForScouter } from "./handler/manager/scouters/getScheduleForScouter.js"; import { addNewScouter } from "./handler/manager/addNewScouter.js"; import { updateNotes } from "./handler/manager/updateNotes.js"; import { getTeamCode } from "./handler/manager/getTeamCode.js"; @@ -60,31 +60,31 @@ import { getNotes } from "./handler/analysis/teamLookUp/getNotes.js"; import { alliancePageResponse } from "./handler/analysis/alliancePredictions/alliancePageResponse.js"; import { matchPrediction } from "./handler/analysis/alliancePredictions/matchPrediction.js"; import { getTeamSource } from "./handler/manager/getTeamSource.js"; -import { getTournamentSource } from "./handler/manager/getTournamentSource.js"; +import { getTournamentSource } from "./handler/manager/settings/getTournamentSource.js"; import { picklistShell } from "./handler/analysis/picklist/picklistShell.js"; // import { scoutingLeadPage } from "./handler/analysis/scoutingLead/scoutingLeadPage.js"; -import { getScouterTournaments } from "./handler/manager/getScouterTournaments.js"; +import { getScouterTournaments } from "./handler/manager/scouters/getScouterTournaments.js"; import { getScouters } from "./handler/manager/getScouters.js"; import { addScoutReportDashboard } from "./handler/manager/addScoutReportDashboard.js"; import { matchPageSpecificScouter } from "./handler/analysis/specificMatchPage/matchPageSpecificScouter.js"; import { scoutReportForMatch } from "./handler/analysis/specificMatchPage/scoutReportForMatch.js"; import { timelineForScoutReport } from "./handler/analysis/specificMatchPage/timelineForScoutReport.js"; -import { getTournamentForScouterWithSchedule } from "./handler/manager/getTournamentForScouterWithSchedule.js"; +import { getTournamentForScouterWithSchedule } from "./handler/manager/scouters/getTournamentForScouterWithSchedule.js"; import { multipleFlags } from "./handler/analysis/teamLookUp/multipleFlags.js"; -import { updateTeamEmail } from "./handler/manager/updateTeamEmail.js"; -import { addNotOnTeam } from "./handler/manager/addNotOnTeam.js"; -import { updateScouterName } from "./handler/manager/updateScouterName.js"; +import { updateTeamEmail } from "./handler/manager/settings/updateTeamEmail.js"; +import { addNotOnTeam } from "./handler/manager/temp/addNotOnTeam.js"; +import { updateScouterName } from "./handler/manager/scouters/updateScouterName.js"; import { deleteScouter } from "./handler/manager/deleteScouter.js"; -import { scoutingLeadProgressPage } from "./handler/manager/scoutingLeadProgressPage.js"; +import { scoutingLeadProgressPage } from "./handler/manager/scouters/scoutingLeadProgressPage.js"; import { addScouterDashboard } from "./handler/manager/addScouterDashboard.js"; import { scouterScoutReports } from "./handler/analysis/scoutingLead/scouterScoutReports.js"; import { pitDisplay } from "./handler/manager/pitDisplay.js"; import { getTeamCSV } from "./handler/manager/getTeamCSV.js"; -import { getTeamMatchCSV } from "./handler/manager/getTeamMatchCSV.js"; -import { getReportCSV } from "./handler/manager/getReportCSV.js"; -import { emailTeamCode } from "./handler/manager/emailTeamCode.js"; +import { getTeamMatchCSV } from "./handler/analysis/csv/getTeamMatchCSV.js"; +import { getReportCSV } from "./handler/analysis/csv/getReportCSV.js"; +import { emailTeamCode } from "./handler/manager/scouters/emailTeamCode.js"; import { breakdownDetails } from "./handler/analysis/teamLookUp/breakdownDetails.js"; -import { getTeamRankings } from "./handler/manager/getTeamRankings.js"; +import { getTeamRankings } from "./handler/manager/tournament/getTeamRankings.js"; import { getTeamTournamentStatus } from "./handler/manager/getTeamTournamentStatus.js"; import { getMatchResults } from "./handler/manager/getMatchResults.js"; import { addSlackWorkspace } from "./handler/slack/addSlackWorkspace.js"; @@ -95,29 +95,13 @@ import { posthog } from "./posthogClient.js"; import posthogReporter from "./lib/middleware/posthogMiddleware.js"; import { requireSlackToken } from "./lib/middleware/requireSlackToken.js"; import { migrateDataSources } from "./lib/migrateDataSources.js"; -import { archiveScouter } from "./handler/manager/archiveScouter.js"; +import { archiveScouter } from "./handler/manager/scouters/archiveScouter.js"; import { unarchiveScouter } from "./handler/manager/unarchiveScouter.js"; import { onboardingRedirect } from "./handler/slack/onboardingRedirect.js"; import cookieParser from "cookie-parser"; import { clearCache } from "./lib/clearCache.js"; // import { addTournamentMatchesOneTime } from "./handler/manager/addTournamentMatchesOneTime.js"; -const resendEmailLimiter = rateLimit({ - windowMs: 2 * 60 * 1000, - max: 2, - message: - "Too many emails sent from this IP, please try again after 2 minutes", - validate: { trustProxy: false }, -}); - -const updateTeamEmails = rateLimit({ - windowMs: 2 * 60 * 1000, - max: 3, - message: - "Too many email updates sent from this IP, please try again after 2 minutes", - validate: { trustProxy: false }, -}); - const app = express(); setupExpressErrorHandler(posthog, app); @@ -130,162 +114,15 @@ app.use(bodyParser.json()); app.use(cookieParser()); -app.get("/v1/slack-invite", onboardingRedirect); - -// add/update slack workspace -app.get("/v1/slack/add-workspace", requireSlackToken, addSlackWorkspace); - -// process slash commands -app.post( - "/v1/slack/command", - express.urlencoded({ extended: true }), - requireSlackToken, - processCommand -); - -app.post("/v1/slack/event", requireSlackToken, processEvent); - app.post( "/v1/manager/onboarding/verifyemail", requireLovatSignature, - approveTeamEmail + approveTeamEmail, ); //tested // Log requests app.use(posthogReporter); -//general endpoints -app.get( - "/v1/manager/tournament/:tournament/teams", - requireAuth, - getTeamsInTournament -); -app.get( - "/v1/manager/tournament/:tournament/rankedTeams", - requireAuth, - getTeamRankings -); -app.get("/v1/manager/teams", requireAuth, getTeams); //tested -app.get("/v1/manager/tournaments", requireAuth, getTournaments); //tested - -//match schedule page -app.get("/v1/manager/matches/:tournament", requireAuth, getMatches); // should be able to filter by tournament, team, and whether or not they have been scouted. -// app.get('/API/isScouted') //what will be sent, and what should it return // We can hold off on this until it's time for the collection app - -//scout report -app.delete("/v1/manager/scoutreports/:uuid", requireAuth, deleteScoutReport); // tested -app.put("/v1/manager/notes/:uuid", requireAuth, updateNotes); -app.get("/v1/manager/scoutreports/:uuid", getScoutReport); //tested - -//scouter shift -app.post( - "/v1/manager/tournament/:tournament/scoutershifts", - requireAuth, - addScouterShift -); //tested , expecting only 1 at a time -// app.get('/manager/tournament/:tournament/scoutershifts',requireAuth, getScouterSchedule) //tested -app.post("/v1/manager/scoutershifts/:uuid", requireAuth, updateScouterShift); //tested -app.delete("/v1/manager/scoutershifts/:uuid", requireAuth, deleteScouterShift); //tested -app.get("/v1/manager/scoutershift/scouters", requireAuth, getScouters); - -//picklist (waiting to fully finish testing when I have a second user to play with) -app.post("/v1/manager/picklists", requireAuth, addPicklist); //tested -app.get("/v1/manager/picklists", requireAuth, getPicklists); //tested -app.delete("/v1/manager/picklists/:uuid", requireAuth, deletePicklist); //tested -app.get("/v1/manager/picklists/:uuid", requireAuth, getSinglePicklist); //tested -app.put("/v1/manager/picklists/:uuid", requireAuth, updatePicklist); //tested - -//mutable picklist (waiting to fully finish testing when I have a second user to play with) -app.post("/v1/manager/mutablepicklists", requireAuth, addMutablePicklist); // tested -app.delete( - "/v1/manager/mutablepicklists/:uuid", - requireAuth, - deleteMutablePicklist -); //tested -app.get("/v1/manager/mutablepicklists", requireAuth, getMutablePicklists); //tested -app.get( - "/v1/manager/mutablepicklists/:uuid", - requireAuth, - getSingleMutablePicklist -); //tested -app.put( - "/v1/manager/mutablepicklists/:uuid", - requireAuth, - updateMutablePicklist -); //tested - -// Also it would be nice to have an endpoint to subscribe to a mutable picklist, so that the client can get updates when it changes -// Websocket time? lol, ill add to wish list items, after this break yes - -//onboarding endpoints -app.get( - "/v1/manager/registeredteams/:team/registrationstatus", - requireAuth, - checkRegisteredTeam -); //tested -app.post("/v1/manager/onboarding/username", requireAuth, addUsername); //tested -app.post("/v1/manager/onboarding/teamcode", requireAuth, checkCode); //tested -app.post("/v1/manager/settings/teamsource", requireAuth, addTeamSource); //tested -app.post( - "/v1/manager/settings/tournamentsource", - requireAuth, - addTournamentSource -); -app.post("/v1/manager/onboarding/team", requireAuth, addRegisteredTeam); //tested, is the link correct? -app.post( - "/v1/manager/registeredteams/:team/approve", - requireLovatSignature, - approveRegisteredTeam -); //tested waiting for new middle ware -app.post( - "/v1/manager/registeredteams/:team/reject", - requireLovatSignature, - rejectRegisteredTeam -); // tested, waiting for new middle ware -app.post("/v1/manager/onboarding/teamwebsite", requireAuth, addWebsite); //tested - -app.post( - "/v1/manager/onboarding/resendverificationemail", - resendEmailLimiter, - requireAuth, - resendEmail -); //tested -app.get("/v1/manager/profile", requireAuth, getProfile); //tested -app.get("/v1/manager/users", requireAuth, getUsers); //tested -app.post("/v1/manager/noteam", requireAuth, addNotOnTeam); - -//dashboard app settings -app.delete("/v1/manager/user", requireAuth, deleteUser); //tested, is there more to do with Auth0 -app.post("/v1/manager/upgradeuser", requireAuth, updateRoleToScoutingLead); //tested, idk what to name, u can change -app.get("/v1/manager/analysts", requireAuth, getAnalysts); //use for list of people eligable to upgrade ^^^ -app.put("/v1/manager/settings", requireAuth, updateSettings); -app.get("/v1/manager/settings/teamsource", requireAuth, getTeamSource); -app.get( - "/v1/manager/settings/tournamentsource", - requireAuth, - getTournamentSource -); -app.put( - "/v1/manager/settings/teamemail", - updateTeamEmails, - requireAuth, - updateTeamEmail -); - -//scouting lead information/QR codes -app.get("/v1/manager/code", requireAuth, getTeamCode); -app.get( - "/v1/manager/tournament/:tournament/scoutershifts", - requireAuth, - getScouterSchedule -); //tested - -app.post( - "/v1/manager/dashboard/scoutreport", - requireAuth, - addScoutReportDashboard -); - //scouter onboarding app.post("/v1/manager/emailTeamCode", emailTeamCode); app.get("/v1/manager/scouter/checkcode", checkCodeScouter); //tested change name/where request data is coming from/response format as needed @@ -299,7 +136,6 @@ app.post("/v1/manager/scouter", addNewScouter); //tested app.get("/v1/manager/scouters/:uuid/tournaments", getScouterTournaments); //tested, gets all tournaments (for settings) app.get("/v1/manager/scouterschedules/:tournament", getScheduleForScouter); //tested app.get("/v1/manager/scouter/tournaments", getTournamentForScouterWithSchedule); -app.post("/v1/manager/scoutreports", addScoutReport); //tested //analysis @@ -310,7 +146,7 @@ app.get("/v1/analysis/breakdown/team/:team", requireAuth, breakdownMetrics); //t app.get( "/v1/analysis/breakdown/team/:team/:breakdown", requireAuth, - breakdownDetails + breakdownDetails, ); app.get("/v1/analysis/notes/team/:team", requireAuth, getNotes); //tested app.get("/v1/analysis/flag/team/:team", requireAuth, multipleFlags); //tested @@ -322,29 +158,20 @@ app.get("/v1/analysis/alliance", requireAuth, alliancePageResponse); app.get("/v1/analysis/matchprediction", requireAuth, matchPrediction); app.get("/v1/analysis/picklist", requireAuth, picklistShell); -//scouting lead -app.put("/v1/manager/scoutername", requireAuth, updateScouterName); -app.delete("/v1/manager/scouterdashboard", requireAuth, deleteScouter); -app.get("/v1/manager/scouterspage", requireAuth, scoutingLeadProgressPage); -app.post("/v1/manager/scouterdashboard", requireAuth, addScouterDashboard); -app.get("/v1/manager/scouterreports", requireAuth, scouterScoutReports); - -//specific scoutreport - app.get( "/v1/analysis/metrics/scoutreport/:uuid", requireAuth, - matchPageSpecificScouter + matchPageSpecificScouter, ); app.get( "/v1/analysis/scoutreports/match/:match", requireAuth, - scoutReportForMatch + scoutReportForMatch, ); app.get( "/v1/analysis/timeline/scoutreport/:uuid", requireAuth, - timelineForScoutReport + timelineForScoutReport, ); //pit scouting @@ -357,22 +184,6 @@ app.get("/v1/analysis/csvplain", requireAuth, getTeamCSV); // tested app.get("/v1/analysis/matchcsv", requireAuth, getTeamMatchCSV); app.get("/v1/analysis/reportcsv", requireAuth, getReportCSV); -// current tournament stats widget -app.get( - "/v1/manager/team-tournament-status", - requireAuth, - getTeamTournamentStatus -); - -// match results from scouting reports -app.get("/v1/manager/match-results-page", requireAuth, getMatchResults); - -// API key management -// app.get("/v1/manager/add-api-key", requireAuth, addApiKey); -// app.get("/v1/manager/revoke-api-key", requireAuth, revokeApiKey); -// app.get("/v1/manager/get-api-keys", requireAuth, getApiKeys); -// app.get("/v1/manager/rename-api-key", requireAuth, renameApiKey); - await scheduleJobs(); await migrateDataSources(); diff --git a/src/lib/middleware/posthogMiddleware.ts b/src/lib/middleware/posthogMiddleware.ts index 6f6c59f1..38dcc42e 100644 --- a/src/lib/middleware/posthogMiddleware.ts +++ b/src/lib/middleware/posthogMiddleware.ts @@ -61,7 +61,7 @@ const posthogReporter = async ( $set: userProps, $pathname: req.route?.path, method: req.method, - cache: res.getHeader('X-Lovat-Cache'), + cache: res.getHeader("X-Lovat-Cache"), path: req.path, query: req.query, reqBody: req.body, diff --git a/src/routes/analysis/analysis.routes.ts b/src/routes/analysis/analysis.routes.ts new file mode 100644 index 00000000..a55061eb --- /dev/null +++ b/src/routes/analysis/analysis.routes.ts @@ -0,0 +1,17 @@ +import { Router } from "express"; + +import onboarding from "./team.routes.js"; +import picklists from "./picklists.routes.js"; +import alliance from "./alliance.routes.js"; +import scoutreport from "./scoutreport.routes.js"; +import csv from "./csv.routes.js"; + +const router = Router(); + +router.use("/onboarding", onboarding); +router.use("/picklists", picklists); +router.use("/alliance", alliance); +router.use("/csv", csv); +router.use("/scoutreport", scoutreport); + +export default router; diff --git a/src/routes/index.ts b/src/routes/index.ts new file mode 100644 index 00000000..ee7c6497 --- /dev/null +++ b/src/routes/index.ts @@ -0,0 +1,16 @@ +import { Router } from "express"; + +import slackRoutes from "./slack/slack.routes.js"; +import managerRoutes from "./manager/manager.routes.js"; +import analysisRoutes from "./analysis/analysis.routes.js"; +import { onboardingRedirect } from "../handler/slack/onboardingRedirect.js"; + +const router = Router(); + +router.use("/slack", slackRoutes); +router.use("/manager", managerRoutes); +router.use("/analysis", analysisRoutes); + +router.get("/invite", onboardingRedirect); + +export default router; diff --git a/src/routes/manager/apikey.routes.ts b/src/routes/manager/apikey.routes.ts new file mode 100644 index 00000000..4fd6e21d --- /dev/null +++ b/src/routes/manager/apikey.routes.ts @@ -0,0 +1,17 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { addApiKey } from "../../handler/manager/apikeys/addApiKey"; +import { getApiKeys } from "../../handler/manager/apikeys/getApiKeys"; +import { renameApiKey } from "../../handler/manager/apikeys/renameApiKey"; +import { revokeApiKey } from "../../handler/manager/apikeys/revokeApiKey"; + +const router = Router(); + +router.use(requireAuth); + +router.post("/", requireAuth, addApiKey); +router.delete("/", requireAuth, revokeApiKey); +router.get("/", requireAuth, getApiKeys); +router.patch("/", requireAuth, renameApiKey); + +export default router; diff --git a/src/routes/manager/manager.routes.ts b/src/routes/manager/manager.routes.ts new file mode 100644 index 00000000..011ae6b7 --- /dev/null +++ b/src/routes/manager/manager.routes.ts @@ -0,0 +1,73 @@ +import { Router } from "express"; + +import onboarding from "./onboarding.routes.js"; +import picklists from "./picklists.routes.js"; +import mutablepicklist from "./mutablepicklists.routes.js"; +import registeredteams from "./registeredteams.routes.js"; +import scouters from "./scouters.routes.js"; +import tournaments from "./tournaments.routes.js"; +import scoutreports from "./scoutreports.routes.js"; +import settings from "./settings.routes.js"; +//import apikey from "./apikey.routes.js"; + +import { getTournaments } from "../../handler/manager/getTournaments.js"; +import { getTeams } from "../../handler/manager/getTeams.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { getMatches } from "../../handler/manager/getMatches.js"; +import { updateNotes } from "../../handler/manager/updateNotes.js"; +import { getScouters } from "../../handler/manager/getScouters.js"; +import { getProfile } from "../../handler/manager/getProfile.js"; +import { getUsers } from "../../handler/manager/getUsers.js"; +import { deleteUser } from "../../handler/manager/deleteUser.js"; +import { updateRoleToScoutingLead } from "../../handler/manager/updateRoleToScoutingLead.js"; +import { getAnalysts } from "../../handler/manager/getAnalysts.js"; +import { addNotOnTeam } from "../../handler/manager/temp/addNotOnTeam.js"; +import { getTeamCode } from "../../handler/manager/getTeamCode.js"; +import { addScoutReportDashboard } from "../../handler/manager/addScoutReportDashboard.js"; +import { getTeamTournamentStatus } from "../../handler/manager/getTeamTournamentStatus.js"; +import { getMatchResults } from "../../handler/manager/getMatchResults.js"; + +const router = Router(); + +router.use("/onboarding", onboarding); +router.use("/picklists", picklists); +router.use("/mutablepicklists", mutablepicklist); +router.use("/registeredteams", registeredteams); +router.use("/", scouters); +router.use("/tournament", tournaments); +router.use("/scoutreports", scoutreports); +router.use("/settings", settings); +//router.use("/apikey", apikey); + +router.use(requireAuth); + +router.get("/teams", getTeams); +router.get("/tournaments", getTournaments); + +router.get("/matches/:tournament", getMatches); + +router.put("/notes/:uuid", updateNotes); + +router.get("/scoutershift/scouters", getScouters); + +router.get("/profile", getProfile); + +router.get("/users", getUsers); + +router.delete("/user", deleteUser); + +router.post("/upgradeuser", updateRoleToScoutingLead); + +router.get("/analysts", getAnalysts); + +router.post("/noteam", addNotOnTeam); + +router.get("/code", getTeamCode); + +router.post("/dashboard/scoutreport", addScoutReportDashboard); + +router.get("/v1/manager/team-tournament-status", getTeamTournamentStatus); + +router.get("/v1/manager/match-results-page", getMatchResults); + +export default router; diff --git a/src/routes/manager/mutablepicklists.routes.ts b/src/routes/manager/mutablepicklists.routes.ts new file mode 100644 index 00000000..d183115a --- /dev/null +++ b/src/routes/manager/mutablepicklists.routes.ts @@ -0,0 +1,31 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { addMutablePicklist } from "../../handler/manager/addMutablePicklist"; +import { deleteMutablePicklist } from "../../handler/manager/deleteMutablePicklist"; +import { getMutablePicklists } from "../../handler/manager/mutablepicklists/getMutablePicklists"; +import { getSingleMutablePicklist } from "../../handler/manager/getSingleMutablePicklist"; +import { updateMutablePicklist } from "../../handler/manager/updateMutablePicklist"; + +/* + +mutablepicklists.routes.ts + +POST /manager/mutablepicklists +GET /manager/mutablepicklists +GET /manager/mutablepicklists/:uuid +PUT /manager/mutablepicklists/:uuid +DELETE /manager/mutablepicklists/:uuid + +*/ + +const router = Router(); + +router.use(requireAuth); + +router.post("/", addMutablePicklist); +router.delete("/:uuid", deleteMutablePicklist); +router.get("/", getMutablePicklists); +router.get("/:uuid", getSingleMutablePicklist); +router.put("/:uuid", updateMutablePicklist); + +export default router; diff --git a/src/routes/manager/onboarding.routes.ts b/src/routes/manager/onboarding.routes.ts new file mode 100644 index 00000000..462d3f4f --- /dev/null +++ b/src/routes/manager/onboarding.routes.ts @@ -0,0 +1,54 @@ +import { Router } from "express"; +import requireLovatSignature from "../../lib/middleware/requireLovatSignature"; +import { approveTeamEmail } from "../../handler/manager/onboarding/approveTeamEmail"; +import { addUsername } from "../../handler/manager/onboarding/addUsername"; +import { checkCode } from "../../handler/manager/onboarding/checkCode"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { addRegisteredTeam } from "../../handler/manager/addRegisteredTeam"; +import rateLimit from "express-rate-limit"; +import { addWebsite } from "../../handler/manager/onboarding/addWebsite"; +import { resendEmail } from "../../handler/manager/resendEmail"; + +/* + +onboarding.routes.ts + +POST /manager/onboarding/verifyemail +POST /manager/onboarding/username +POST /manager/onboarding/teamcode +POST /manager/onboarding/team +POST /manager/onboarding/teamwebsite +POST /manager/onboarding/resendverificationemail + +*/ + +const resendEmailLimiter = rateLimit({ + windowMs: 2 * 60 * 1000, + max: 2, + message: + "Too many emails sent from this IP, please try again after 2 minutes", + validate: { trustProxy: false }, +}); + +const router = Router(); + +router.post("/verifyemail", requireLovatSignature, approveTeamEmail); + +router.use(requireAuth); + +router.post("/username", addUsername); + +router.post("/teamcode", checkCode); + +router.post("/team", addRegisteredTeam); + +router.post("/teamwebsite", addWebsite); + +router.post( + "/resendverificationemail", + resendEmailLimiter, + requireAuth, + resendEmail, +); + +export default router; diff --git a/src/routes/manager/picklists.routes.ts b/src/routes/manager/picklists.routes.ts new file mode 100644 index 00000000..bf294d6d --- /dev/null +++ b/src/routes/manager/picklists.routes.ts @@ -0,0 +1,35 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { addPicklist } from "../../handler/manager/addPicklist"; +import { deletePicklist } from "../../handler/manager/deletePicklist"; +import { getPicklists } from "../../handler/manager/getPicklists"; +import { getSinglePicklist } from "../../handler/manager/getSinglePicklist"; +import { updatePicklist } from "../../handler/manager/updatePicklist"; + +/* + +picklists.routes.ts + +POST /manager/picklists +GET /manager/picklists +GET /manager/picklists/:uuid +PUT /manager/picklists/:uuid +DELETE /manager/picklists/:uuid + +*/ + +const router = Router(); + +router.use(requireAuth); + +router.post("/", addPicklist); + +router.get("/", getPicklists); + +router.get("/:uuid", getSinglePicklist); + +router.put("/:uuid", updatePicklist); + +router.delete("/:uuid", deletePicklist); + +export default router; diff --git a/src/routes/manager/registeredteams.routes.ts b/src/routes/manager/registeredteams.routes.ts new file mode 100644 index 00000000..156af0ac --- /dev/null +++ b/src/routes/manager/registeredteams.routes.ts @@ -0,0 +1,16 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { rejectRegisteredTeam } from "../../handler/manager/rejectRegisteredTeam"; +import { approveRegisteredTeam } from "../../handler/manager/approveRegisteredTeam"; +import { checkRegisteredTeam } from "../../handler/manager/checkRegisteredTeam"; +import requireLovatSignature from "../../lib/middleware/requireLovatSignature"; + +const router = Router(); + +router.get("/:team/registrationstatus", requireAuth, checkRegisteredTeam); + +router.use(requireLovatSignature); +router.post("/:team/approve", approveRegisteredTeam); +router.post("/:team/reject", rejectRegisteredTeam); + +export default router; diff --git a/src/routes/manager/scouters.routes.ts b/src/routes/manager/scouters.routes.ts new file mode 100644 index 00000000..71c18585 --- /dev/null +++ b/src/routes/manager/scouters.routes.ts @@ -0,0 +1,41 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { addNewScouter } from "../../handler/manager/addNewScouter"; +import { archiveScouter } from "../../handler/manager/scouters/archiveScouter"; +import { changeNameScouter } from "../../handler/manager/scouters/changeNameScouter"; +import { checkCodeScouter } from "../../handler/manager/scouters/checkCodeScouter"; +import { emailTeamCode } from "../../handler/manager/scouters/emailTeamCode"; +import { getScheduleForScouter } from "../../handler/manager/scouters/getScheduleForScouter"; +import { getScoutersOnTeam } from "../../handler/manager/scouters/getScoutersOnTeam"; +import { getScouterTournaments } from "../../handler/manager/scouters/getScouterTournaments"; +import { getTournamentForScouterWithSchedule } from "../../handler/manager/scouters/getTournamentForScouterWithSchedule"; +import { unarchiveScouter } from "../../handler/manager/unarchiveScouter"; +import { addScouterDashboard } from "../../handler/manager/addScouterDashboard"; +import { scouterScoutReports } from "../../handler/manager/dashboard/scouterScoutReports"; +import { deleteScouter } from "../../handler/manager/deleteScouter"; +import { scoutingLeadProgressPage } from "../../handler/manager/scouters/scoutingLeadProgressPage"; +import { updateScouterName } from "../../handler/manager/scouters/updateScouterName"; + +const router = Router(); +router.post("/emailTeamCode", emailTeamCode); +router.get("/scouter/checkcode", checkCodeScouter); +router.post("/name/uuid/:uuid", changeNameScouter); +router.get("/scouters", getScoutersOnTeam); +router.post("/scouter", addNewScouter); + +router.get("/scouters/:uuid/tournaments", getScouterTournaments); +router.get("/scouterschedules/:tournament", getScheduleForScouter); +router.get("/scouter/tournaments", getTournamentForScouterWithSchedule); + +router.use(requireAuth); + +router.post("/unarchive/uuid/:uuid", requireAuth, unarchiveScouter); +router.post("/archive/uuid/:uuid", requireAuth, archiveScouter); + +router.put("/scoutername", updateScouterName); +router.delete("/scouterdashboard", deleteScouter); +router.get("/scouterspage", scoutingLeadProgressPage); +router.post("/scouterdashboard", addScouterDashboard); +router.get("/scouterreports", scouterScoutReports); + +export default router; diff --git a/src/routes/manager/scoutershifts.routes.ts b/src/routes/manager/scoutershifts.routes.ts new file mode 100644 index 00000000..271bd26f --- /dev/null +++ b/src/routes/manager/scoutershifts.routes.ts @@ -0,0 +1,14 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { updateScouterShift } from "../../handler/manager/scoutershifts/updateScouterShift"; +import { deleteScouterShift } from "../../handler/manager/scoutershifts/deleteScouterShift"; + +const router = Router(); + +router.use(requireAuth); + +router.post("/:uuid", updateScouterShift); + +router.delete("/:uuid", deleteScouterShift); + +export default router; diff --git a/src/routes/manager/scoutreports.routes.ts b/src/routes/manager/scoutreports.routes.ts new file mode 100644 index 00000000..c2a044c7 --- /dev/null +++ b/src/routes/manager/scoutreports.routes.ts @@ -0,0 +1,17 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { addScoutReport } from "../../handler/manager/addScoutReport"; +import { deleteScoutReport } from "../../handler/manager/deleteScoutReport"; +import { getScoutReport } from "../../handler/manager/getScoutReport"; + +const router = Router(); + +router.post("/", addScoutReport); + +router.get("/:uuid", getScoutReport); + +router.use(requireAuth); + +router.delete("/:uuid", deleteScoutReport); + +export default router; diff --git a/src/routes/manager/settings.routes.ts b/src/routes/manager/settings.routes.ts new file mode 100644 index 00000000..5fd12cbd --- /dev/null +++ b/src/routes/manager/settings.routes.ts @@ -0,0 +1,33 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { updateSettings } from "../../handler/manager/updateSettings"; +import rateLimit from "express-rate-limit"; +import { updateTeamEmail } from "../../handler/manager/settings/updateTeamEmail"; +import { getTeamSource } from "../../handler/manager/getTeamSource"; +import { addTeamSource } from "../../handler/manager/addTeamSource"; +import { getTournamentSource } from "../../handler/manager/settings/getTournamentSource"; +import { addTournamentSource } from "../../handler/manager/addTournamentSource"; + +const updateTeamEmails = rateLimit({ + windowMs: 2 * 60 * 1000, + max: 3, + message: + "Too many email updates sent from this IP, please try again after 2 minutes", + validate: { trustProxy: false }, +}); + +const router = Router(); + +router.use(requireAuth); + +router.put("/", updateSettings); + +router.get("/teamsource", getTeamSource); +router.post("/teamsource", addTeamSource); + +router.get("/tournamentsource", getTournamentSource); +router.post("/tournamentsource", addTournamentSource); + +router.put("/teamemail", updateTeamEmails, updateTeamEmail); + +export default router; diff --git a/src/routes/manager/tournaments.routes.ts b/src/routes/manager/tournaments.routes.ts new file mode 100644 index 00000000..29f01950 --- /dev/null +++ b/src/routes/manager/tournaments.routes.ts @@ -0,0 +1,28 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth"; +import { getTeamsInTournament } from "../../handler/manager/tournament/getTeamsInTournament"; +import { getTeamRankings } from "../../handler/manager/tournament/getTeamRankings"; +import { addScouterShift } from "../../handler/manager/tournament/addScouterShift"; + +/* + +tournaments.routes.ts + +GET /manager/tournaments +GET /manager/tournament/:tournament/teams +GET /manager/tournament/:tournament/rankedTeams +GET /manager/tournament/:tournament/scoutershifts + +*/ + +const router = Router(); + +router.use(requireAuth); + +router.get("/:tournament/teams", getTeamsInTournament); + +router.get("/:tournament/rankedTeams", getTeamRankings); + +router.post("/:tournament/scoutershifts", addScouterShift); + +export default router; diff --git a/src/routes/slack/slack.routes.ts b/src/routes/slack/slack.routes.ts new file mode 100644 index 00000000..83fbfdbb --- /dev/null +++ b/src/routes/slack/slack.routes.ts @@ -0,0 +1,27 @@ +import { Router } from "express"; +import express from "express"; + +import { requireSlackToken } from "../../lib/middleware/requireSlackToken.js"; +import { addSlackWorkspace } from "../../handler/slack/addSlackWorkspace.js"; +import { processCommand } from "../../handler/slack/processCommands.js"; +import { processEvent } from "../../handler/slack/processEvents.js"; + +/* + +slack.routes.ts + +GET /slack/add-workspace +POST /slack/command +POST /slack/event + +*/ + +const router = Router(); +router.use(requireSlackToken); +router.get("/add-workspace", addSlackWorkspace); + +router.post("/command", express.urlencoded({ extended: true }), processCommand); + +router.post("/event", processEvent); + +export default router; diff --git a/src/server.ts b/src/server.ts new file mode 100644 index 00000000..39b68a80 --- /dev/null +++ b/src/server.ts @@ -0,0 +1,14 @@ +import { app } from "./app.js"; +import scheduleJobs from "./lib/scheduleJobs.js"; +import { migrateDataSources } from "./lib/migrateDataSources.js"; +import { clearCache } from "./lib/clearCache.js"; + +const port = process.env.PORT || 3000; + +await scheduleJobs(); +await migrateDataSources(); +await clearCache(); + +app.listen(port, () => { + console.log(`Server running on :${port}`); +}); From 3a4fc3ebe86b9ad3199d0ed0d3e01662b200c1e5 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 11:39:58 -0800 Subject: [PATCH 02/14] update scripts in package.json --- package.json | 4 ++-- src/{index.ts => index.txt} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename src/{index.ts => index.txt} (100%) diff --git a/package.json b/package.json index ffc2e7ab..722b7f3c 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "description": "", "type": "module", "scripts": { - "dev": "NODE_ENV=development tsx watch src/index.ts", + "dev": "NODE_ENV=development tsx watch src/start.ts", "build": "tsc", - "start": "node dist/index.js", + "start": "node dist/start.js", "test": "tsc", "lint": "eslint .", "format": "prettier --write ." diff --git a/src/index.ts b/src/index.txt similarity index 100% rename from src/index.ts rename to src/index.txt From 6c9b7006cc044468eef2bfd8f97561c86fd63a1e Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:07:40 -0800 Subject: [PATCH 03/14] restructured to use absolute file imports --- .gitignore | 3 +- src/app.ts | 6 +-- .../alliancePredictions/alliancePage.ts | 12 ++--- .../alliancePageResponse.ts | 4 +- .../alliancePredictions/matchPrediction.ts | 6 +-- .../matchPredictionLogic.ts | 6 +-- src/handler/analysis/analysisConstants.ts | 4 +- src/handler/analysis/analysisFunction.ts | 8 +-- src/handler/analysis/analysisHandler.ts | 10 ++-- .../analysis/autoPaths/autoPathsTeam.ts | 8 +-- .../coreAnalysis/arrayAndAverageTeams.ts | 10 ++-- .../coreAnalysis/averageAllTeamFast.ts | 8 +-- .../analysis/coreAnalysis/averageManyFast.ts | 12 ++--- .../coreAnalysis/averageScoutReport.ts | 6 +-- .../analysis/coreAnalysis/nonEventMetric.ts | 8 +-- .../analysis/coreAnalysis/robotRole.ts | 6 +-- src/handler/analysis/csv/getReportCSV.ts | 8 +-- src/handler/analysis/csv/getTeamCSV.ts | 8 +-- src/handler/analysis/csv/getTeamMatchCSV.ts | 10 ++-- .../picklist/endgamePicklistTeamFast.ts | 6 +-- .../analysis/picklist/picklistShell.ts | 12 ++--- src/handler/analysis/picklist/zScoreMany.ts | 4 +- src/handler/analysis/rankFlag.ts | 2 +- src/handler/analysis/scoutingLead.ts | 4 +- .../scoutingLead/scouterScoutReports.ts | 4 +- .../analysis/scoutingLead/scoutingLeadPage.ts | 14 ++--- .../scoutingLead/totalPointsScoutingLead.ts | 4 +- .../specificMatchPage/autoPathScouter.ts | 6 +-- .../specificMatchPage/matchPageAllScouters.ts | 14 ++--- .../matchPageSpecificScouter.ts | 12 ++--- .../specificMatchPage/scoutReportForMatch.ts | 4 +- .../timelineForScoutReport.ts | 6 +-- .../analysis/teamLookUp/breakdownDetails.ts | 8 +-- .../analysis/teamLookUp/breakdownMetrics.ts | 6 +-- .../analysis/teamLookUp/categoryMetrics.ts | 6 +-- .../analysis/teamLookUp/detailsPage.ts | 10 ++-- src/handler/analysis/teamLookUp/getNotes.ts | 6 +-- .../analysis/teamLookUp/multipleFlags.ts | 8 +-- src/handler/manager/addTournamentMatches.ts | 2 +- src/handler/manager/apikey/addApiKey.ts | 4 +- src/handler/manager/apikey/getApiKeys.ts | 4 +- src/handler/manager/apikey/renameApiKey.ts | 4 +- src/handler/manager/apikey/revokeApiKey.ts | 4 +- src/handler/manager/deleteUser.ts | 4 +- src/handler/manager/getAnalysts.ts | 4 +- src/handler/manager/getMatchResults.ts | 6 +-- src/handler/manager/getMatches.ts | 12 ++--- src/handler/manager/getProfile.ts | 4 +- src/handler/manager/getTeamCode.ts | 4 +- .../manager/getTeamTournamentStatus.ts | 2 +- src/handler/manager/getTeams.ts | 4 +- .../manager/getTournamentWithSchedule.ts | 2 +- src/handler/manager/getTournaments.ts | 4 +- src/handler/manager/getUsers.ts | 4 +- .../mutablepicklists/addMutablePicklist.ts | 4 +- .../mutablepicklists/deleteMutablePicklist.ts | 4 +- .../mutablepicklists/getMutablePicklists.ts | 4 +- .../getSingleMutablePicklist.ts | 4 +- .../mutablepicklists/updateMutablePicklist.ts | 4 +- src/handler/manager/onboarding/addUsername.ts | 4 +- src/handler/manager/onboarding/addWebsite.ts | 6 +-- .../manager/onboarding/approveTeamEmail.ts | 2 +- src/handler/manager/onboarding/checkCode.ts | 4 +- src/handler/manager/onboarding/resendEmail.ts | 4 +- src/handler/manager/picklists/addPicklist.ts | 4 +- .../manager/picklists/deletePicklist.ts | 4 +- src/handler/manager/picklists/getPicklists.ts | 4 +- .../manager/picklists/getSinglePicklist.ts | 4 +- .../manager/picklists/updatePicklist.ts | 4 +- src/handler/manager/pitDisplay.ts | 8 +-- .../registeredteams/addRegisteredTeam.ts | 6 +-- .../registeredteams/approveRegisteredTeam.ts | 2 +- .../registeredteams/checkRegisteredTeam.ts | 4 +- .../registeredteams/rejectRegisteredTeam.ts | 2 +- src/handler/manager/scouters/addNewScouter.ts | 2 +- .../manager/scouters/addScouterDashboard.ts | 4 +- .../manager/scouters/archiveScouter.ts | 4 +- .../manager/scouters/changeNameScouter.ts | 2 +- .../manager/scouters/checkCodeScouter.ts | 2 +- src/handler/manager/scouters/deleteScouter.ts | 6 +-- src/handler/manager/scouters/emailTeamCode.ts | 2 +- .../manager/scouters/getScheduleForScouter.ts | 6 +-- .../manager/scouters/getScouterTournaments.ts | 2 +- src/handler/manager/scouters/getScouters.ts | 4 +- .../manager/scouters/getScoutersOnTeam.ts | 2 +- .../getTournamentForScouterWithSchedule.ts | 2 +- .../scouters/scoutingLeadProgressPage.ts | 4 +- .../manager/scouters/unarchiveScouter.ts | 4 +- .../scouters/updateRoleToScoutingLead.ts | 4 +- .../manager/scouters/updateScouterName.ts | 4 +- .../scoutershifts/checkScouterShiftMatches.ts | 4 +- .../scoutershifts/deleteScouterShift.ts | 4 +- .../scoutershifts/updateScouterShift.ts | 8 +-- .../manager/scoutreports/addScoutReport.ts | 13 +++-- .../scoutreports/addScoutReportDashboard.ts | 12 ++--- .../manager/scoutreports/deleteScoutReport.ts | 6 +-- .../manager/scoutreports/getScoutReport.ts | 4 +- src/handler/manager/settings/addTeamSource.ts | 8 +-- .../manager/settings/addTournamentSource.ts | 8 +-- src/handler/manager/settings/getTeamSource.ts | 6 +-- .../manager/settings/getTournamentSource.ts | 6 +-- .../manager/settings/updateSettings.ts | 8 +-- .../manager/settings/updateTeamEmail.ts | 6 +-- src/handler/manager/temp/addNotOnTeam.ts | 4 +- .../manager/tournament/addScouterShift.ts | 8 +-- .../manager/tournament/getTeamRankings.ts | 2 +- .../tournament/getTeamsInTournament.ts | 2 +- src/handler/manager/updateNotes.ts | 6 +-- src/handler/slack/addSlackWorkspace.ts | 2 +- src/handler/slack/onboardingRedirect.ts | 2 +- src/handler/slack/processCommands.ts | 2 +- src/handler/slack/processEvents.ts | 2 +- src/handler/slack/sendWarningNotification.ts | 2 +- src/lib/clearCache.ts | 4 +- src/lib/deleteOldRequests.ts | 2 +- src/lib/fetchMatches.ts | 4 +- src/lib/fetchTeams.ts | 2 +- src/lib/fetchTournaments.ts | 2 +- src/lib/middleware/posthogMiddleware.ts | 6 +-- src/lib/middleware/requireAuth.ts | 2 +- src/lib/migrateDataSources.ts | 6 +-- src/lib/scheduleJobs.ts | 10 ++-- src/posthogClient.ts | 2 +- src/routes/analysis/analysis.routes.ts | 12 ----- src/routes/index.ts | 8 +-- src/routes/manager/apikey.routes.ts | 10 ++-- src/routes/manager/manager.routes.ts | 52 +++++++++---------- src/routes/manager/mutablepicklists.routes.ts | 12 ++--- src/routes/manager/onboarding.routes.ts | 16 +++--- src/routes/manager/picklists.routes.ts | 12 ++--- src/routes/manager/registeredteams.routes.ts | 10 ++-- src/routes/manager/scouters.routes.ts | 32 ++++++------ src/routes/manager/scoutershifts.routes.ts | 6 +-- src/routes/manager/scoutreports.routes.ts | 8 +-- src/routes/manager/settings.routes.ts | 14 ++--- src/routes/manager/tournaments.routes.ts | 8 +-- src/routes/slack/slack.routes.ts | 8 +-- src/server.ts | 8 +-- tsconfig.json | 7 ++- 139 files changed, 434 insertions(+), 437 deletions(-) diff --git a/.gitignore b/.gitignore index f19688c9..14b910b4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ node_modules dist .DS_Store .rdb -.vscode/ \ No newline at end of file +.vscode/ +scripts/ \ No newline at end of file diff --git a/src/app.ts b/src/app.ts index 4d94fa51..548995db 100644 --- a/src/app.ts +++ b/src/app.ts @@ -4,10 +4,10 @@ import cookieParser from "cookie-parser"; import "dotenv/config"; import { setupExpressErrorHandler } from "posthog-node"; -import { posthog } from "./posthogClient.js"; -import posthogReporter from "./lib/middleware/posthogMiddleware.js"; +import { posthog } from "@/src/posthogClient.js"; +import posthogReporter from "@/src/lib/middleware/posthogMiddleware.js"; -import routes from "./routes/index.js"; +import routes from "@/src/routes/index.js"; export const app = express(); diff --git a/src/handler/analysis/alliancePredictions/alliancePage.ts b/src/handler/analysis/alliancePredictions/alliancePage.ts index 60c6ca46..f510d655 100644 --- a/src/handler/analysis/alliancePredictions/alliancePage.ts +++ b/src/handler/analysis/alliancePredictions/alliancePage.ts @@ -1,10 +1,10 @@ import z from "zod"; -import { runAnalysis } from "../analysisFunction.js"; -import { FlippedRoleMap, Metric } from "../analysisConstants.js"; -import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; -import { autoPathsTeam } from "../autoPaths/autoPathsTeam.js"; -import { robotRole } from "../coreAnalysis/robotRole.js"; -import { averageManyFast } from "../coreAnalysis/averageManyFast.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +import { FlippedRoleMap, Metric } from "@/src/handler/analysis/analysisConstants.js"; +import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; +import { autoPathsTeam } from "@/src/handler/analysis/autoPaths/autoPathsTeam.js"; +import { robotRole } from "@/src/handler/analysis/coreAnalysis/robotRole.js"; +import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; import { RobotRole, User } from "@prisma/client"; const config = { diff --git a/src/handler/analysis/alliancePredictions/alliancePageResponse.ts b/src/handler/analysis/alliancePredictions/alliancePageResponse.ts index 5eaf6371..20d77111 100644 --- a/src/handler/analysis/alliancePredictions/alliancePageResponse.ts +++ b/src/handler/analysis/alliancePredictions/alliancePageResponse.ts @@ -1,6 +1,6 @@ import z from "zod"; -import { alliancePage } from "./alliancePage.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { alliancePage } from "@/src/handler/analysis/alliancePredictions/alliancePage.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const alliancePageResponse = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/alliancePredictions/matchPrediction.ts b/src/handler/analysis/alliancePredictions/matchPrediction.ts index ec7a3b44..6cf68a59 100644 --- a/src/handler/analysis/alliancePredictions/matchPrediction.ts +++ b/src/handler/analysis/alliancePredictions/matchPrediction.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { alliancePage } from "./alliancePage.js"; -import { matchPredictionLogic } from "./matchPredictionLogic.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { alliancePage } from "@/src/handler/analysis/alliancePredictions/alliancePage.js"; +import { matchPredictionLogic } from "@/src/handler/analysis/alliancePredictions/matchPredictionLogic.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const matchPrediction = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts b/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts index 47769fe1..fe382495 100644 --- a/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts +++ b/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { Metric } from "../analysisConstants.js"; -import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; -import { runAnalysis } from "../analysisFunction.js"; +import { Metric } from "@/src/handler/analysis/analysisConstants.js"; +import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; const config = { diff --git a/src/handler/analysis/analysisConstants.ts b/src/handler/analysis/analysisConstants.ts index c8a22cbf..b0653c01 100644 --- a/src/handler/analysis/analysisConstants.ts +++ b/src/handler/analysis/analysisConstants.ts @@ -7,8 +7,8 @@ import { AlgaePickup, User, } from "@prisma/client"; -import prismaClient from "../../prismaClient.js"; -import { DataSourceRule } from "./dataSourceRule.js"; +import prismaClient from "@/src/prismaClient.js"; +import { DataSourceRule } from "@/src/handler/analysis/dataSourceRule.js"; //add cooperation // Tunable constants diff --git a/src/handler/analysis/analysisFunction.ts b/src/handler/analysis/analysisFunction.ts index 2f9ac89e..36f04222 100644 --- a/src/handler/analysis/analysisFunction.ts +++ b/src/handler/analysis/analysisFunction.ts @@ -1,8 +1,8 @@ import z from "zod"; -import prismaClient from "../../prismaClient.js"; -import { dataSourceRuleSchema } from "./dataSourceRule.js"; -import { kv } from "../../redisClient.js"; -import { AnalysisContext } from "./analysisConstants.js"; +import prismaClient from "@/src/prismaClient.js"; +import { dataSourceRuleSchema } from "@/src/handler/analysis/dataSourceRule.js"; +import { kv } from "@/src/redisClient.js"; +import { AnalysisContext } from "@/src/handler/analysis/analysisConstants.js"; import { User } from "@prisma/client"; export type CreateKeyResult = { diff --git a/src/handler/analysis/analysisHandler.ts b/src/handler/analysis/analysisHandler.ts index 44f63999..5a44fc36 100644 --- a/src/handler/analysis/analysisHandler.ts +++ b/src/handler/analysis/analysisHandler.ts @@ -1,10 +1,10 @@ import { RequestHandler } from "express"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import prismaClient from "../../prismaClient.js"; -import { dataSourceRuleSchema } from "./dataSourceRule.js"; -import { kv } from "../../redisClient.js"; -import { AnalysisContext } from "./analysisConstants.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { dataSourceRuleSchema } from "@/src/handler/analysis/dataSourceRule.js"; +import { kv } from "@/src/redisClient.js"; +import { AnalysisContext } from "@/src/handler/analysis/analysisConstants.js"; export type AnalysisHandlerParamsSchema< T extends z.ZodObject, diff --git a/src/handler/analysis/autoPaths/autoPathsTeam.ts b/src/handler/analysis/autoPaths/autoPathsTeam.ts index c6b7ead8..4877933f 100644 --- a/src/handler/analysis/autoPaths/autoPathsTeam.ts +++ b/src/handler/analysis/autoPaths/autoPathsTeam.ts @@ -1,15 +1,15 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { runAnalysis } from "../analysisFunction.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; import { autoEnd, FlippedActionMap, FlippedPositionMap, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "../dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; import { User } from "@prisma/client"; interface AutoPosition { diff --git a/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts b/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts index f4a943e5..7fdfea12 100644 --- a/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts +++ b/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts @@ -1,4 +1,4 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { autoEnd, endgameToPoints, @@ -6,15 +6,15 @@ import { metricToEvent, swrConstant, ttlConstant, -} from "../analysisConstants.js"; -import { endgamePicklistTeamFast } from "../picklist/endgamePicklistTeamFast.js"; +} from "@/src/handler/analysis/analysisConstants.js"; +import { endgamePicklistTeamFast } from "@/src/handler/analysis/picklist/endgamePicklistTeamFast.js"; import { Event, Position, Prisma, ScoutReport } from "@prisma/client"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "../dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; import z from "zod"; -import { runAnalysis, AnalysisFunctionConfig } from "../analysisFunction.js"; +import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; // Accurately aggregate an analog metric on multiple teams at once (weighs matches equally regardless of extra scout reports). // Provides a timeline of metric value per match. diff --git a/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts b/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts index 29686bfb..c9bb07a3 100644 --- a/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts +++ b/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts @@ -1,18 +1,18 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { autoEnd, defaultEndgamePoints, endgameToPoints, Metric, metricToEvent, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import { Position, Prisma } from "@prisma/client"; import z from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../dataSourceRule.js"; -import { runAnalysis } from "../analysisFunction.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; const config = { argsSchema: z.object({ metric: z.nativeEnum(Metric) }), diff --git a/src/handler/analysis/coreAnalysis/averageManyFast.ts b/src/handler/analysis/coreAnalysis/averageManyFast.ts index ef03d129..f1f34192 100644 --- a/src/handler/analysis/coreAnalysis/averageManyFast.ts +++ b/src/handler/analysis/coreAnalysis/averageManyFast.ts @@ -1,4 +1,4 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { autoEnd, endgameToPoints, @@ -7,17 +7,17 @@ import { swrConstant, ttlConstant, allTournaments, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import { BargeResult, Position, Prisma } from "@prisma/client"; -import { endgameRuleOfSuccession } from "../picklist/endgamePicklistTeamFast.js"; +import { endgameRuleOfSuccession } from "@/src/handler/analysis/picklist/endgamePicklistTeamFast.js"; import { Event } from "@prisma/client"; -import { weightedTourAvgLeft } from "./arrayAndAverageTeams.js"; +import { weightedTourAvgLeft } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; import z from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../dataSourceRule.js"; -import { runAnalysis, AnalysisFunctionConfig } from "../analysisFunction.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; +import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; export interface ArrayFilter { diff --git a/src/handler/analysis/coreAnalysis/averageScoutReport.ts b/src/handler/analysis/coreAnalysis/averageScoutReport.ts index 04a589ba..d3a015e4 100644 --- a/src/handler/analysis/coreAnalysis/averageScoutReport.ts +++ b/src/handler/analysis/coreAnalysis/averageScoutReport.ts @@ -1,13 +1,13 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { autoEnd, endgameToPoints, Metric, metricToEvent, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import { EventAction, Position, User } from "@prisma/client"; import z from "zod"; -import { runAnalysis, AnalysisFunctionConfig } from "../analysisFunction.js"; +import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; export async function computeAverageScoutReport( scoutReportUuid: string, diff --git a/src/handler/analysis/coreAnalysis/nonEventMetric.ts b/src/handler/analysis/coreAnalysis/nonEventMetric.ts index 57257285..69484a17 100644 --- a/src/handler/analysis/coreAnalysis/nonEventMetric.ts +++ b/src/handler/analysis/coreAnalysis/nonEventMetric.ts @@ -1,18 +1,18 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { EventAction, User } from "@prisma/client"; import { breakdownNeg, breakdownPos, breakdownToEnum, MetricsBreakdown, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import z from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../dataSourceRule.js"; -import { runAnalysis } from "../analysisFunction.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; /** * Optimized function: Returns a mapping of each distinct (lowercased) metric value to its percentage, diff --git a/src/handler/analysis/coreAnalysis/robotRole.ts b/src/handler/analysis/coreAnalysis/robotRole.ts index 5983af80..8098c202 100644 --- a/src/handler/analysis/coreAnalysis/robotRole.ts +++ b/src/handler/analysis/coreAnalysis/robotRole.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { MetricsBreakdown } from "../analysisConstants.js"; -import { nonEventMetric, NonEventMetricResult } from "./nonEventMetric.js"; -import { runAnalysis, AnalysisFunctionConfig } from "../analysisFunction.js"; +import { MetricsBreakdown } from "@/src/handler/analysis/analysisConstants.js"; +import { nonEventMetric, NonEventMetricResult } from "@/src/handler/analysis/coreAnalysis/nonEventMetric.js"; +import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; const argsSchema = z.object({ team: z.number() }); diff --git a/src/handler/analysis/csv/getReportCSV.ts b/src/handler/analysis/csv/getReportCSV.ts index 68444cee..dcfd6e47 100644 --- a/src/handler/analysis/csv/getReportCSV.ts +++ b/src/handler/analysis/csv/getReportCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -16,12 +16,12 @@ import { TeamMatchData, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "../analysisConstants.js"; +import { autoEnd, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; // Scouting report condensed into a single dimension that can be pushed to a row in the csv export interface CondensedReport { diff --git a/src/handler/analysis/csv/getTeamCSV.ts b/src/handler/analysis/csv/getTeamCSV.ts index 55713b1e..397f9d57 100644 --- a/src/handler/analysis/csv/getTeamCSV.ts +++ b/src/handler/analysis/csv/getTeamCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -14,12 +14,12 @@ import { UnderShallowCage, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "../analysisConstants.js"; +import { autoEnd, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; interface AggregatedTeamData { teamNumber: number; diff --git a/src/handler/analysis/csv/getTeamMatchCSV.ts b/src/handler/analysis/csv/getTeamMatchCSV.ts index e1e1a4a9..7819ab5a 100644 --- a/src/handler/analysis/csv/getTeamMatchCSV.ts +++ b/src/handler/analysis/csv/getTeamMatchCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -15,13 +15,13 @@ import { Scouter, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "../analysisConstants.js"; +import { autoEnd, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; import { z } from "zod"; -import { CondensedReport } from "./getReportCSV.js"; +import { CondensedReport } from "@/src/handler/analysis/csv/getReportCSV.js"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "../dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; // Simplified scouting report with properties required for aggregation interface PointsReport { diff --git a/src/handler/analysis/picklist/endgamePicklistTeamFast.ts b/src/handler/analysis/picklist/endgamePicklistTeamFast.ts index b658cc4e..6df81e44 100644 --- a/src/handler/analysis/picklist/endgamePicklistTeamFast.ts +++ b/src/handler/analysis/picklist/endgamePicklistTeamFast.ts @@ -1,7 +1,7 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { BargeResult } from "@prisma/client"; -import { defaultEndgamePoints, endgameToPoints } from "../analysisConstants.js"; -import { ArrayFilter } from "../coreAnalysis/averageManyFast.js"; +import { defaultEndgamePoints, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; +import { ArrayFilter } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; // Number of endgame possibilities that result in points earned (essentially, successes) const numPointResults: number = Object.keys(BargeResult).reduce((acc, cur) => { diff --git a/src/handler/analysis/picklist/picklistShell.ts b/src/handler/analysis/picklist/picklistShell.ts index f072f06c..73ff779e 100644 --- a/src/handler/analysis/picklist/picklistShell.ts +++ b/src/handler/analysis/picklist/picklistShell.ts @@ -1,15 +1,15 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { addTournamentMatches } from "../../manager/addTournamentMatches.js"; +import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; import { Metric, metricsCategory, metricToName, picklistToMetric, -} from "../analysisConstants.js"; -import { averageManyFast } from "../coreAnalysis/averageManyFast.js"; -import { zScoreMany } from "./zScoreMany.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +} from "@/src/handler/analysis/analysisConstants.js"; +import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; +import { zScoreMany } from "@/src/handler/analysis/picklist/zScoreMany.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; /** * Main picklist endpoint. Note inconsistent strings make it confusing for this season. diff --git a/src/handler/analysis/picklist/zScoreMany.ts b/src/handler/analysis/picklist/zScoreMany.ts index e5ff82d5..edaf901d 100644 --- a/src/handler/analysis/picklist/zScoreMany.ts +++ b/src/handler/analysis/picklist/zScoreMany.ts @@ -4,8 +4,8 @@ import { metricsCategory, metricToName, picklistToMetric, -} from "../analysisConstants.js"; -import { computeRankFlag } from "../rankFlag.js"; +} from "@/src/handler/analysis/analysisConstants.js"; +import { computeRankFlag } from "@/src/handler/analysis/rankFlag.js"; /** * Take in data for many teams and return z-score values and breakdowns for queried metrics. diff --git a/src/handler/analysis/rankFlag.ts b/src/handler/analysis/rankFlag.ts index c046c61f..f22fcd81 100644 --- a/src/handler/analysis/rankFlag.ts +++ b/src/handler/analysis/rankFlag.ts @@ -1,6 +1,6 @@ import axios from "axios"; import z from "zod"; -import { runAnalysis, AnalysisFunctionConfig } from "./analysisFunction.js"; +import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; export async function computeRankFlag( diff --git a/src/handler/analysis/scoutingLead.ts b/src/handler/analysis/scoutingLead.ts index 25942736..88a6a2e9 100644 --- a/src/handler/analysis/scoutingLead.ts +++ b/src/handler/analysis/scoutingLead.ts @@ -1,7 +1,7 @@ // import { Request, Response } from "express"; -// import prismaClient from '../../prismaClient' +// import prismaClient from '@/src/prismaClient.js' // import z from 'zod' -// import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +// import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; // export const scoutingLead = async (req: AuthenticatedRequest, res : Response) => { // try { diff --git a/src/handler/analysis/scoutingLead/scouterScoutReports.ts b/src/handler/analysis/scoutingLead/scouterScoutReports.ts index 5323da1c..5bc5c536 100644 --- a/src/handler/analysis/scoutingLead/scouterScoutReports.ts +++ b/src/handler/analysis/scoutingLead/scouterScoutReports.ts @@ -1,6 +1,6 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { createAnalysisHandler } from "../../analysis/analysisHandler.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const scouterScoutReports = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/scoutingLead/scoutingLeadPage.ts b/src/handler/analysis/scoutingLead/scoutingLeadPage.ts index 69ba0c08..fb604344 100644 --- a/src/handler/analysis/scoutingLead/scoutingLeadPage.ts +++ b/src/handler/analysis/scoutingLead/scoutingLeadPage.ts @@ -1,12 +1,12 @@ // import { Request, Response } from "express"; -// import prismaClient from '../../../prismaClient' +// import prismaClient from '@/src/prismaClient.js' // import z from 'zod' -// import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth"; -// import { driverAbility, highNoteMap, matchTimeEnd, metricToEvent, stageMap } from "../analysisConstants.js"; -// import { autoPathSingleMatchSingleScoutReport } from "../autoPaths/autoPathSingleMatchSingleScoutReport"; -// import { singleMatchSingleScoutReport } from "../coreAnalysis/singleMatchSingleScoutReport"; -// import { cooperationSingleMatch } from "../coreAnalysis/cooperationSingleMatch"; -// // import { cooperationSingleMatch } from "./cooperationSingleMatch.js"; +// import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +// import { driverAbility, highNoteMap, matchTimeEnd, metricToEvent, stageMap } from "@/src/handler/analysis/analysisConstants.js"; +// import { autoPathSingleMatchSingleScoutReport } from "@/src/handler/analysis/autoPaths/autoPathSingleMatchSingleScoutReport"; +// import { singleMatchSingleScoutReport } from "@/src/handler/analysis/coreAnalysis/singleMatchSingleScoutReport"; +// import { cooperationSingleMatch } from "@/src/handler/analysis/coreAnalysis/cooperationSingleMatch"; +// // import { cooperationSingleMatch } from "@/src/handler/analysis/scoutingLead/cooperationSingleMatch"; // export const scoutingLeadPage = async (req : AuthenticatedRequest, res : Response) => { // try { diff --git a/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts b/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts index 12420a13..90c4bd2c 100644 --- a/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts +++ b/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts @@ -1,6 +1,6 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { runAnalysis } from "../analysisFunction.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; const config = { argsSchema: z.object({ scoutReportUuid: z.string() }), diff --git a/src/handler/analysis/specificMatchPage/autoPathScouter.ts b/src/handler/analysis/specificMatchPage/autoPathScouter.ts index 9690f203..0a654ad2 100644 --- a/src/handler/analysis/specificMatchPage/autoPathScouter.ts +++ b/src/handler/analysis/specificMatchPage/autoPathScouter.ts @@ -1,11 +1,11 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { FlippedActionMap, FlippedPositionMap, autoEnd, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import z from "zod"; -import { runAnalysis } from "../analysisFunction.js"; +import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; const config = { argsSchema: z.object({ matchKey: z.string(), scoutReportUuid: z.string() }), diff --git a/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts b/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts index a4650646..953e341c 100644 --- a/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts +++ b/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts @@ -1,13 +1,13 @@ // import { Request, Response } from "express"; -// import prismaClient from '../../../prismaClient' +// import prismaClient from '@/src/prismaClient.js' // import z from 'zod' -// import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth"; -// import { singleMatchEventsAverage } from "../coreAnalysis/singleMatchEventsAverage"; -// import { arrayAndAverageTeam } from "../coreAnalysis/arrayAndAverageTeam"; -// import { specificMatchPageMetrics } from "../analysisConstants.js"; -// import { singleMatchSingleScouter } from "../coreAnalysis/singleMatchSingleScouter"; +// import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +// import { singleMatchEventsAverage } from "@/src/handler/analysis/coreAnalysis/singleMatchEventsAverage"; +// import { arrayAndAverageTeam } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeam"; +// import { specificMatchPageMetrics } from "@/src/handler/analysis/analysisConstants.js"; +// import { singleMatchSingleScouter } from "@/src/handler/analysis/coreAnalysis/singleMatchSingleScouter"; // import { match } from "assert"; -// import { autoPathSingleMatchSingleScouter } from "../autoPaths/autoPathSingleMatchSingleScouter"; +// import { autoPathSingleMatchSingleScouter } from "@/src/handler/analysis/autoPaths/autoPathSingleMatchSingleScouter"; // export const matchPageAllScouters = async (req: AuthenticatedRequest, res: Response) => { // try { diff --git a/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts b/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts index 75cab18e..3749d035 100644 --- a/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts +++ b/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts @@ -1,15 +1,15 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { Metric, FlippedRoleMap, specificMatchPageMetrics, metricToName, -} from "../analysisConstants.js"; -import { BargeResultReverseMap } from "../../manager/managerConstants.js"; -import { autoPathScouter } from "./autoPathScouter.js"; -import { averageScoutReport } from "../coreAnalysis/averageScoutReport.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +} from "@/src/handler/analysis/analysisConstants.js"; +import { BargeResultReverseMap } from "@/src/handler/manager/managerConstants.js"; +import { autoPathScouter } from "@/src/handler/analysis/specificMatchPage/autoPathScouter.js"; +import { averageScoutReport } from "@/src/handler/analysis/coreAnalysis/averageScoutReport.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const matchPageSpecificScouter = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts b/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts index 73cc7a6a..8cf27a9e 100644 --- a/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts +++ b/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts @@ -1,7 +1,7 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { UserRole } from "@prisma/client"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const scoutReportForMatch = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts b/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts index 4cb7b98f..87fa21c0 100644 --- a/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts +++ b/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts @@ -1,7 +1,7 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { FlippedActionMap, FlippedPositionMap } from "../analysisConstants.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { FlippedActionMap, FlippedPositionMap } from "@/src/handler/analysis/analysisConstants.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const timelineForScoutReport = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/breakdownDetails.ts b/src/handler/analysis/teamLookUp/breakdownDetails.ts index 3a59d8a4..ed0f8f37 100644 --- a/src/handler/analysis/teamLookUp/breakdownDetails.ts +++ b/src/handler/analysis/teamLookUp/breakdownDetails.ts @@ -6,14 +6,14 @@ import { breakdownPos, lowercaseToBreakdown, MetricsBreakdown, -} from "../analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; import { EventAction } from "@prisma/client"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "../dataSourceRule.js"; -import prismaClient from "../../../prismaClient.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; +import prismaClient from "@/src/prismaClient.js"; export const breakdownDetails = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/breakdownMetrics.ts b/src/handler/analysis/teamLookUp/breakdownMetrics.ts index ab2a371f..37002c81 100644 --- a/src/handler/analysis/teamLookUp/breakdownMetrics.ts +++ b/src/handler/analysis/teamLookUp/breakdownMetrics.ts @@ -1,10 +1,10 @@ import z from "zod"; -import { nonEventMetric } from "../coreAnalysis/nonEventMetric.js"; +import { nonEventMetric } from "@/src/handler/analysis/coreAnalysis/nonEventMetric.js"; import { lowercaseToBreakdown, MetricsBreakdown, -} from "../analysisConstants.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +} from "@/src/handler/analysis/analysisConstants.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const breakdownMetrics = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/categoryMetrics.ts b/src/handler/analysis/teamLookUp/categoryMetrics.ts index 802f9c3b..242eabff 100644 --- a/src/handler/analysis/teamLookUp/categoryMetrics.ts +++ b/src/handler/analysis/teamLookUp/categoryMetrics.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { metricsCategory, metricToName } from "../analysisConstants.js"; -import { averageManyFast } from "../coreAnalysis/averageManyFast.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { metricsCategory, metricToName } from "@/src/handler/analysis/analysisConstants.js"; +import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const categoryMetrics = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/detailsPage.ts b/src/handler/analysis/teamLookUp/detailsPage.ts index d816df35..253e6bcb 100644 --- a/src/handler/analysis/teamLookUp/detailsPage.ts +++ b/src/handler/analysis/teamLookUp/detailsPage.ts @@ -1,9 +1,9 @@ import z from "zod"; -import { autoPathsTeam } from "../autoPaths/autoPathsTeam.js"; -import { averageAllTeamFast } from "../coreAnalysis/averageAllTeamFast.js"; -import { Metric, metricsToNumber } from "../analysisConstants.js"; -import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { autoPathsTeam } from "@/src/handler/analysis/autoPaths/autoPathsTeam.js"; +import { averageAllTeamFast } from "@/src/handler/analysis/coreAnalysis/averageAllTeamFast.js"; +import { Metric, metricsToNumber } from "@/src/handler/analysis/analysisConstants.js"; +import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const detailsPage = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/getNotes.ts b/src/handler/analysis/teamLookUp/getNotes.ts index 02e7ddf8..fb8ae4ac 100644 --- a/src/handler/analysis/teamLookUp/getNotes.ts +++ b/src/handler/analysis/teamLookUp/getNotes.ts @@ -1,10 +1,10 @@ -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "../dataSourceRule.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const getNotes = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/multipleFlags.ts b/src/handler/analysis/teamLookUp/multipleFlags.ts index 972ef5ae..b9077288 100644 --- a/src/handler/analysis/teamLookUp/multipleFlags.ts +++ b/src/handler/analysis/teamLookUp/multipleFlags.ts @@ -1,8 +1,8 @@ import z from "zod"; -import { rankFlag } from "../rankFlag.js"; -import { metricsCategory, metricToName } from "../analysisConstants.js"; -import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; -import { createAnalysisHandler } from "../analysisHandler.js"; +import { rankFlag } from "@/src/handler/analysis/rankFlag.js"; +import { metricsCategory, metricToName } from "@/src/handler/analysis/analysisConstants.js"; +import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; +import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const multipleFlags = createAnalysisHandler({ params: { diff --git a/src/handler/manager/addTournamentMatches.ts b/src/handler/manager/addTournamentMatches.ts index 40bf81db..9073f2dc 100644 --- a/src/handler/manager/addTournamentMatches.ts +++ b/src/handler/manager/addTournamentMatches.ts @@ -1,4 +1,4 @@ -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import axios from "axios"; diff --git a/src/handler/manager/apikey/addApiKey.ts b/src/handler/manager/apikey/addApiKey.ts index beb7b593..9c8bccf7 100644 --- a/src/handler/manager/apikey/addApiKey.ts +++ b/src/handler/manager/apikey/addApiKey.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { createHash, randomBytes } from "crypto"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const addApiKey = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/apikey/getApiKeys.ts b/src/handler/manager/apikey/getApiKeys.ts index 49b956ca..03b8424b 100644 --- a/src/handler/manager/apikey/getApiKeys.ts +++ b/src/handler/manager/apikey/getApiKeys.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const getApiKeys = async ( diff --git a/src/handler/manager/apikey/renameApiKey.ts b/src/handler/manager/apikey/renameApiKey.ts index 131729e4..c2286b93 100644 --- a/src/handler/manager/apikey/renameApiKey.ts +++ b/src/handler/manager/apikey/renameApiKey.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const renameApiKey = async ( diff --git a/src/handler/manager/apikey/revokeApiKey.ts b/src/handler/manager/apikey/revokeApiKey.ts index b91b5716..a975b5ab 100644 --- a/src/handler/manager/apikey/revokeApiKey.ts +++ b/src/handler/manager/apikey/revokeApiKey.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const revokeApiKey = async ( diff --git a/src/handler/manager/deleteUser.ts b/src/handler/manager/deleteUser.ts index 7d3679b6..ccf5aec4 100644 --- a/src/handler/manager/deleteUser.ts +++ b/src/handler/manager/deleteUser.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const deleteUser = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getAnalysts.ts b/src/handler/manager/getAnalysts.ts index 9683c6e7..05d1620b 100644 --- a/src/handler/manager/getAnalysts.ts +++ b/src/handler/manager/getAnalysts.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const getAnalysts = async ( diff --git a/src/handler/manager/getMatchResults.ts b/src/handler/manager/getMatchResults.ts index 9aa759b3..3d346592 100644 --- a/src/handler/manager/getMatchResults.ts +++ b/src/handler/manager/getMatchResults.ts @@ -1,9 +1,9 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { TeamMatchData, ScoutReport } from "@prisma/client"; -import { computeAverageScoutReport } from "../analysis/coreAnalysis/averageScoutReport.js"; -import { Metric } from "../analysis/analysisConstants.js"; +import { computeAverageScoutReport } from "@/src/handler/analysis/coreAnalysis/averageScoutReport.js"; +import { Metric } from "@/src/handler/analysis/analysisConstants.js"; export const getMatchResults = async ( req: Request, diff --git a/src/handler/manager/getMatches.ts b/src/handler/manager/getMatches.ts index e246277c..6ce5fdb3 100644 --- a/src/handler/manager/getMatches.ts +++ b/src/handler/manager/getMatches.ts @@ -1,15 +1,15 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { addTournamentMatches } from "./addTournamentMatches.js"; -import { ReverseMatchTypeMap } from "./managerConstants.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; +import { ReverseMatchTypeMap } from "@/src/handler/manager/managerConstants.js"; import { MatchType, Prisma } from "@prisma/client"; -import { swrConstant, ttlConstant } from "../analysis/analysisConstants.js"; +import { swrConstant, ttlConstant } from "@/src/handler/analysis/analysisConstants.js"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "../analysis/dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; /** * @param params.tournament tournament to pull from diff --git a/src/handler/manager/getProfile.ts b/src/handler/manager/getProfile.ts index 6c7907c5..3730dac9 100644 --- a/src/handler/manager/getProfile.ts +++ b/src/handler/manager/getProfile.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getProfile = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTeamCode.ts b/src/handler/manager/getTeamCode.ts index 7079d318..8daa36c2 100644 --- a/src/handler/manager/getTeamCode.ts +++ b/src/handler/manager/getTeamCode.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getTeamCode = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTeamTournamentStatus.ts b/src/handler/manager/getTeamTournamentStatus.ts index 1986c138..4a3a63c4 100644 --- a/src/handler/manager/getTeamTournamentStatus.ts +++ b/src/handler/manager/getTeamTournamentStatus.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getTeamTournamentStatus = async ( diff --git a/src/handler/manager/getTeams.ts b/src/handler/manager/getTeams.ts index a1c589ba..9892ff0d 100644 --- a/src/handler/manager/getTeams.ts +++ b/src/handler/manager/getTeams.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getTeams = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTournamentWithSchedule.ts b/src/handler/manager/getTournamentWithSchedule.ts index 5c22c6f6..41a039c0 100644 --- a/src/handler/manager/getTournamentWithSchedule.ts +++ b/src/handler/manager/getTournamentWithSchedule.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getTournamentsWithSchedule = async ( diff --git a/src/handler/manager/getTournaments.ts b/src/handler/manager/getTournaments.ts index 3d0459ff..f77f423e 100644 --- a/src/handler/manager/getTournaments.ts +++ b/src/handler/manager/getTournaments.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getTournaments = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getUsers.ts b/src/handler/manager/getUsers.ts index 0660a718..3511227d 100644 --- a/src/handler/manager/getUsers.ts +++ b/src/handler/manager/getUsers.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getUsers = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/addMutablePicklist.ts b/src/handler/manager/mutablepicklists/addMutablePicklist.ts index 1687d9d1..138a21a3 100644 --- a/src/handler/manager/mutablepicklists/addMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/addMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const addMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts b/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts index 4657d3c0..850f5707 100644 --- a/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const deleteMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/getMutablePicklists.ts b/src/handler/manager/mutablepicklists/getMutablePicklists.ts index a0d81987..f12bc92b 100644 --- a/src/handler/manager/mutablepicklists/getMutablePicklists.ts +++ b/src/handler/manager/mutablepicklists/getMutablePicklists.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getMutablePicklists = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts b/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts index ceb6fc25..0da89469 100644 --- a/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getSingleMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/updateMutablePicklist.ts b/src/handler/manager/mutablepicklists/updateMutablePicklist.ts index bc75ba45..0c6fbf63 100644 --- a/src/handler/manager/mutablepicklists/updateMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/updateMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const updateMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/addUsername.ts b/src/handler/manager/onboarding/addUsername.ts index c3e1b6fa..8002b118 100644 --- a/src/handler/manager/onboarding/addUsername.ts +++ b/src/handler/manager/onboarding/addUsername.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const addUsername = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/addWebsite.ts b/src/handler/manager/onboarding/addWebsite.ts index ddb2b94b..3ec1113e 100644 --- a/src/handler/manager/onboarding/addWebsite.ts +++ b/src/handler/manager/onboarding/addWebsite.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; -import { sendSlackVerification } from "../sendSlackVerification.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { sendSlackVerification } from "@/src/handler/manager/sendSlackVerification.js"; export const addWebsite = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/approveTeamEmail.ts b/src/handler/manager/onboarding/approveTeamEmail.ts index 0b34ca8b..547078a8 100644 --- a/src/handler/manager/onboarding/approveTeamEmail.ts +++ b/src/handler/manager/onboarding/approveTeamEmail.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; diff --git a/src/handler/manager/onboarding/checkCode.ts b/src/handler/manager/onboarding/checkCode.ts index d03347fd..4cfd2dfa 100644 --- a/src/handler/manager/onboarding/checkCode.ts +++ b/src/handler/manager/onboarding/checkCode.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const checkCode = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/resendEmail.ts b/src/handler/manager/onboarding/resendEmail.ts index 830fbf40..cc6554ab 100644 --- a/src/handler/manager/onboarding/resendEmail.ts +++ b/src/handler/manager/onboarding/resendEmail.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { Resend } from "resend"; import { randomBytes } from "crypto"; import { DateTime } from "luxon"; diff --git a/src/handler/manager/picklists/addPicklist.ts b/src/handler/manager/picklists/addPicklist.ts index 4cdff7ab..3bbd6840 100644 --- a/src/handler/manager/picklists/addPicklist.ts +++ b/src/handler/manager/picklists/addPicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const addPicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/deletePicklist.ts b/src/handler/manager/picklists/deletePicklist.ts index 376fd5ea..f98f07ce 100644 --- a/src/handler/manager/picklists/deletePicklist.ts +++ b/src/handler/manager/picklists/deletePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const deletePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/getPicklists.ts b/src/handler/manager/picklists/getPicklists.ts index a44f19b7..bfce4ee9 100644 --- a/src/handler/manager/picklists/getPicklists.ts +++ b/src/handler/manager/picklists/getPicklists.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getPicklists = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/getSinglePicklist.ts b/src/handler/manager/picklists/getSinglePicklist.ts index 44f2c9cc..d0dc9f37 100644 --- a/src/handler/manager/picklists/getSinglePicklist.ts +++ b/src/handler/manager/picklists/getSinglePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getSinglePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/updatePicklist.ts b/src/handler/manager/picklists/updatePicklist.ts index d89e1119..a168954a 100644 --- a/src/handler/manager/picklists/updatePicklist.ts +++ b/src/handler/manager/picklists/updatePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const updatePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/pitDisplay.ts b/src/handler/manager/pitDisplay.ts index 438b5645..62576a5f 100644 --- a/src/handler/manager/pitDisplay.ts +++ b/src/handler/manager/pitDisplay.ts @@ -1,11 +1,11 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import axios from "axios"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { matchPredictionLogic } from "../analysis/alliancePredictions/matchPredictionLogic.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { matchPredictionLogic } from "@/src/handler/analysis/alliancePredictions/matchPredictionLogic.js"; import { MatchType } from "@prisma/client"; -import { MatchEnumToAbrivation } from "./managerConstants.js"; +import { MatchEnumToAbrivation } from "@/src/handler/manager/managerConstants.js"; export const pitDisplay = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/registeredteams/addRegisteredTeam.ts b/src/handler/manager/registeredteams/addRegisteredTeam.ts index 210c5d1d..b13fd120 100644 --- a/src/handler/manager/registeredteams/addRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/addRegisteredTeam.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { sendVerificationEmail } from "./resendEmail.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { sendVerificationEmail } from "@/src/handler/manager/onboarding/resendEmail.js"; export const addRegisteredTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/registeredteams/approveRegisteredTeam.ts b/src/handler/manager/registeredteams/approveRegisteredTeam.ts index 0586980b..6b3270a9 100644 --- a/src/handler/manager/registeredteams/approveRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/approveRegisteredTeam.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const approveRegisteredTeam = async ( diff --git a/src/handler/manager/registeredteams/checkRegisteredTeam.ts b/src/handler/manager/registeredteams/checkRegisteredTeam.ts index 1f0fac4e..58dc68ec 100644 --- a/src/handler/manager/registeredteams/checkRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/checkRegisteredTeam.ts @@ -1,7 +1,7 @@ -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { Response } from "express"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const checkRegisteredTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/registeredteams/rejectRegisteredTeam.ts b/src/handler/manager/registeredteams/rejectRegisteredTeam.ts index 5e3d2011..41eb6c95 100644 --- a/src/handler/manager/registeredteams/rejectRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/rejectRegisteredTeam.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const rejectRegisteredTeam = async ( diff --git a/src/handler/manager/scouters/addNewScouter.ts b/src/handler/manager/scouters/addNewScouter.ts index 0b3806bb..117c28a6 100644 --- a/src/handler/manager/scouters/addNewScouter.ts +++ b/src/handler/manager/scouters/addNewScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const addNewScouter = async ( diff --git a/src/handler/manager/scouters/addScouterDashboard.ts b/src/handler/manager/scouters/addScouterDashboard.ts index 8528a659..b5a2a334 100644 --- a/src/handler/manager/scouters/addScouterDashboard.ts +++ b/src/handler/manager/scouters/addScouterDashboard.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const addScouterDashboard = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/archiveScouter.ts b/src/handler/manager/scouters/archiveScouter.ts index 6c7b38b3..5b43f6d7 100644 --- a/src/handler/manager/scouters/archiveScouter.ts +++ b/src/handler/manager/scouters/archiveScouter.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const archiveScouter = async ( diff --git a/src/handler/manager/scouters/changeNameScouter.ts b/src/handler/manager/scouters/changeNameScouter.ts index b6c0d327..6a8a5ffc 100644 --- a/src/handler/manager/scouters/changeNameScouter.ts +++ b/src/handler/manager/scouters/changeNameScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const changeNameScouter = async ( diff --git a/src/handler/manager/scouters/checkCodeScouter.ts b/src/handler/manager/scouters/checkCodeScouter.ts index b08454c8..8745de02 100644 --- a/src/handler/manager/scouters/checkCodeScouter.ts +++ b/src/handler/manager/scouters/checkCodeScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const checkCodeScouter = async ( diff --git a/src/handler/manager/scouters/deleteScouter.ts b/src/handler/manager/scouters/deleteScouter.ts index a07731e2..a4afc531 100644 --- a/src/handler/manager/scouters/deleteScouter.ts +++ b/src/handler/manager/scouters/deleteScouter.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { invalidateCache } from "../../lib/clearCache.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { invalidateCache } from "@/src/lib/clearCache.js"; export const deleteScouter = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/emailTeamCode.ts b/src/handler/manager/scouters/emailTeamCode.ts index b7652cda..362b2726 100644 --- a/src/handler/manager/scouters/emailTeamCode.ts +++ b/src/handler/manager/scouters/emailTeamCode.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; import z from "zod"; import { Resend } from "resend"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; export const emailTeamCode = async ( req: Request, diff --git a/src/handler/manager/scouters/getScheduleForScouter.ts b/src/handler/manager/scouters/getScheduleForScouter.ts index 50325b88..d474e353 100644 --- a/src/handler/manager/scouters/getScheduleForScouter.ts +++ b/src/handler/manager/scouters/getScheduleForScouter.ts @@ -1,9 +1,9 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { MatchTypeMap, ScouterScheduleMap } from "../managerConstants.js"; +import { MatchTypeMap, ScouterScheduleMap } from "@/src/handler/manager/managerConstants.js"; import SHA256 from "crypto-js/sha256.js"; -import { addTournamentMatches } from "../addTournamentMatches.js"; +import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; export const getScheduleForScouter = async ( req: Request, diff --git a/src/handler/manager/scouters/getScouterTournaments.ts b/src/handler/manager/scouters/getScouterTournaments.ts index 626072a9..975cf852 100644 --- a/src/handler/manager/scouters/getScouterTournaments.ts +++ b/src/handler/manager/scouters/getScouterTournaments.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getScouterTournaments = async ( diff --git a/src/handler/manager/scouters/getScouters.ts b/src/handler/manager/scouters/getScouters.ts index 6218fae1..4abcab50 100644 --- a/src/handler/manager/scouters/getScouters.ts +++ b/src/handler/manager/scouters/getScouters.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import z from "zod"; export const getScouters = async ( diff --git a/src/handler/manager/scouters/getScoutersOnTeam.ts b/src/handler/manager/scouters/getScoutersOnTeam.ts index d7a393e7..ed68bde7 100644 --- a/src/handler/manager/scouters/getScoutersOnTeam.ts +++ b/src/handler/manager/scouters/getScoutersOnTeam.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getScoutersOnTeam = async ( diff --git a/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts b/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts index 03905ca5..57134c1b 100644 --- a/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts +++ b/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getTournamentForScouterWithSchedule = async ( diff --git a/src/handler/manager/scouters/scoutingLeadProgressPage.ts b/src/handler/manager/scouters/scoutingLeadProgressPage.ts index 5fb7598c..6ec80282 100644 --- a/src/handler/manager/scouters/scoutingLeadProgressPage.ts +++ b/src/handler/manager/scouters/scoutingLeadProgressPage.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const scoutingLeadProgressPage = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/unarchiveScouter.ts b/src/handler/manager/scouters/unarchiveScouter.ts index 4fd5576c..f9dd0ced 100644 --- a/src/handler/manager/scouters/unarchiveScouter.ts +++ b/src/handler/manager/scouters/unarchiveScouter.ts @@ -1,6 +1,6 @@ -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; import { Response } from "express"; diff --git a/src/handler/manager/scouters/updateRoleToScoutingLead.ts b/src/handler/manager/scouters/updateRoleToScoutingLead.ts index 50e7ae11..d9cb481d 100644 --- a/src/handler/manager/scouters/updateRoleToScoutingLead.ts +++ b/src/handler/manager/scouters/updateRoleToScoutingLead.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const updateRoleToScoutingLead = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/updateScouterName.ts b/src/handler/manager/scouters/updateScouterName.ts index 8cfb95a5..a5ace904 100644 --- a/src/handler/manager/scouters/updateScouterName.ts +++ b/src/handler/manager/scouters/updateScouterName.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const updateScouterName = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts b/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts index 635c5996..550116bd 100644 --- a/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts +++ b/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts @@ -1,5 +1,5 @@ -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; //uuid is when editing a shift so it doesnt check that its over lapping with itself export const checkScouterShiftMatches = async ( diff --git a/src/handler/manager/scoutershifts/deleteScouterShift.ts b/src/handler/manager/scoutershifts/deleteScouterShift.ts index 61447b99..be9bfc84 100644 --- a/src/handler/manager/scoutershifts/deleteScouterShift.ts +++ b/src/handler/manager/scoutershifts/deleteScouterShift.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const deleteScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutershifts/updateScouterShift.ts b/src/handler/manager/scoutershifts/updateScouterShift.ts index 0552af0d..d9be8259 100644 --- a/src/handler/manager/scoutershifts/updateScouterShift.ts +++ b/src/handler/manager/scoutershifts/updateScouterShift.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; -import { checkScouterShiftMatches } from "./checkScouterShiftMatches.js"; -import { checkOnlyOneInstanceOfScouter } from "../checkOnlyInstanceOfScouter.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { checkScouterShiftMatches } from "@/src/handler/manager/scoutershifts/checkScouterShiftMatches.js"; +import { checkOnlyOneInstanceOfScouter } from "@/src/handler/manager/checkOnlyInstanceOfScouter.js"; export const updateScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutreports/addScoutReport.ts b/src/handler/manager/scoutreports/addScoutReport.ts index 1e17e4da..78053d8a 100644 --- a/src/handler/manager/scoutreports/addScoutReport.ts +++ b/src/handler/manager/scoutreports/addScoutReport.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; import { AlgaePickupMap, @@ -11,8 +11,8 @@ import { UnderShallowCageMap, RobotRoleMap, EventActionMap, -} from "./managerConstants.js"; -import { addTournamentMatches } from "./addTournamentMatches.js"; +} from "@/src/handler/manager/managerConstants.js"; +import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; import { EventAction, Position } from "@prisma/client"; import { AlgaePickup, @@ -23,8 +23,8 @@ import { RobotRole, UnderShallowCage, } from "@prisma/client"; -import { sendWarningToSlack } from "../slack/sendWarningNotification.js"; -import { invalidateCache } from "../../lib/clearCache.js"; +import { sendWarningToSlack } from "@/src/handler/slack/sendWarningNotification.js"; +import { invalidateCache } from "@/src/lib/clearCache.js"; export const addScoutReport = async ( req: Request, @@ -307,3 +307,6 @@ export const addScoutReport = async ( res.status(500).send({ error: error, displayError: "Error" }); } }; + + + diff --git a/src/handler/manager/scoutreports/addScoutReportDashboard.ts b/src/handler/manager/scoutreports/addScoutReportDashboard.ts index c2026ae4..d1cd22de 100644 --- a/src/handler/manager/scoutreports/addScoutReportDashboard.ts +++ b/src/handler/manager/scoutreports/addScoutReportDashboard.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { CoralPickupMap, AlgaePickupMap, @@ -12,9 +12,9 @@ import { UnderShallowCageMap, RobotRoleMap, EventActionMap, -} from "./managerConstants.js"; -import { addTournamentMatches } from "./addTournamentMatches.js"; -import { totalPointsScoutingLead } from "../analysis/scoutingLead/totalPointsScoutingLead.js"; +} from "@/src/handler/manager/managerConstants.js"; +import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; +import { totalPointsScoutingLead } from "@/src/handler/analysis/scoutingLead/totalPointsScoutingLead.js"; import { AlgaePickup, BargeResult, @@ -26,7 +26,7 @@ import { RobotRole, UnderShallowCage, } from "@prisma/client"; -import { invalidateCache } from "../../lib/clearCache.js"; +import { invalidateCache } from "@/src/lib/clearCache.js"; export const addScoutReportDashboard = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutreports/deleteScoutReport.ts b/src/handler/manager/scoutreports/deleteScoutReport.ts index fde810f4..01f4fc31 100644 --- a/src/handler/manager/scoutreports/deleteScoutReport.ts +++ b/src/handler/manager/scoutreports/deleteScoutReport.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { invalidateCache } from "../../lib/clearCache.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { invalidateCache } from "@/src/lib/clearCache.js"; export const deleteScoutReport = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutreports/getScoutReport.ts b/src/handler/manager/scoutreports/getScoutReport.ts index a3330e29..cc26639a 100644 --- a/src/handler/manager/scoutreports/getScoutReport.ts +++ b/src/handler/manager/scoutreports/getScoutReport.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const getScoutReport = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/addTeamSource.ts b/src/handler/manager/settings/addTeamSource.ts index 5361166d..743653f0 100644 --- a/src/handler/manager/settings/addTeamSource.ts +++ b/src/handler/manager/settings/addTeamSource.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { allTeamNumbers } from "../analysis/analysisConstants.js"; -import { arrayToRule } from "../../lib/migrateDataSources.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { allTeamNumbers } from "@/src/handler/analysis/analysisConstants.js"; +import { arrayToRule } from "@/src/lib/migrateDataSources.js"; export const addTeamSource = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/addTournamentSource.ts b/src/handler/manager/settings/addTournamentSource.ts index 229e8d13..2bf5ef8d 100644 --- a/src/handler/manager/settings/addTournamentSource.ts +++ b/src/handler/manager/settings/addTournamentSource.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { allTournaments } from "../analysis/analysisConstants.js"; -import { arrayToRule } from "../../lib/migrateDataSources.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { allTournaments } from "@/src/handler/analysis/analysisConstants.js"; +import { arrayToRule } from "@/src/lib/migrateDataSources.js"; export const addTournamentSource = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/getTeamSource.ts b/src/handler/manager/settings/getTeamSource.ts index 83e19525..5174251b 100644 --- a/src/handler/manager/settings/getTeamSource.ts +++ b/src/handler/manager/settings/getTeamSource.ts @@ -1,11 +1,11 @@ import { Response } from "express"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "../analysis/dataSourceRule.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; import z from "zod"; -import { allTeamNumbers } from "../analysis/analysisConstants.js"; +import { allTeamNumbers } from "@/src/handler/analysis/analysisConstants.js"; export const getTeamSource = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/getTournamentSource.ts b/src/handler/manager/settings/getTournamentSource.ts index 41748439..5c77ec41 100644 --- a/src/handler/manager/settings/getTournamentSource.ts +++ b/src/handler/manager/settings/getTournamentSource.ts @@ -1,10 +1,10 @@ import { Response } from "express"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "../../analysis/dataSourceRule.js"; -import { allTournaments } from "../../analysis/analysisConstants.js"; +} from "@/src/handler/analysis/dataSourceRule.js"; +import { allTournaments } from "@/src/handler/analysis/analysisConstants.js"; import z from "zod"; export const getTournamentSource = async ( diff --git a/src/handler/manager/settings/updateSettings.ts b/src/handler/manager/settings/updateSettings.ts index 62a3a22b..5decaf27 100644 --- a/src/handler/manager/settings/updateSettings.ts +++ b/src/handler/manager/settings/updateSettings.ts @@ -1,13 +1,13 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { arrayToRule } from "../../lib/migrateDataSources.js"; +import { arrayToRule } from "@/src/lib/migrateDataSources.js"; import { allTeamNumbers, allTournaments, -} from "../analysis/analysisConstants.js"; +} from "@/src/handler/analysis/analysisConstants.js"; export const updateSettings = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/updateTeamEmail.ts b/src/handler/manager/settings/updateTeamEmail.ts index ccfc6e90..786b1745 100644 --- a/src/handler/manager/settings/updateTeamEmail.ts +++ b/src/handler/manager/settings/updateTeamEmail.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; -import { sendVerificationEmail } from "../onboarding/resendEmail.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { sendVerificationEmail } from "@/src/handler/manager/onboarding/resendEmail.js"; export const updateTeamEmail = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/temp/addNotOnTeam.ts b/src/handler/manager/temp/addNotOnTeam.ts index ea8c6c32..001c774e 100644 --- a/src/handler/manager/temp/addNotOnTeam.ts +++ b/src/handler/manager/temp/addNotOnTeam.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import prismaClient from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; export const addNotOnTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/tournament/addScouterShift.ts b/src/handler/manager/tournament/addScouterShift.ts index 9e59de6b..09f8eb08 100644 --- a/src/handler/manager/tournament/addScouterShift.ts +++ b/src/handler/manager/tournament/addScouterShift.ts @@ -1,10 +1,10 @@ import { Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; -import { checkOnlyOneInstanceOfScouter } from "../checkOnlyInstanceOfScouter.js"; -import { checkScouterShiftMatches } from "../scoutershifts/checkScouterShiftMatches.js"; +import { checkOnlyOneInstanceOfScouter } from "@/src/handler/manager/checkOnlyInstanceOfScouter.js"; +import { checkScouterShiftMatches } from "@/src/handler/manager/scoutershifts/checkScouterShiftMatches.js"; export const addScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/tournament/getTeamRankings.ts b/src/handler/manager/tournament/getTeamRankings.ts index fd6ba5f9..baf523db 100644 --- a/src/handler/manager/tournament/getTeamRankings.ts +++ b/src/handler/manager/tournament/getTeamRankings.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getTeamRankings = async ( diff --git a/src/handler/manager/tournament/getTeamsInTournament.ts b/src/handler/manager/tournament/getTeamsInTournament.ts index 9555b14a..10196605 100644 --- a/src/handler/manager/tournament/getTeamsInTournament.ts +++ b/src/handler/manager/tournament/getTeamsInTournament.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const getTeamsInTournament = async ( diff --git a/src/handler/manager/updateNotes.ts b/src/handler/manager/updateNotes.ts index d219bea3..5e0fa395 100644 --- a/src/handler/manager/updateNotes.ts +++ b/src/handler/manager/updateNotes.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; -import { invalidateCache } from "../../lib/clearCache.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { invalidateCache } from "@/src/lib/clearCache.js"; export const updateNotes = async ( req: AuthenticatedRequest, diff --git a/src/handler/slack/addSlackWorkspace.ts b/src/handler/slack/addSlackWorkspace.ts index a17b5603..0db43015 100644 --- a/src/handler/slack/addSlackWorkspace.ts +++ b/src/handler/slack/addSlackWorkspace.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const addSlackWorkspace = async ( diff --git a/src/handler/slack/onboardingRedirect.ts b/src/handler/slack/onboardingRedirect.ts index e201f1fb..f1910979 100644 --- a/src/handler/slack/onboardingRedirect.ts +++ b/src/handler/slack/onboardingRedirect.ts @@ -1,4 +1,4 @@ -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { Request, Response } from "express"; import z from "zod"; diff --git a/src/handler/slack/processCommands.ts b/src/handler/slack/processCommands.ts index 12378f90..c92ba3ae 100644 --- a/src/handler/slack/processCommands.ts +++ b/src/handler/slack/processCommands.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const processCommand = async ( diff --git a/src/handler/slack/processEvents.ts b/src/handler/slack/processEvents.ts index 42c62ac8..4152f6ef 100644 --- a/src/handler/slack/processEvents.ts +++ b/src/handler/slack/processEvents.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import z from "zod"; export const processEvent = async ( diff --git a/src/handler/slack/sendWarningNotification.ts b/src/handler/slack/sendWarningNotification.ts index a20a4207..4d3b6298 100644 --- a/src/handler/slack/sendWarningNotification.ts +++ b/src/handler/slack/sendWarningNotification.ts @@ -1,6 +1,6 @@ // Require the Node Slack SDK package (github.com/slackapi/node-slack-sdk) import { WebClient } from "@slack/web-api"; -import prismaClient from "../../prismaClient.js"; +import prismaClient from "@/src/prismaClient.js"; import { TeamMatchData, WarningType } from "@prisma/client"; // WebClient instantiates a client that can call API methods diff --git a/src/lib/clearCache.ts b/src/lib/clearCache.ts index 15ed8030..d1c28865 100644 --- a/src/lib/clearCache.ts +++ b/src/lib/clearCache.ts @@ -1,5 +1,5 @@ -import prismaClient from "../prismaClient.js"; -import { kv } from "../redisClient.js"; +import prismaClient from "@/src/prismaClient.js"; +import { kv } from "@/src/redisClient.js"; export const clearCache = async () => { await prismaClient.cachedAnalysis.deleteMany(); diff --git a/src/lib/deleteOldRequests.ts b/src/lib/deleteOldRequests.ts index b8bb4bcd..1a8a5cc5 100644 --- a/src/lib/deleteOldRequests.ts +++ b/src/lib/deleteOldRequests.ts @@ -1,4 +1,4 @@ -import prisma from "../prismaClient.js"; +import prisma from "@/src/prismaClient.js"; export default async function deleteOldRequests(): Promise { await prisma.emailVerificationRequest.deleteMany({ diff --git a/src/lib/fetchMatches.ts b/src/lib/fetchMatches.ts index c3261625..e2727865 100644 --- a/src/lib/fetchMatches.ts +++ b/src/lib/fetchMatches.ts @@ -1,5 +1,5 @@ -import prisma from "../prismaClient.js"; -import { addTournamentMatches } from "../handler/manager/addTournamentMatches.js"; +import prisma from "@/src/prismaClient.js"; +import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; export default async function fetchMatches(): Promise { // upsert current tournaments in the matches table diff --git a/src/lib/fetchTeams.ts b/src/lib/fetchTeams.ts index 73215457..6cd9f6a4 100644 --- a/src/lib/fetchTeams.ts +++ b/src/lib/fetchTeams.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import prisma from "../prismaClient.js"; +import prisma from "@/src/prismaClient.js"; export default async function fetchTeams(): Promise { // Get teams from TBA and upsert them to the database diff --git a/src/lib/fetchTournaments.ts b/src/lib/fetchTournaments.ts index b39f0c44..c848f9d2 100644 --- a/src/lib/fetchTournaments.ts +++ b/src/lib/fetchTournaments.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import prisma from "../prismaClient.js"; +import prisma from "@/src/prismaClient.js"; export default async function fetchTournaments( initialYear?: number, diff --git a/src/lib/middleware/posthogMiddleware.ts b/src/lib/middleware/posthogMiddleware.ts index 38dcc42e..ff9171ac 100644 --- a/src/lib/middleware/posthogMiddleware.ts +++ b/src/lib/middleware/posthogMiddleware.ts @@ -1,7 +1,7 @@ import { Request, Response, NextFunction } from "express"; -import { AuthenticatedRequest } from "./requireAuth.js"; -import { posthog } from "../../posthogClient.js"; -import prisma from "../../prismaClient.js"; +import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { posthog } from "@/src/posthogClient.js"; +import prisma from "@/src/prismaClient.js"; import z from "zod"; const posthogReporter = async ( diff --git a/src/lib/middleware/requireAuth.ts b/src/lib/middleware/requireAuth.ts index 22a07730..364b28dd 100644 --- a/src/lib/middleware/requireAuth.ts +++ b/src/lib/middleware/requireAuth.ts @@ -1,4 +1,4 @@ -import prisma from "../../prismaClient.js"; +import prisma from "@/src/prismaClient.js"; import axios from "axios"; import { User } from "@prisma/client"; import { Request as ExpressRequest, Response, NextFunction } from "express"; diff --git a/src/lib/migrateDataSources.ts b/src/lib/migrateDataSources.ts index 516dfee3..6ded55ae 100644 --- a/src/lib/migrateDataSources.ts +++ b/src/lib/migrateDataSources.ts @@ -1,10 +1,10 @@ import { User } from "@prisma/client"; -import { DataSourceRule } from "../handler/analysis/dataSourceRule.js"; +import { DataSourceRule } from "@/src/handler/analysis/dataSourceRule.js"; import { allTeamNumbers, allTournaments, -} from "../handler/analysis/analysisConstants.js"; -import prismaClient from "../prismaClient.js"; +} from "@/src/handler/analysis/analysisConstants.js"; +import prismaClient from "@/src/prismaClient.js"; export const arrayToRule = ( sources: T[], diff --git a/src/lib/scheduleJobs.ts b/src/lib/scheduleJobs.ts index 4da5b1a1..1acc7d99 100644 --- a/src/lib/scheduleJobs.ts +++ b/src/lib/scheduleJobs.ts @@ -1,8 +1,8 @@ -import fetchTournaments from "./fetchTournaments.js"; -import fetchTeams from "./fetchTeams.js"; -import fetchMatches from "./fetchMatches.js"; -import prisma from "../prismaClient.js"; -import deleteOldRequests from "./deleteOldRequests.js"; +import fetchTournaments from "@/src/lib/fetchTournaments.js"; +import fetchTeams from "@/src/lib/fetchTeams.js"; +import fetchMatches from "@/src/lib/fetchMatches.js"; +import prisma from "@/src/prismaClient.js"; +import deleteOldRequests from "@/src/lib/deleteOldRequests.js"; export default async function scheduleJobs(): Promise { const year = 2024; diff --git a/src/posthogClient.ts b/src/posthogClient.ts index 0f47f4af..11df5a6a 100644 --- a/src/posthogClient.ts +++ b/src/posthogClient.ts @@ -1,5 +1,5 @@ import { PostHog } from "posthog-node"; -import { ENVIRONMENT } from "./lib/environment.js"; +import { ENVIRONMENT } from "@/src/lib/environment.js"; export const posthog = new PostHog(process.env.POSTHOG_PROJECT_API_KEY, { disableGeoip: true, diff --git a/src/routes/analysis/analysis.routes.ts b/src/routes/analysis/analysis.routes.ts index a55061eb..41250a38 100644 --- a/src/routes/analysis/analysis.routes.ts +++ b/src/routes/analysis/analysis.routes.ts @@ -1,17 +1,5 @@ import { Router } from "express"; -import onboarding from "./team.routes.js"; -import picklists from "./picklists.routes.js"; -import alliance from "./alliance.routes.js"; -import scoutreport from "./scoutreport.routes.js"; -import csv from "./csv.routes.js"; - const router = Router(); -router.use("/onboarding", onboarding); -router.use("/picklists", picklists); -router.use("/alliance", alliance); -router.use("/csv", csv); -router.use("/scoutreport", scoutreport); - export default router; diff --git a/src/routes/index.ts b/src/routes/index.ts index ee7c6497..56e8e59d 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,9 +1,9 @@ import { Router } from "express"; -import slackRoutes from "./slack/slack.routes.js"; -import managerRoutes from "./manager/manager.routes.js"; -import analysisRoutes from "./analysis/analysis.routes.js"; -import { onboardingRedirect } from "../handler/slack/onboardingRedirect.js"; +import slackRoutes from "@/src/routes/slack/slack.routes.js"; +import managerRoutes from "@/src/routes/manager/manager.routes.js"; +import analysisRoutes from "@/src/routes/analysis/analysis.routes.js"; +import { onboardingRedirect } from "@/src/handler/slack/onboardingRedirect.js"; const router = Router(); diff --git a/src/routes/manager/apikey.routes.ts b/src/routes/manager/apikey.routes.ts index 4fd6e21d..f3317d0d 100644 --- a/src/routes/manager/apikey.routes.ts +++ b/src/routes/manager/apikey.routes.ts @@ -1,9 +1,9 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { addApiKey } from "../../handler/manager/apikeys/addApiKey"; -import { getApiKeys } from "../../handler/manager/apikeys/getApiKeys"; -import { renameApiKey } from "../../handler/manager/apikeys/renameApiKey"; -import { revokeApiKey } from "../../handler/manager/apikeys/revokeApiKey"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { addApiKey } from "@/src/handler/manager/apikey/addApiKey.js"; +import { getApiKeys } from "@/src/handler/manager/apikey/getApiKeys.js"; +import { renameApiKey } from "@/src/handler/manager/apikey/renameApiKey.js"; +import { revokeApiKey } from "@/src/handler/manager/apikey/revokeApiKey.js"; const router = Router(); diff --git a/src/routes/manager/manager.routes.ts b/src/routes/manager/manager.routes.ts index 011ae6b7..3497b97d 100644 --- a/src/routes/manager/manager.routes.ts +++ b/src/routes/manager/manager.routes.ts @@ -1,31 +1,31 @@ import { Router } from "express"; -import onboarding from "./onboarding.routes.js"; -import picklists from "./picklists.routes.js"; -import mutablepicklist from "./mutablepicklists.routes.js"; -import registeredteams from "./registeredteams.routes.js"; -import scouters from "./scouters.routes.js"; -import tournaments from "./tournaments.routes.js"; -import scoutreports from "./scoutreports.routes.js"; -import settings from "./settings.routes.js"; -//import apikey from "./apikey.routes.js"; - -import { getTournaments } from "../../handler/manager/getTournaments.js"; -import { getTeams } from "../../handler/manager/getTeams.js"; -import { requireAuth } from "../../lib/middleware/requireAuth.js"; -import { getMatches } from "../../handler/manager/getMatches.js"; -import { updateNotes } from "../../handler/manager/updateNotes.js"; -import { getScouters } from "../../handler/manager/getScouters.js"; -import { getProfile } from "../../handler/manager/getProfile.js"; -import { getUsers } from "../../handler/manager/getUsers.js"; -import { deleteUser } from "../../handler/manager/deleteUser.js"; -import { updateRoleToScoutingLead } from "../../handler/manager/updateRoleToScoutingLead.js"; -import { getAnalysts } from "../../handler/manager/getAnalysts.js"; -import { addNotOnTeam } from "../../handler/manager/temp/addNotOnTeam.js"; -import { getTeamCode } from "../../handler/manager/getTeamCode.js"; -import { addScoutReportDashboard } from "../../handler/manager/addScoutReportDashboard.js"; -import { getTeamTournamentStatus } from "../../handler/manager/getTeamTournamentStatus.js"; -import { getMatchResults } from "../../handler/manager/getMatchResults.js"; +import onboarding from "@/src/routes/manager/onboarding.routes.js"; +import picklists from "@/src/routes/manager/picklists.routes.js"; +import mutablepicklist from "@/src/routes/manager/mutablepicklists.routes.js"; +import registeredteams from "@/src/routes/manager/registeredteams.routes.js"; +import scouters from "@/src/routes/manager/scouters.routes.js"; +import tournaments from "@/src/routes/manager/tournaments.routes.js"; +import scoutreports from "@/src/routes/manager/scoutreports.routes.js"; +import settings from "@/src/routes/manager/settings.routes.js"; +//import apikey from "@/src/routes/manager/apikey.routes.js"; + +import { getTournaments } from "@/src/handler/manager/getTournaments.js"; +import { getTeams } from "@/src/handler/manager/getTeams.js"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { getMatches } from "@/src/handler/manager/getMatches.js"; +import { updateNotes } from "@/src/handler/manager/updateNotes.js"; +import { getScouters } from "@/src/handler/manager/scouters/getScouters.js"; +import { getProfile } from "@/src/handler/manager/getProfile.js"; +import { getUsers } from "@/src/handler/manager/getUsers.js"; +import { deleteUser } from "@/src/handler/manager/deleteUser.js"; +import { updateRoleToScoutingLead } from "@/src/handler/manager/scouters/updateRoleToScoutingLead.js"; +import { getAnalysts } from "@/src/handler/manager/getAnalysts.js"; +import { addNotOnTeam } from "@/src/handler/manager/temp/addNotOnTeam.js"; +import { getTeamCode } from "@/src/handler/manager/getTeamCode.js"; +import { addScoutReportDashboard } from "@/src/handler/manager/scoutreports/addScoutReportDashboard.js"; +import { getTeamTournamentStatus } from "@/src/handler/manager/getTeamTournamentStatus.js"; +import { getMatchResults } from "@/src/handler/manager/getMatchResults.js"; const router = Router(); diff --git a/src/routes/manager/mutablepicklists.routes.ts b/src/routes/manager/mutablepicklists.routes.ts index d183115a..1cde7c8c 100644 --- a/src/routes/manager/mutablepicklists.routes.ts +++ b/src/routes/manager/mutablepicklists.routes.ts @@ -1,10 +1,10 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { addMutablePicklist } from "../../handler/manager/addMutablePicklist"; -import { deleteMutablePicklist } from "../../handler/manager/deleteMutablePicklist"; -import { getMutablePicklists } from "../../handler/manager/mutablepicklists/getMutablePicklists"; -import { getSingleMutablePicklist } from "../../handler/manager/getSingleMutablePicklist"; -import { updateMutablePicklist } from "../../handler/manager/updateMutablePicklist"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { addMutablePicklist } from "@/src/handler/manager/mutablepicklists/addMutablePicklist.js"; +import { deleteMutablePicklist } from "@/src/handler/manager/mutablepicklists/deleteMutablePicklist.js"; +import { getMutablePicklists } from "@/src/handler/manager/mutablepicklists/getMutablePicklists.js"; +import { getSingleMutablePicklist } from "@/src/handler/manager/mutablepicklists/getSingleMutablePicklist.js"; +import { updateMutablePicklist } from "@/src/handler/manager/mutablepicklists/updateMutablePicklist.js"; /* diff --git a/src/routes/manager/onboarding.routes.ts b/src/routes/manager/onboarding.routes.ts index 462d3f4f..dac3ddfb 100644 --- a/src/routes/manager/onboarding.routes.ts +++ b/src/routes/manager/onboarding.routes.ts @@ -1,13 +1,13 @@ import { Router } from "express"; -import requireLovatSignature from "../../lib/middleware/requireLovatSignature"; -import { approveTeamEmail } from "../../handler/manager/onboarding/approveTeamEmail"; -import { addUsername } from "../../handler/manager/onboarding/addUsername"; -import { checkCode } from "../../handler/manager/onboarding/checkCode"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { addRegisteredTeam } from "../../handler/manager/addRegisteredTeam"; +import requireLovatSignature from "@/src/lib/middleware/requireLovatSignature.js"; +import { approveTeamEmail } from "@/src/handler/manager/onboarding/approveTeamEmail.js"; +import { addUsername } from "@/src/handler/manager/onboarding/addUsername.js"; +import { checkCode } from "@/src/handler/manager/onboarding/checkCode.js"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { addRegisteredTeam } from "@/src/handler/manager/registeredteams/addRegisteredTeam.js"; import rateLimit from "express-rate-limit"; -import { addWebsite } from "../../handler/manager/onboarding/addWebsite"; -import { resendEmail } from "../../handler/manager/resendEmail"; +import { addWebsite } from "@/src/handler/manager/onboarding/addWebsite.js"; +import { resendEmail } from "@/src/handler/manager/onboarding/resendEmail.js"; /* diff --git a/src/routes/manager/picklists.routes.ts b/src/routes/manager/picklists.routes.ts index bf294d6d..dab6dc50 100644 --- a/src/routes/manager/picklists.routes.ts +++ b/src/routes/manager/picklists.routes.ts @@ -1,10 +1,10 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { addPicklist } from "../../handler/manager/addPicklist"; -import { deletePicklist } from "../../handler/manager/deletePicklist"; -import { getPicklists } from "../../handler/manager/getPicklists"; -import { getSinglePicklist } from "../../handler/manager/getSinglePicklist"; -import { updatePicklist } from "../../handler/manager/updatePicklist"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { addPicklist } from "@/src/handler/manager/picklists/addPicklist.js"; +import { deletePicklist } from "@/src/handler/manager/picklists/deletePicklist.js"; +import { getPicklists } from "@/src/handler/manager/picklists/getPicklists.js"; +import { getSinglePicklist } from "@/src/handler/manager/picklists/getSinglePicklist.js"; +import { updatePicklist } from "@/src/handler/manager/picklists/updatePicklist.js"; /* diff --git a/src/routes/manager/registeredteams.routes.ts b/src/routes/manager/registeredteams.routes.ts index 156af0ac..a58f1341 100644 --- a/src/routes/manager/registeredteams.routes.ts +++ b/src/routes/manager/registeredteams.routes.ts @@ -1,9 +1,9 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { rejectRegisteredTeam } from "../../handler/manager/rejectRegisteredTeam"; -import { approveRegisteredTeam } from "../../handler/manager/approveRegisteredTeam"; -import { checkRegisteredTeam } from "../../handler/manager/checkRegisteredTeam"; -import requireLovatSignature from "../../lib/middleware/requireLovatSignature"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { rejectRegisteredTeam } from "@/src/handler/manager/registeredteams/rejectRegisteredTeam.js"; +import { approveRegisteredTeam } from "@/src/handler/manager/registeredteams/approveRegisteredTeam.js"; +import { checkRegisteredTeam } from "@/src/handler/manager/registeredteams/checkRegisteredTeam.js"; +import requireLovatSignature from "@/src/lib/middleware/requireLovatSignature.js"; const router = Router(); diff --git a/src/routes/manager/scouters.routes.ts b/src/routes/manager/scouters.routes.ts index 71c18585..b97959c8 100644 --- a/src/routes/manager/scouters.routes.ts +++ b/src/routes/manager/scouters.routes.ts @@ -1,20 +1,20 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { addNewScouter } from "../../handler/manager/addNewScouter"; -import { archiveScouter } from "../../handler/manager/scouters/archiveScouter"; -import { changeNameScouter } from "../../handler/manager/scouters/changeNameScouter"; -import { checkCodeScouter } from "../../handler/manager/scouters/checkCodeScouter"; -import { emailTeamCode } from "../../handler/manager/scouters/emailTeamCode"; -import { getScheduleForScouter } from "../../handler/manager/scouters/getScheduleForScouter"; -import { getScoutersOnTeam } from "../../handler/manager/scouters/getScoutersOnTeam"; -import { getScouterTournaments } from "../../handler/manager/scouters/getScouterTournaments"; -import { getTournamentForScouterWithSchedule } from "../../handler/manager/scouters/getTournamentForScouterWithSchedule"; -import { unarchiveScouter } from "../../handler/manager/unarchiveScouter"; -import { addScouterDashboard } from "../../handler/manager/addScouterDashboard"; -import { scouterScoutReports } from "../../handler/manager/dashboard/scouterScoutReports"; -import { deleteScouter } from "../../handler/manager/deleteScouter"; -import { scoutingLeadProgressPage } from "../../handler/manager/scouters/scoutingLeadProgressPage"; -import { updateScouterName } from "../../handler/manager/scouters/updateScouterName"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { addNewScouter } from "@/src/handler/manager/scouters/addNewScouter.js"; +import { archiveScouter } from "@/src/handler/manager/scouters/archiveScouter.js"; +import { changeNameScouter } from "@/src/handler/manager/scouters/changeNameScouter.js"; +import { checkCodeScouter } from "@/src/handler/manager/scouters/checkCodeScouter.js"; +import { emailTeamCode } from "@/src/handler/manager/scouters/emailTeamCode.js"; +import { getScheduleForScouter } from "@/src/handler/manager/scouters/getScheduleForScouter.js"; +import { getScoutersOnTeam } from "@/src/handler/manager/scouters/getScoutersOnTeam.js"; +import { getScouterTournaments } from "@/src/handler/manager/scouters/getScouterTournaments.js"; +import { getTournamentForScouterWithSchedule } from "@/src/handler/manager/scouters/getTournamentForScouterWithSchedule.js"; +import { unarchiveScouter } from "@/src/handler/manager/scouters/unarchiveScouter.js"; +import { addScouterDashboard } from "@/src/handler/manager/scouters/addScouterDashboard.js"; +import { scouterScoutReports } from "@/src/handler/analysis/scoutingLead/scouterScoutReports.js"; +import { deleteScouter } from "@/src/handler/manager/scouters/deleteScouter.js"; +import { scoutingLeadProgressPage } from "@/src/handler/manager/scouters/scoutingLeadProgressPage.js"; +import { updateScouterName } from "@/src/handler/manager/scouters/updateScouterName.js"; const router = Router(); router.post("/emailTeamCode", emailTeamCode); diff --git a/src/routes/manager/scoutershifts.routes.ts b/src/routes/manager/scoutershifts.routes.ts index 271bd26f..24243d64 100644 --- a/src/routes/manager/scoutershifts.routes.ts +++ b/src/routes/manager/scoutershifts.routes.ts @@ -1,7 +1,7 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { updateScouterShift } from "../../handler/manager/scoutershifts/updateScouterShift"; -import { deleteScouterShift } from "../../handler/manager/scoutershifts/deleteScouterShift"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { updateScouterShift } from "@/src/handler/manager/scoutershifts/updateScouterShift.js"; +import { deleteScouterShift } from "@/src/handler/manager/scoutershifts/deleteScouterShift.js"; const router = Router(); diff --git a/src/routes/manager/scoutreports.routes.ts b/src/routes/manager/scoutreports.routes.ts index c2a044c7..222ed854 100644 --- a/src/routes/manager/scoutreports.routes.ts +++ b/src/routes/manager/scoutreports.routes.ts @@ -1,8 +1,8 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { addScoutReport } from "../../handler/manager/addScoutReport"; -import { deleteScoutReport } from "../../handler/manager/deleteScoutReport"; -import { getScoutReport } from "../../handler/manager/getScoutReport"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { addScoutReport } from "@/src/handler/manager/scoutreports/addScoutReport.js"; +import { deleteScoutReport } from "@/src/handler/manager/scoutreports/deleteScoutReport.js"; +import { getScoutReport } from "@/src/handler/manager/scoutreports/getScoutReport.js"; const router = Router(); diff --git a/src/routes/manager/settings.routes.ts b/src/routes/manager/settings.routes.ts index 5fd12cbd..0b5c9e4a 100644 --- a/src/routes/manager/settings.routes.ts +++ b/src/routes/manager/settings.routes.ts @@ -1,12 +1,12 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { updateSettings } from "../../handler/manager/updateSettings"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { updateSettings } from "@/src/handler/manager/settings/updateSettings.js"; import rateLimit from "express-rate-limit"; -import { updateTeamEmail } from "../../handler/manager/settings/updateTeamEmail"; -import { getTeamSource } from "../../handler/manager/getTeamSource"; -import { addTeamSource } from "../../handler/manager/addTeamSource"; -import { getTournamentSource } from "../../handler/manager/settings/getTournamentSource"; -import { addTournamentSource } from "../../handler/manager/addTournamentSource"; +import { updateTeamEmail } from "@/src/handler/manager/settings/updateTeamEmail.js"; +import { getTeamSource } from "@/src/handler/manager/settings/getTeamSource.js"; +import { addTeamSource } from "@/src/handler/manager/settings/addTeamSource.js"; +import { getTournamentSource } from "@/src/handler/manager/settings/getTournamentSource.js"; +import { addTournamentSource } from "@/src/handler/manager/settings/addTournamentSource.js"; const updateTeamEmails = rateLimit({ windowMs: 2 * 60 * 1000, diff --git a/src/routes/manager/tournaments.routes.ts b/src/routes/manager/tournaments.routes.ts index 29f01950..fa408240 100644 --- a/src/routes/manager/tournaments.routes.ts +++ b/src/routes/manager/tournaments.routes.ts @@ -1,8 +1,8 @@ import { Router } from "express"; -import { requireAuth } from "../../lib/middleware/requireAuth"; -import { getTeamsInTournament } from "../../handler/manager/tournament/getTeamsInTournament"; -import { getTeamRankings } from "../../handler/manager/tournament/getTeamRankings"; -import { addScouterShift } from "../../handler/manager/tournament/addScouterShift"; +import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; +import { getTeamsInTournament } from "@/src/handler/manager/tournament/getTeamsInTournament.js"; +import { getTeamRankings } from "@/src/handler/manager/tournament/getTeamRankings.js"; +import { addScouterShift } from "@/src/handler/manager/tournament/addScouterShift.js"; /* diff --git a/src/routes/slack/slack.routes.ts b/src/routes/slack/slack.routes.ts index 83fbfdbb..4d154da7 100644 --- a/src/routes/slack/slack.routes.ts +++ b/src/routes/slack/slack.routes.ts @@ -1,10 +1,10 @@ import { Router } from "express"; import express from "express"; -import { requireSlackToken } from "../../lib/middleware/requireSlackToken.js"; -import { addSlackWorkspace } from "../../handler/slack/addSlackWorkspace.js"; -import { processCommand } from "../../handler/slack/processCommands.js"; -import { processEvent } from "../../handler/slack/processEvents.js"; +import { requireSlackToken } from "@/src/lib/middleware/requireSlackToken.js"; +import { addSlackWorkspace } from "@/src/handler/slack/addSlackWorkspace.js"; +import { processCommand } from "@/src/handler/slack/processCommands.js"; +import { processEvent } from "@/src/handler/slack/processEvents.js"; /* diff --git a/src/server.ts b/src/server.ts index 39b68a80..e2e0eaaa 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,7 +1,7 @@ -import { app } from "./app.js"; -import scheduleJobs from "./lib/scheduleJobs.js"; -import { migrateDataSources } from "./lib/migrateDataSources.js"; -import { clearCache } from "./lib/clearCache.js"; +import { app } from "@/src/app.js"; +import scheduleJobs from "@/src/lib/scheduleJobs.js"; +import { migrateDataSources } from "@/src/lib/migrateDataSources.js"; +import { clearCache } from "@/src/lib/clearCache.js"; const port = process.env.PORT || 3000; diff --git a/tsconfig.json b/tsconfig.json index 83fa46ef..b9bba33c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,12 @@ "target": "esnext", "allowImportingTsExtensions": false, "esModuleInterop": true, - "outDir": "dist" + "outDir": "dist", + "baseUrl": ".", + "paths": { + "@/src/*": ["src/*"], + "@/src": ["src"] + } }, "include": ["src/**/*"] From 695a9f8058b3b8a6e75200ae3e39e449f52e7da2 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:10:38 -0800 Subject: [PATCH 04/14] fix package.json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 722b7f3c..4d2e08ff 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,9 @@ "description": "", "type": "module", "scripts": { - "dev": "NODE_ENV=development tsx watch src/start.ts", + "dev": "NODE_ENV=development tsx watch src/server.ts", "build": "tsc", - "start": "node dist/start.js", + "start": "node dist/server.js", "test": "tsc", "lint": "eslint .", "format": "prettier --write ." From fd3e2188c770a04301aa3e07f5132cd5d0b3cc60 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:20:01 -0800 Subject: [PATCH 05/14] added analysis routes --- .../alliancePredictions/alliancePage.ts | 5 +- .../coreAnalysis/arrayAndAverageTeams.ts | 5 +- .../analysis/coreAnalysis/averageManyFast.ts | 5 +- .../coreAnalysis/averageScoutReport.ts | 5 +- .../analysis/coreAnalysis/robotRole.ts | 10 +- src/handler/analysis/csv/getReportCSV.ts | 5 +- src/handler/analysis/csv/getTeamCSV.ts | 5 +- src/handler/analysis/csv/getTeamMatchCSV.ts | 5 +- .../picklist/endgamePicklistTeamFast.ts | 5 +- src/handler/analysis/rankFlag.ts | 5 +- .../timelineForScoutReport.ts | 5 +- .../analysis/teamLookUp/categoryMetrics.ts | 5 +- .../analysis/teamLookUp/detailsPage.ts | 5 +- .../analysis/teamLookUp/multipleFlags.ts | 5 +- src/handler/manager/getMatches.ts | 5 +- .../manager/scouters/getScheduleForScouter.ts | 5 +- .../manager/scoutreports/addScoutReport.ts | 3 - src/index.txt | 193 ------------------ src/routes/analysis/analysis.routes.ts | 41 ++++ src/routes/index.ts | 12 +- 20 files changed, 115 insertions(+), 219 deletions(-) delete mode 100644 src/index.txt diff --git a/src/handler/analysis/alliancePredictions/alliancePage.ts b/src/handler/analysis/alliancePredictions/alliancePage.ts index f510d655..4ef2015c 100644 --- a/src/handler/analysis/alliancePredictions/alliancePage.ts +++ b/src/handler/analysis/alliancePredictions/alliancePage.ts @@ -1,6 +1,9 @@ import z from "zod"; import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; -import { FlippedRoleMap, Metric } from "@/src/handler/analysis/analysisConstants.js"; +import { + FlippedRoleMap, + Metric, +} from "@/src/handler/analysis/analysisConstants.js"; import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; import { autoPathsTeam } from "@/src/handler/analysis/autoPaths/autoPathsTeam.js"; import { robotRole } from "@/src/handler/analysis/coreAnalysis/robotRole.js"; diff --git a/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts b/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts index 7fdfea12..992b0835 100644 --- a/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts +++ b/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts @@ -14,7 +14,10 @@ import { dataSourceRuleToPrismaFilter, } from "@/src/handler/analysis/dataSourceRule.js"; import z from "zod"; -import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; +import { + runAnalysis, + AnalysisFunctionConfig, +} from "@/src/handler/analysis/analysisFunction.js"; // Accurately aggregate an analog metric on multiple teams at once (weighs matches equally regardless of extra scout reports). // Provides a timeline of metric value per match. diff --git a/src/handler/analysis/coreAnalysis/averageManyFast.ts b/src/handler/analysis/coreAnalysis/averageManyFast.ts index f1f34192..42a20436 100644 --- a/src/handler/analysis/coreAnalysis/averageManyFast.ts +++ b/src/handler/analysis/coreAnalysis/averageManyFast.ts @@ -17,7 +17,10 @@ import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, } from "@/src/handler/analysis/dataSourceRule.js"; -import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; +import { + runAnalysis, + AnalysisFunctionConfig, +} from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; export interface ArrayFilter { diff --git a/src/handler/analysis/coreAnalysis/averageScoutReport.ts b/src/handler/analysis/coreAnalysis/averageScoutReport.ts index d3a015e4..c444650e 100644 --- a/src/handler/analysis/coreAnalysis/averageScoutReport.ts +++ b/src/handler/analysis/coreAnalysis/averageScoutReport.ts @@ -7,7 +7,10 @@ import { } from "@/src/handler/analysis/analysisConstants.js"; import { EventAction, Position, User } from "@prisma/client"; import z from "zod"; -import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; +import { + runAnalysis, + AnalysisFunctionConfig, +} from "@/src/handler/analysis/analysisFunction.js"; export async function computeAverageScoutReport( scoutReportUuid: string, diff --git a/src/handler/analysis/coreAnalysis/robotRole.ts b/src/handler/analysis/coreAnalysis/robotRole.ts index 8098c202..b35d92ce 100644 --- a/src/handler/analysis/coreAnalysis/robotRole.ts +++ b/src/handler/analysis/coreAnalysis/robotRole.ts @@ -1,7 +1,13 @@ import z from "zod"; import { MetricsBreakdown } from "@/src/handler/analysis/analysisConstants.js"; -import { nonEventMetric, NonEventMetricResult } from "@/src/handler/analysis/coreAnalysis/nonEventMetric.js"; -import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; +import { + nonEventMetric, + NonEventMetricResult, +} from "@/src/handler/analysis/coreAnalysis/nonEventMetric.js"; +import { + runAnalysis, + AnalysisFunctionConfig, +} from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; const argsSchema = z.object({ team: z.number() }); diff --git a/src/handler/analysis/csv/getReportCSV.ts b/src/handler/analysis/csv/getReportCSV.ts index dcfd6e47..3dd94543 100644 --- a/src/handler/analysis/csv/getReportCSV.ts +++ b/src/handler/analysis/csv/getReportCSV.ts @@ -16,7 +16,10 @@ import { TeamMatchData, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; +import { + autoEnd, + endgameToPoints, +} from "@/src/handler/analysis/analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, diff --git a/src/handler/analysis/csv/getTeamCSV.ts b/src/handler/analysis/csv/getTeamCSV.ts index 397f9d57..e6b913dc 100644 --- a/src/handler/analysis/csv/getTeamCSV.ts +++ b/src/handler/analysis/csv/getTeamCSV.ts @@ -14,7 +14,10 @@ import { UnderShallowCage, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; +import { + autoEnd, + endgameToPoints, +} from "@/src/handler/analysis/analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, diff --git a/src/handler/analysis/csv/getTeamMatchCSV.ts b/src/handler/analysis/csv/getTeamMatchCSV.ts index 7819ab5a..b310ec28 100644 --- a/src/handler/analysis/csv/getTeamMatchCSV.ts +++ b/src/handler/analysis/csv/getTeamMatchCSV.ts @@ -15,7 +15,10 @@ import { Scouter, Event, } from "@prisma/client"; -import { autoEnd, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; +import { + autoEnd, + endgameToPoints, +} from "@/src/handler/analysis/analysisConstants.js"; import { z } from "zod"; import { CondensedReport } from "@/src/handler/analysis/csv/getReportCSV.js"; import { diff --git a/src/handler/analysis/picklist/endgamePicklistTeamFast.ts b/src/handler/analysis/picklist/endgamePicklistTeamFast.ts index 6df81e44..da02888b 100644 --- a/src/handler/analysis/picklist/endgamePicklistTeamFast.ts +++ b/src/handler/analysis/picklist/endgamePicklistTeamFast.ts @@ -1,6 +1,9 @@ import prismaClient from "@/src/prismaClient.js"; import { BargeResult } from "@prisma/client"; -import { defaultEndgamePoints, endgameToPoints } from "@/src/handler/analysis/analysisConstants.js"; +import { + defaultEndgamePoints, + endgameToPoints, +} from "@/src/handler/analysis/analysisConstants.js"; import { ArrayFilter } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; // Number of endgame possibilities that result in points earned (essentially, successes) diff --git a/src/handler/analysis/rankFlag.ts b/src/handler/analysis/rankFlag.ts index f22fcd81..ae3856bb 100644 --- a/src/handler/analysis/rankFlag.ts +++ b/src/handler/analysis/rankFlag.ts @@ -1,6 +1,9 @@ import axios from "axios"; import z from "zod"; -import { runAnalysis, AnalysisFunctionConfig } from "@/src/handler/analysis/analysisFunction.js"; +import { + runAnalysis, + AnalysisFunctionConfig, +} from "@/src/handler/analysis/analysisFunction.js"; import { User } from "@prisma/client"; export async function computeRankFlag( diff --git a/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts b/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts index 87fa21c0..c29a5844 100644 --- a/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts +++ b/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts @@ -1,6 +1,9 @@ import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { FlippedActionMap, FlippedPositionMap } from "@/src/handler/analysis/analysisConstants.js"; +import { + FlippedActionMap, + FlippedPositionMap, +} from "@/src/handler/analysis/analysisConstants.js"; import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; export const timelineForScoutReport = createAnalysisHandler({ diff --git a/src/handler/analysis/teamLookUp/categoryMetrics.ts b/src/handler/analysis/teamLookUp/categoryMetrics.ts index 242eabff..4a8864a2 100644 --- a/src/handler/analysis/teamLookUp/categoryMetrics.ts +++ b/src/handler/analysis/teamLookUp/categoryMetrics.ts @@ -1,5 +1,8 @@ import z from "zod"; -import { metricsCategory, metricToName } from "@/src/handler/analysis/analysisConstants.js"; +import { + metricsCategory, + metricToName, +} from "@/src/handler/analysis/analysisConstants.js"; import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; diff --git a/src/handler/analysis/teamLookUp/detailsPage.ts b/src/handler/analysis/teamLookUp/detailsPage.ts index 253e6bcb..82219568 100644 --- a/src/handler/analysis/teamLookUp/detailsPage.ts +++ b/src/handler/analysis/teamLookUp/detailsPage.ts @@ -1,7 +1,10 @@ import z from "zod"; import { autoPathsTeam } from "@/src/handler/analysis/autoPaths/autoPathsTeam.js"; import { averageAllTeamFast } from "@/src/handler/analysis/coreAnalysis/averageAllTeamFast.js"; -import { Metric, metricsToNumber } from "@/src/handler/analysis/analysisConstants.js"; +import { + Metric, + metricsToNumber, +} from "@/src/handler/analysis/analysisConstants.js"; import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; diff --git a/src/handler/analysis/teamLookUp/multipleFlags.ts b/src/handler/analysis/teamLookUp/multipleFlags.ts index b9077288..b742a96f 100644 --- a/src/handler/analysis/teamLookUp/multipleFlags.ts +++ b/src/handler/analysis/teamLookUp/multipleFlags.ts @@ -1,6 +1,9 @@ import z from "zod"; import { rankFlag } from "@/src/handler/analysis/rankFlag.js"; -import { metricsCategory, metricToName } from "@/src/handler/analysis/analysisConstants.js"; +import { + metricsCategory, + metricToName, +} from "@/src/handler/analysis/analysisConstants.js"; import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; diff --git a/src/handler/manager/getMatches.ts b/src/handler/manager/getMatches.ts index 6ce5fdb3..d0a538fd 100644 --- a/src/handler/manager/getMatches.ts +++ b/src/handler/manager/getMatches.ts @@ -5,7 +5,10 @@ import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; import { ReverseMatchTypeMap } from "@/src/handler/manager/managerConstants.js"; import { MatchType, Prisma } from "@prisma/client"; -import { swrConstant, ttlConstant } from "@/src/handler/analysis/analysisConstants.js"; +import { + swrConstant, + ttlConstant, +} from "@/src/handler/analysis/analysisConstants.js"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, diff --git a/src/handler/manager/scouters/getScheduleForScouter.ts b/src/handler/manager/scouters/getScheduleForScouter.ts index d474e353..dad6f3f7 100644 --- a/src/handler/manager/scouters/getScheduleForScouter.ts +++ b/src/handler/manager/scouters/getScheduleForScouter.ts @@ -1,7 +1,10 @@ import { Request, Response } from "express"; import prismaClient from "@/src/prismaClient.js"; import z from "zod"; -import { MatchTypeMap, ScouterScheduleMap } from "@/src/handler/manager/managerConstants.js"; +import { + MatchTypeMap, + ScouterScheduleMap, +} from "@/src/handler/manager/managerConstants.js"; import SHA256 from "crypto-js/sha256.js"; import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; diff --git a/src/handler/manager/scoutreports/addScoutReport.ts b/src/handler/manager/scoutreports/addScoutReport.ts index 78053d8a..ed107d4f 100644 --- a/src/handler/manager/scoutreports/addScoutReport.ts +++ b/src/handler/manager/scoutreports/addScoutReport.ts @@ -307,6 +307,3 @@ export const addScoutReport = async ( res.status(500).send({ error: error, displayError: "Error" }); } }; - - - diff --git a/src/index.txt b/src/index.txt deleted file mode 100644 index 40d12fe5..00000000 --- a/src/index.txt +++ /dev/null @@ -1,193 +0,0 @@ -import express from "express"; -import "dotenv/config"; -import bodyParser from "body-parser"; - -import { requireAuth } from "./lib/middleware/requireAuth.js"; - -import { addMutablePicklist } from "./handler/manager/addMutablePicklist.js"; - -import { addPicklist } from "./handler/manager/addPicklist.js"; -import { addRegisteredTeam } from "./handler/manager/addRegisteredTeam.js"; -import { addScouterShift } from "./handler/manager/tournament/addScouterShift.js"; -import { approveRegisteredTeam } from "./handler/manager/approveRegisteredTeam.js"; -import { checkRegisteredTeam } from "./handler/manager/checkRegisteredTeam.js"; -import { deleteScoutReport } from "./handler/manager/deleteScoutReport.js"; -import { deleteMutablePicklist } from "./handler/manager/deleteMutablePicklist.js"; -import { deletePicklist } from "./handler/manager/deletePicklist.js"; -import { deleteScouterShift } from "./handler/manager/scoutershifts/deleteScouterShift.js"; -import { getMutablePicklists } from "./handler/manager/mutablepicklists/getMutablePicklists.js"; -import { getPicklists } from "./handler/manager/getPicklists.js"; -import { getScouterSchedule } from "./handler/manager/getScouterSchedule.js"; -import { getTeamsInTournament } from "./handler/manager/tournament/getTeamsInTournament.js"; -import { rejectRegisteredTeam } from "./handler/manager/rejectRegisteredTeam.js"; -import { getTournaments } from "./handler/manager/getTournaments.js"; -import { addUsername } from "./handler/manager/onboarding/addUsername.js"; -import { getTeams } from "./handler/manager/getTeams.js"; -import { updateScouterShift } from "./handler/manager/scoutershifts/updateScouterShift.js"; -import scheduleJobs from "./lib/scheduleJobs.js"; -import { checkCode } from "./handler/manager/onboarding/checkCode.js"; -import { addTournamentSource } from "./handler/manager/addTournamentSource.js"; -import { addTeamSource } from "./handler/manager/addTeamSource.js"; -import { addScoutReport } from "./handler/manager/addScoutReport.js"; -import { getScoutReport } from "./handler/manager/getScoutReport.js"; -import { getMatches } from "./handler/manager/getMatches.js"; -import { getSinglePicklist } from "./handler/manager/getSinglePicklist.js"; -import { getSingleMutablePicklist } from "./handler/manager/getSingleMutablePicklist.js"; -import { updatePicklist } from "./handler/manager/updatePicklist.js"; -import { updateMutablePicklist } from "./handler/manager/updateMutablePicklist.js"; -import { addWebsite } from "./handler/manager/onboarding/addWebsite.js"; -import requireLovatSignature from "./lib/middleware/requireLovatSignature.js"; -import { approveTeamEmail } from "./handler/manager/onboarding/approveTeamEmail.js"; -import rateLimit from "express-rate-limit"; -import { resendEmail } from "./handler/manager/resendEmail.js"; -import { getProfile } from "./handler/manager/getProfile.js"; -import { deleteUser } from "./handler/manager/deleteUser.js"; -import { getUsers } from "./handler/manager/getUsers.js"; -import { updateRoleToScoutingLead } from "./handler/manager/updateRoleToScoutingLead.js"; -import { detailsPage } from "./handler/analysis/teamLookUp/detailsPage.js"; -import { categoryMetrics } from "./handler/analysis/teamLookUp/categoryMetrics.js"; -import { breakdownMetrics } from "./handler/analysis/teamLookUp/breakdownMetrics.js"; -import { checkCodeScouter } from "./handler/manager/scouters/checkCodeScouter.js"; -import { changeNameScouter } from "./handler/manager/scouters/changeNameScouter.js"; -import { getScoutersOnTeam } from "./handler/manager/scouters/getScoutersOnTeam.js"; -import { getScheduleForScouter } from "./handler/manager/scouters/getScheduleForScouter.js"; -import { addNewScouter } from "./handler/manager/addNewScouter.js"; -import { updateNotes } from "./handler/manager/updateNotes.js"; -import { getTeamCode } from "./handler/manager/getTeamCode.js"; -import { getAnalysts } from "./handler/manager/getAnalysts.js"; -import { updateSettings } from "./handler/manager/updateSettings.js"; -import { getNotes } from "./handler/analysis/teamLookUp/getNotes.js"; -import { alliancePageResponse } from "./handler/analysis/alliancePredictions/alliancePageResponse.js"; -import { matchPrediction } from "./handler/analysis/alliancePredictions/matchPrediction.js"; -import { getTeamSource } from "./handler/manager/getTeamSource.js"; -import { getTournamentSource } from "./handler/manager/settings/getTournamentSource.js"; -import { picklistShell } from "./handler/analysis/picklist/picklistShell.js"; -// import { scoutingLeadPage } from "./handler/analysis/scoutingLead/scoutingLeadPage.js"; -import { getScouterTournaments } from "./handler/manager/scouters/getScouterTournaments.js"; -import { getScouters } from "./handler/manager/getScouters.js"; -import { addScoutReportDashboard } from "./handler/manager/addScoutReportDashboard.js"; -import { matchPageSpecificScouter } from "./handler/analysis/specificMatchPage/matchPageSpecificScouter.js"; -import { scoutReportForMatch } from "./handler/analysis/specificMatchPage/scoutReportForMatch.js"; -import { timelineForScoutReport } from "./handler/analysis/specificMatchPage/timelineForScoutReport.js"; -import { getTournamentForScouterWithSchedule } from "./handler/manager/scouters/getTournamentForScouterWithSchedule.js"; -import { multipleFlags } from "./handler/analysis/teamLookUp/multipleFlags.js"; -import { updateTeamEmail } from "./handler/manager/settings/updateTeamEmail.js"; -import { addNotOnTeam } from "./handler/manager/temp/addNotOnTeam.js"; -import { updateScouterName } from "./handler/manager/scouters/updateScouterName.js"; -import { deleteScouter } from "./handler/manager/deleteScouter.js"; -import { scoutingLeadProgressPage } from "./handler/manager/scouters/scoutingLeadProgressPage.js"; -import { addScouterDashboard } from "./handler/manager/addScouterDashboard.js"; -import { scouterScoutReports } from "./handler/analysis/scoutingLead/scouterScoutReports.js"; -import { pitDisplay } from "./handler/manager/pitDisplay.js"; -import { getTeamCSV } from "./handler/manager/getTeamCSV.js"; -import { getTeamMatchCSV } from "./handler/analysis/csv/getTeamMatchCSV.js"; -import { getReportCSV } from "./handler/analysis/csv/getReportCSV.js"; -import { emailTeamCode } from "./handler/manager/scouters/emailTeamCode.js"; -import { breakdownDetails } from "./handler/analysis/teamLookUp/breakdownDetails.js"; -import { getTeamRankings } from "./handler/manager/tournament/getTeamRankings.js"; -import { getTeamTournamentStatus } from "./handler/manager/getTeamTournamentStatus.js"; -import { getMatchResults } from "./handler/manager/getMatchResults.js"; -import { addSlackWorkspace } from "./handler/slack/addSlackWorkspace.js"; -import { processCommand } from "./handler/slack/processCommands.js"; -import { processEvent } from "./handler/slack/processEvents.js"; -import { setupExpressErrorHandler } from "posthog-node"; -import { posthog } from "./posthogClient.js"; -import posthogReporter from "./lib/middleware/posthogMiddleware.js"; -import { requireSlackToken } from "./lib/middleware/requireSlackToken.js"; -import { migrateDataSources } from "./lib/migrateDataSources.js"; -import { archiveScouter } from "./handler/manager/scouters/archiveScouter.js"; -import { unarchiveScouter } from "./handler/manager/unarchiveScouter.js"; -import { onboardingRedirect } from "./handler/slack/onboardingRedirect.js"; -import cookieParser from "cookie-parser"; -import { clearCache } from "./lib/clearCache.js"; -// import { addTournamentMatchesOneTime } from "./handler/manager/addTournamentMatchesOneTime.js"; - -const app = express(); - -setupExpressErrorHandler(posthog, app); - -app.set("trust proxy", true); - -const port = process.env.PORT || 3000; - -app.use(bodyParser.json()); - -app.use(cookieParser()); - -app.post( - "/v1/manager/onboarding/verifyemail", - requireLovatSignature, - approveTeamEmail, -); //tested - -// Log requests -app.use(posthogReporter); - -//scouter onboarding -app.post("/v1/manager/emailTeamCode", emailTeamCode); -app.get("/v1/manager/scouter/checkcode", checkCodeScouter); //tested change name/where request data is coming from/response format as needed -app.post("/v1/manager/unarchive/uuid/:uuid", requireAuth, unarchiveScouter); -app.post("/v1/manager/archive/uuid/:uuid", requireAuth, archiveScouter); -app.post("/v1/manager/name/uuid/:uuid", changeNameScouter); // tested, change name/where request data is coming from/response format as needed -app.get("/v1/manager/scouters", getScoutersOnTeam); //tested -app.post("/v1/manager/scouter", addNewScouter); //tested - -//collection app homepage (feel free to change request/response format as needed) -app.get("/v1/manager/scouters/:uuid/tournaments", getScouterTournaments); //tested, gets all tournaments (for settings) -app.get("/v1/manager/scouterschedules/:tournament", getScheduleForScouter); //tested -app.get("/v1/manager/scouter/tournaments", getTournamentForScouterWithSchedule); - -//analysis - -//team look up page -app.get("/v1/analysis/metric/:metric/team/:team", requireAuth, detailsPage); //tested, same format -app.get("/v1/analysis/category/team/:team", requireAuth, categoryMetrics); //tested, same format -app.get("/v1/analysis/breakdown/team/:team", requireAuth, breakdownMetrics); //tested, same format -app.get( - "/v1/analysis/breakdown/team/:team/:breakdown", - requireAuth, - breakdownDetails, -); -app.get("/v1/analysis/notes/team/:team", requireAuth, getNotes); //tested -app.get("/v1/analysis/flag/team/:team", requireAuth, multipleFlags); //tested - -//my alliance page -app.get("/v1/analysis/alliance", requireAuth, alliancePageResponse); - -//match prediction -app.get("/v1/analysis/matchprediction", requireAuth, matchPrediction); -app.get("/v1/analysis/picklist", requireAuth, picklistShell); - -app.get( - "/v1/analysis/metrics/scoutreport/:uuid", - requireAuth, - matchPageSpecificScouter, -); -app.get( - "/v1/analysis/scoutreports/match/:match", - requireAuth, - scoutReportForMatch, -); -app.get( - "/v1/analysis/timeline/scoutreport/:uuid", - requireAuth, - timelineForScoutReport, -); - -//pit scouting -app.get("/v1/analysis/pitdisplay", pitDisplay); - -// app.get('/v1/addtourny', addTournamentMatchesOneTime) - -// csv export -app.get("/v1/analysis/csvplain", requireAuth, getTeamCSV); // tested -app.get("/v1/analysis/matchcsv", requireAuth, getTeamMatchCSV); -app.get("/v1/analysis/reportcsv", requireAuth, getReportCSV); - -await scheduleJobs(); - -await migrateDataSources(); - -await clearCache(); - -app.listen(port); diff --git a/src/routes/analysis/analysis.routes.ts b/src/routes/analysis/analysis.routes.ts index 41250a38..8e366b5a 100644 --- a/src/routes/analysis/analysis.routes.ts +++ b/src/routes/analysis/analysis.routes.ts @@ -1,5 +1,46 @@ +import { alliancePageResponse } from "@/src/handler/analysis/alliancePredictions/alliancePageResponse"; +import { matchPrediction } from "@/src/handler/analysis/alliancePredictions/matchPrediction"; +import { getReportCSV } from "@/src/handler/analysis/csv/getReportCSV"; +import { getTeamCSV } from "@/src/handler/analysis/csv/getTeamCSV"; +import { getTeamMatchCSV } from "@/src/handler/analysis/csv/getTeamMatchCSV"; +import { picklistShell } from "@/src/handler/analysis/picklist/picklistShell"; +import { matchPageSpecificScouter } from "@/src/handler/analysis/specificMatchPage/matchPageSpecificScouter"; +import { scoutReportForMatch } from "@/src/handler/analysis/specificMatchPage/scoutReportForMatch"; +import { timelineForScoutReport } from "@/src/handler/analysis/specificMatchPage/timelineForScoutReport"; +import { breakdownDetails } from "@/src/handler/analysis/teamLookUp/breakdownDetails"; +import { breakdownMetrics } from "@/src/handler/analysis/teamLookUp/breakdownMetrics"; +import { categoryMetrics } from "@/src/handler/analysis/teamLookUp/categoryMetrics"; +import { detailsPage } from "@/src/handler/analysis/teamLookUp/detailsPage"; +import { getNotes } from "@/src/handler/analysis/teamLookUp/getNotes"; +import { multipleFlags } from "@/src/handler/analysis/teamLookUp/multipleFlags"; +import { pitDisplay } from "@/src/handler/manager/pitDisplay"; +import { requireAuth } from "@/src/lib/middleware/requireAuth"; import { Router } from "express"; const router = Router(); +router.get("/pitdisplay", pitDisplay); + +router.use(requireAuth); + +router.get("/metric/:metric/team/:team", detailsPage); //tested, same format +router.get("/category/team/:team", categoryMetrics); //tested, same format +router.get("/breakdown/team/:team", breakdownMetrics); //tested, same format +router.get("/breakdown/team/:team/:breakdown", breakdownDetails); +router.get("/notes/team/:team", getNotes); //tested +router.get("/flag/team/:team", multipleFlags); //tested + +router.get("/alliance", alliancePageResponse); + +router.get("/matchprediction", matchPrediction); +router.get("/picklist", picklistShell); + +router.get("/metrics/scoutreport/:uuid", matchPageSpecificScouter); +router.get("/scoutreports/match/:match", scoutReportForMatch); +router.get("/timeline/scoutreport/:uuid", timelineForScoutReport); + +router.get("/csvplain", getTeamCSV); +router.get("/matchcsv", getTeamMatchCSV); +router.get("/reportcsv", getReportCSV); + export default router; diff --git a/src/routes/index.ts b/src/routes/index.ts index 56e8e59d..4aa6c0a1 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,15 +1,15 @@ import { Router } from "express"; -import slackRoutes from "@/src/routes/slack/slack.routes.js"; -import managerRoutes from "@/src/routes/manager/manager.routes.js"; -import analysisRoutes from "@/src/routes/analysis/analysis.routes.js"; +import slackRouter from "@/src/routes/slack/slack.routes.js"; +import managerRouter from "@/src/routes/manager/manager.routes.js"; +import analysisRouter from "@/src/routes/analysis/analysis.routes.js"; import { onboardingRedirect } from "@/src/handler/slack/onboardingRedirect.js"; const router = Router(); -router.use("/slack", slackRoutes); -router.use("/manager", managerRoutes); -router.use("/analysis", analysisRoutes); +router.use("/slack", slackRouter); +router.use("/manager", managerRouter); +router.use("/analysis", analysisRouter); router.get("/invite", onboardingRedirect); From badd23fcf288d315daac7ffa957182eb0bf53f20 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 12:30:01 -0800 Subject: [PATCH 06/14] fixed double requireAuths --- src/routes/manager/apikey.routes.ts | 8 ++++---- src/routes/manager/onboarding.routes.ts | 1 - src/routes/manager/scouters.routes.ts | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/routes/manager/apikey.routes.ts b/src/routes/manager/apikey.routes.ts index f3317d0d..f7dae3fb 100644 --- a/src/routes/manager/apikey.routes.ts +++ b/src/routes/manager/apikey.routes.ts @@ -9,9 +9,9 @@ const router = Router(); router.use(requireAuth); -router.post("/", requireAuth, addApiKey); -router.delete("/", requireAuth, revokeApiKey); -router.get("/", requireAuth, getApiKeys); -router.patch("/", requireAuth, renameApiKey); +router.post("/", addApiKey); +router.delete("/", revokeApiKey); +router.get("/", getApiKeys); +router.patch("/", renameApiKey); export default router; diff --git a/src/routes/manager/onboarding.routes.ts b/src/routes/manager/onboarding.routes.ts index dac3ddfb..39076b1a 100644 --- a/src/routes/manager/onboarding.routes.ts +++ b/src/routes/manager/onboarding.routes.ts @@ -47,7 +47,6 @@ router.post("/teamwebsite", addWebsite); router.post( "/resendverificationemail", resendEmailLimiter, - requireAuth, resendEmail, ); diff --git a/src/routes/manager/scouters.routes.ts b/src/routes/manager/scouters.routes.ts index b97959c8..a5b5edb5 100644 --- a/src/routes/manager/scouters.routes.ts +++ b/src/routes/manager/scouters.routes.ts @@ -29,8 +29,8 @@ router.get("/scouter/tournaments", getTournamentForScouterWithSchedule); router.use(requireAuth); -router.post("/unarchive/uuid/:uuid", requireAuth, unarchiveScouter); -router.post("/archive/uuid/:uuid", requireAuth, archiveScouter); +router.post("/unarchive/uuid/:uuid", unarchiveScouter); +router.post("/archive/uuid/:uuid", archiveScouter); router.put("/scoutername", updateScouterName); router.delete("/scouterdashboard", deleteScouter); From b8258ee487719ce38de9ad268cbaecec1d48b5a0 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sat, 3 Jan 2026 14:47:20 -0800 Subject: [PATCH 07/14] removed abolute paths (node doesn't like them) --- package-lock.json | 12 ----- src/app.ts | 6 +-- .../alliancePredictions/alliancePage.ts | 12 ++--- .../alliancePageResponse.ts | 4 +- .../alliancePredictions/matchPrediction.ts | 6 +-- .../matchPredictionLogic.ts | 6 +-- src/handler/analysis/analysisConstants.ts | 4 +- src/handler/analysis/analysisFunction.ts | 8 +-- src/handler/analysis/analysisHandler.ts | 10 ++-- .../analysis/autoPaths/autoPathsTeam.ts | 8 +-- .../coreAnalysis/arrayAndAverageTeams.ts | 10 ++-- .../coreAnalysis/averageAllTeamFast.ts | 8 +-- .../analysis/coreAnalysis/averageManyFast.ts | 12 ++--- .../coreAnalysis/averageScoutReport.ts | 6 +-- .../analysis/coreAnalysis/nonEventMetric.ts | 8 +-- .../analysis/coreAnalysis/robotRole.ts | 6 +-- src/handler/analysis/csv/getReportCSV.ts | 8 +-- src/handler/analysis/csv/getTeamCSV.ts | 8 +-- src/handler/analysis/csv/getTeamMatchCSV.ts | 10 ++-- .../picklist/endgamePicklistTeamFast.ts | 6 +-- .../analysis/picklist/picklistShell.ts | 12 ++--- src/handler/analysis/picklist/zScoreMany.ts | 4 +- src/handler/analysis/rankFlag.ts | 2 +- src/handler/analysis/scoutingLead.ts | 4 +- .../scoutingLead/scouterScoutReports.ts | 4 +- .../analysis/scoutingLead/scoutingLeadPage.ts | 14 ++--- .../scoutingLead/totalPointsScoutingLead.ts | 4 +- .../specificMatchPage/autoPathScouter.ts | 6 +-- .../specificMatchPage/matchPageAllScouters.ts | 14 ++--- .../matchPageSpecificScouter.ts | 12 ++--- .../specificMatchPage/scoutReportForMatch.ts | 4 +- .../timelineForScoutReport.ts | 6 +-- .../analysis/teamLookUp/breakdownDetails.ts | 8 +-- .../analysis/teamLookUp/breakdownMetrics.ts | 6 +-- .../analysis/teamLookUp/categoryMetrics.ts | 6 +-- .../analysis/teamLookUp/detailsPage.ts | 10 ++-- src/handler/analysis/teamLookUp/getNotes.ts | 6 +-- .../analysis/teamLookUp/multipleFlags.ts | 8 +-- src/handler/manager/addTournamentMatches.ts | 2 +- src/handler/manager/apikey/addApiKey.ts | 4 +- src/handler/manager/apikey/getApiKeys.ts | 4 +- src/handler/manager/apikey/renameApiKey.ts | 4 +- src/handler/manager/apikey/revokeApiKey.ts | 4 +- src/handler/manager/deleteUser.ts | 4 +- src/handler/manager/getAnalysts.ts | 4 +- src/handler/manager/getMatchResults.ts | 6 +-- src/handler/manager/getMatches.ts | 12 ++--- src/handler/manager/getProfile.ts | 4 +- src/handler/manager/getTeamCode.ts | 4 +- .../manager/getTeamTournamentStatus.ts | 2 +- src/handler/manager/getTeams.ts | 4 +- .../manager/getTournamentWithSchedule.ts | 2 +- src/handler/manager/getTournaments.ts | 4 +- src/handler/manager/getUsers.ts | 4 +- .../mutablepicklists/addMutablePicklist.ts | 4 +- .../mutablepicklists/deleteMutablePicklist.ts | 4 +- .../mutablepicklists/getMutablePicklists.ts | 4 +- .../getSingleMutablePicklist.ts | 4 +- .../mutablepicklists/updateMutablePicklist.ts | 4 +- src/handler/manager/onboarding/addUsername.ts | 4 +- src/handler/manager/onboarding/addWebsite.ts | 6 +-- .../manager/onboarding/approveTeamEmail.ts | 2 +- src/handler/manager/onboarding/checkCode.ts | 4 +- src/handler/manager/onboarding/resendEmail.ts | 4 +- src/handler/manager/picklists/addPicklist.ts | 4 +- .../manager/picklists/deletePicklist.ts | 4 +- src/handler/manager/picklists/getPicklists.ts | 4 +- .../manager/picklists/getSinglePicklist.ts | 4 +- .../manager/picklists/updatePicklist.ts | 4 +- src/handler/manager/pitDisplay.ts | 8 +-- .../registeredteams/addRegisteredTeam.ts | 6 +-- .../registeredteams/approveRegisteredTeam.ts | 2 +- .../registeredteams/checkRegisteredTeam.ts | 4 +- .../registeredteams/rejectRegisteredTeam.ts | 2 +- src/handler/manager/scouters/addNewScouter.ts | 2 +- .../manager/scouters/addScouterDashboard.ts | 4 +- .../manager/scouters/archiveScouter.ts | 4 +- .../manager/scouters/changeNameScouter.ts | 2 +- .../manager/scouters/checkCodeScouter.ts | 2 +- src/handler/manager/scouters/deleteScouter.ts | 6 +-- src/handler/manager/scouters/emailTeamCode.ts | 2 +- .../manager/scouters/getScheduleForScouter.ts | 6 +-- .../manager/scouters/getScouterTournaments.ts | 2 +- src/handler/manager/scouters/getScouters.ts | 4 +- .../manager/scouters/getScoutersOnTeam.ts | 2 +- .../getTournamentForScouterWithSchedule.ts | 2 +- .../scouters/scoutingLeadProgressPage.ts | 4 +- .../manager/scouters/unarchiveScouter.ts | 4 +- .../scouters/updateRoleToScoutingLead.ts | 4 +- .../manager/scouters/updateScouterName.ts | 4 +- .../scoutershifts/checkScouterShiftMatches.ts | 4 +- .../scoutershifts/deleteScouterShift.ts | 4 +- .../scoutershifts/updateScouterShift.ts | 8 +-- .../manager/scoutreports/addScoutReport.ts | 10 ++-- .../scoutreports/addScoutReportDashboard.ts | 12 ++--- .../manager/scoutreports/deleteScoutReport.ts | 6 +-- .../manager/scoutreports/getScoutReport.ts | 4 +- src/handler/manager/settings/addTeamSource.ts | 8 +-- .../manager/settings/addTournamentSource.ts | 8 +-- src/handler/manager/settings/getTeamSource.ts | 6 +-- .../manager/settings/getTournamentSource.ts | 6 +-- .../manager/settings/updateSettings.ts | 8 +-- .../manager/settings/updateTeamEmail.ts | 6 +-- src/handler/manager/temp/addNotOnTeam.ts | 4 +- .../manager/tournament/addScouterShift.ts | 8 +-- .../manager/tournament/getTeamRankings.ts | 2 +- .../tournament/getTeamsInTournament.ts | 2 +- src/handler/manager/updateNotes.ts | 6 +-- src/handler/slack/addSlackWorkspace.ts | 2 +- src/handler/slack/onboardingRedirect.ts | 2 +- src/handler/slack/processCommands.ts | 2 +- src/handler/slack/processEvents.ts | 2 +- src/handler/slack/sendWarningNotification.ts | 2 +- src/lib/clearCache.ts | 4 +- src/lib/deleteOldRequests.ts | 2 +- src/lib/fetchMatches.ts | 4 +- src/lib/fetchTeams.ts | 2 +- src/lib/fetchTournaments.ts | 2 +- src/lib/middleware/posthogMiddleware.ts | 6 +-- src/lib/middleware/requireAuth.ts | 2 +- src/lib/migrateDataSources.ts | 6 +-- src/lib/scheduleJobs.ts | 10 ++-- src/posthogClient.ts | 2 +- src/routes/analysis/analysis.routes.ts | 34 ++++++------ src/routes/index.ts | 8 +-- src/routes/manager/apikey.routes.ts | 10 ++-- src/routes/manager/manager.routes.ts | 52 +++++++++---------- src/routes/manager/mutablepicklists.routes.ts | 12 ++--- src/routes/manager/onboarding.routes.ts | 16 +++--- src/routes/manager/picklists.routes.ts | 12 ++--- src/routes/manager/registeredteams.routes.ts | 10 ++-- src/routes/manager/scouters.routes.ts | 32 ++++++------ src/routes/manager/scoutershifts.routes.ts | 6 +-- src/routes/manager/scoutreports.routes.ts | 8 +-- src/routes/manager/settings.routes.ts | 14 ++--- src/routes/manager/tournaments.routes.ts | 8 +-- src/routes/slack/slack.routes.ts | 8 +-- src/server.ts | 8 +-- tsconfig.json | 7 +-- 139 files changed, 441 insertions(+), 458 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1bcf6f18..19d74bce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,6 @@ }, "devDependencies": { "@eslint/js": "^9.8.0", - "@types/cookie-parser": "^1.4.7", "@types/crypto-js": "^4.2.1", "@types/express": "^4.17.21", "@types/node": "^20.9.2", @@ -1169,16 +1168,6 @@ "@types/node": "*" } }, - "node_modules/@types/cookie-parser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.10.tgz", - "integrity": "sha512-B4xqkqfZ8Wek+rCOeRxsjMS9OgvzebEzzLYw7NHYuvzb7IdxOkI0ZHGgeEBX4PUM7QGVvNSK60T3OvWj3YfBRg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/express": "*" - } - }, "node_modules/@types/crypto-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", @@ -1199,7 +1188,6 @@ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", diff --git a/src/app.ts b/src/app.ts index 548995db..4d94fa51 100644 --- a/src/app.ts +++ b/src/app.ts @@ -4,10 +4,10 @@ import cookieParser from "cookie-parser"; import "dotenv/config"; import { setupExpressErrorHandler } from "posthog-node"; -import { posthog } from "@/src/posthogClient.js"; -import posthogReporter from "@/src/lib/middleware/posthogMiddleware.js"; +import { posthog } from "./posthogClient.js"; +import posthogReporter from "./lib/middleware/posthogMiddleware.js"; -import routes from "@/src/routes/index.js"; +import routes from "./routes/index.js"; export const app = express(); diff --git a/src/handler/analysis/alliancePredictions/alliancePage.ts b/src/handler/analysis/alliancePredictions/alliancePage.ts index 4ef2015c..24dc0692 100644 --- a/src/handler/analysis/alliancePredictions/alliancePage.ts +++ b/src/handler/analysis/alliancePredictions/alliancePage.ts @@ -1,13 +1,13 @@ import z from "zod"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +import { runAnalysis } from "../analysisFunction.js"; import { FlippedRoleMap, Metric, -} from "@/src/handler/analysis/analysisConstants.js"; -import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; -import { autoPathsTeam } from "@/src/handler/analysis/autoPaths/autoPathsTeam.js"; -import { robotRole } from "@/src/handler/analysis/coreAnalysis/robotRole.js"; -import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; +} from "../analysisConstants.js"; +import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; +import { autoPathsTeam } from "../autoPaths/autoPathsTeam.js"; +import { robotRole } from "../coreAnalysis/robotRole.js"; +import { averageManyFast } from "../coreAnalysis/averageManyFast.js"; import { RobotRole, User } from "@prisma/client"; const config = { diff --git a/src/handler/analysis/alliancePredictions/alliancePageResponse.ts b/src/handler/analysis/alliancePredictions/alliancePageResponse.ts index 20d77111..5eaf6371 100644 --- a/src/handler/analysis/alliancePredictions/alliancePageResponse.ts +++ b/src/handler/analysis/alliancePredictions/alliancePageResponse.ts @@ -1,6 +1,6 @@ import z from "zod"; -import { alliancePage } from "@/src/handler/analysis/alliancePredictions/alliancePage.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +import { alliancePage } from "./alliancePage.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const alliancePageResponse = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/alliancePredictions/matchPrediction.ts b/src/handler/analysis/alliancePredictions/matchPrediction.ts index 6cf68a59..ec7a3b44 100644 --- a/src/handler/analysis/alliancePredictions/matchPrediction.ts +++ b/src/handler/analysis/alliancePredictions/matchPrediction.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { alliancePage } from "@/src/handler/analysis/alliancePredictions/alliancePage.js"; -import { matchPredictionLogic } from "@/src/handler/analysis/alliancePredictions/matchPredictionLogic.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +import { alliancePage } from "./alliancePage.js"; +import { matchPredictionLogic } from "./matchPredictionLogic.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const matchPrediction = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts b/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts index fe382495..47769fe1 100644 --- a/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts +++ b/src/handler/analysis/alliancePredictions/matchPredictionLogic.ts @@ -1,7 +1,7 @@ import z from "zod"; -import { Metric } from "@/src/handler/analysis/analysisConstants.js"; -import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +import { Metric } from "../analysisConstants.js"; +import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; +import { runAnalysis } from "../analysisFunction.js"; import { User } from "@prisma/client"; const config = { diff --git a/src/handler/analysis/analysisConstants.ts b/src/handler/analysis/analysisConstants.ts index b0653c01..c8a22cbf 100644 --- a/src/handler/analysis/analysisConstants.ts +++ b/src/handler/analysis/analysisConstants.ts @@ -7,8 +7,8 @@ import { AlgaePickup, User, } from "@prisma/client"; -import prismaClient from "@/src/prismaClient.js"; -import { DataSourceRule } from "@/src/handler/analysis/dataSourceRule.js"; +import prismaClient from "../../prismaClient.js"; +import { DataSourceRule } from "./dataSourceRule.js"; //add cooperation // Tunable constants diff --git a/src/handler/analysis/analysisFunction.ts b/src/handler/analysis/analysisFunction.ts index 36f04222..2f9ac89e 100644 --- a/src/handler/analysis/analysisFunction.ts +++ b/src/handler/analysis/analysisFunction.ts @@ -1,8 +1,8 @@ import z from "zod"; -import prismaClient from "@/src/prismaClient.js"; -import { dataSourceRuleSchema } from "@/src/handler/analysis/dataSourceRule.js"; -import { kv } from "@/src/redisClient.js"; -import { AnalysisContext } from "@/src/handler/analysis/analysisConstants.js"; +import prismaClient from "../../prismaClient.js"; +import { dataSourceRuleSchema } from "./dataSourceRule.js"; +import { kv } from "../../redisClient.js"; +import { AnalysisContext } from "./analysisConstants.js"; import { User } from "@prisma/client"; export type CreateKeyResult = { diff --git a/src/handler/analysis/analysisHandler.ts b/src/handler/analysis/analysisHandler.ts index 5a44fc36..44f63999 100644 --- a/src/handler/analysis/analysisHandler.ts +++ b/src/handler/analysis/analysisHandler.ts @@ -1,10 +1,10 @@ import { RequestHandler } from "express"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import prismaClient from "@/src/prismaClient.js"; -import { dataSourceRuleSchema } from "@/src/handler/analysis/dataSourceRule.js"; -import { kv } from "@/src/redisClient.js"; -import { AnalysisContext } from "@/src/handler/analysis/analysisConstants.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import prismaClient from "../../prismaClient.js"; +import { dataSourceRuleSchema } from "./dataSourceRule.js"; +import { kv } from "../../redisClient.js"; +import { AnalysisContext } from "./analysisConstants.js"; export type AnalysisHandlerParamsSchema< T extends z.ZodObject, diff --git a/src/handler/analysis/autoPaths/autoPathsTeam.ts b/src/handler/analysis/autoPaths/autoPathsTeam.ts index 4877933f..c6b7ead8 100644 --- a/src/handler/analysis/autoPaths/autoPathsTeam.ts +++ b/src/handler/analysis/autoPaths/autoPathsTeam.ts @@ -1,15 +1,15 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +import { runAnalysis } from "../analysisFunction.js"; import { autoEnd, FlippedActionMap, FlippedPositionMap, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; import { User } from "@prisma/client"; interface AutoPosition { diff --git a/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts b/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts index 992b0835..9e49f337 100644 --- a/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts +++ b/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.ts @@ -1,4 +1,4 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { autoEnd, endgameToPoints, @@ -6,18 +6,18 @@ import { metricToEvent, swrConstant, ttlConstant, -} from "@/src/handler/analysis/analysisConstants.js"; -import { endgamePicklistTeamFast } from "@/src/handler/analysis/picklist/endgamePicklistTeamFast.js"; +} from "../analysisConstants.js"; +import { endgamePicklistTeamFast } from "../picklist/endgamePicklistTeamFast.js"; import { Event, Position, Prisma, ScoutReport } from "@prisma/client"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; import z from "zod"; import { runAnalysis, AnalysisFunctionConfig, -} from "@/src/handler/analysis/analysisFunction.js"; +} from "../analysisFunction.js"; // Accurately aggregate an analog metric on multiple teams at once (weighs matches equally regardless of extra scout reports). // Provides a timeline of metric value per match. diff --git a/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts b/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts index c9bb07a3..29686bfb 100644 --- a/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts +++ b/src/handler/analysis/coreAnalysis/averageAllTeamFast.ts @@ -1,18 +1,18 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { autoEnd, defaultEndgamePoints, endgameToPoints, Metric, metricToEvent, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { Position, Prisma } from "@prisma/client"; import z from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "@/src/handler/analysis/dataSourceRule.js"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +} from "../dataSourceRule.js"; +import { runAnalysis } from "../analysisFunction.js"; const config = { argsSchema: z.object({ metric: z.nativeEnum(Metric) }), diff --git a/src/handler/analysis/coreAnalysis/averageManyFast.ts b/src/handler/analysis/coreAnalysis/averageManyFast.ts index 42a20436..9b90834c 100644 --- a/src/handler/analysis/coreAnalysis/averageManyFast.ts +++ b/src/handler/analysis/coreAnalysis/averageManyFast.ts @@ -1,4 +1,4 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { autoEnd, endgameToPoints, @@ -7,20 +7,20 @@ import { swrConstant, ttlConstant, allTournaments, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { BargeResult, Position, Prisma } from "@prisma/client"; -import { endgameRuleOfSuccession } from "@/src/handler/analysis/picklist/endgamePicklistTeamFast.js"; +import { endgameRuleOfSuccession } from "../picklist/endgamePicklistTeamFast.js"; import { Event } from "@prisma/client"; -import { weightedTourAvgLeft } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; +import { weightedTourAvgLeft } from "./arrayAndAverageTeams.js"; import z from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; import { runAnalysis, AnalysisFunctionConfig, -} from "@/src/handler/analysis/analysisFunction.js"; +} from "../analysisFunction.js"; import { User } from "@prisma/client"; export interface ArrayFilter { diff --git a/src/handler/analysis/coreAnalysis/averageScoutReport.ts b/src/handler/analysis/coreAnalysis/averageScoutReport.ts index c444650e..c4c41fff 100644 --- a/src/handler/analysis/coreAnalysis/averageScoutReport.ts +++ b/src/handler/analysis/coreAnalysis/averageScoutReport.ts @@ -1,16 +1,16 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { autoEnd, endgameToPoints, Metric, metricToEvent, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { EventAction, Position, User } from "@prisma/client"; import z from "zod"; import { runAnalysis, AnalysisFunctionConfig, -} from "@/src/handler/analysis/analysisFunction.js"; +} from "../analysisFunction.js"; export async function computeAverageScoutReport( scoutReportUuid: string, diff --git a/src/handler/analysis/coreAnalysis/nonEventMetric.ts b/src/handler/analysis/coreAnalysis/nonEventMetric.ts index 69484a17..57257285 100644 --- a/src/handler/analysis/coreAnalysis/nonEventMetric.ts +++ b/src/handler/analysis/coreAnalysis/nonEventMetric.ts @@ -1,18 +1,18 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { EventAction, User } from "@prisma/client"; import { breakdownNeg, breakdownPos, breakdownToEnum, MetricsBreakdown, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import z from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "@/src/handler/analysis/dataSourceRule.js"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +} from "../dataSourceRule.js"; +import { runAnalysis } from "../analysisFunction.js"; /** * Optimized function: Returns a mapping of each distinct (lowercased) metric value to its percentage, diff --git a/src/handler/analysis/coreAnalysis/robotRole.ts b/src/handler/analysis/coreAnalysis/robotRole.ts index b35d92ce..af66485f 100644 --- a/src/handler/analysis/coreAnalysis/robotRole.ts +++ b/src/handler/analysis/coreAnalysis/robotRole.ts @@ -1,13 +1,13 @@ import z from "zod"; -import { MetricsBreakdown } from "@/src/handler/analysis/analysisConstants.js"; +import { MetricsBreakdown } from "../analysisConstants.js"; import { nonEventMetric, NonEventMetricResult, -} from "@/src/handler/analysis/coreAnalysis/nonEventMetric.js"; +} from "./nonEventMetric.js"; import { runAnalysis, AnalysisFunctionConfig, -} from "@/src/handler/analysis/analysisFunction.js"; +} from "../analysisFunction.js"; import { User } from "@prisma/client"; const argsSchema = z.object({ team: z.number() }); diff --git a/src/handler/analysis/csv/getReportCSV.ts b/src/handler/analysis/csv/getReportCSV.ts index 3dd94543..262a37e1 100644 --- a/src/handler/analysis/csv/getReportCSV.ts +++ b/src/handler/analysis/csv/getReportCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -19,12 +19,12 @@ import { import { autoEnd, endgameToPoints, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; // Scouting report condensed into a single dimension that can be pushed to a row in the csv export interface CondensedReport { diff --git a/src/handler/analysis/csv/getTeamCSV.ts b/src/handler/analysis/csv/getTeamCSV.ts index e6b913dc..091be5c1 100644 --- a/src/handler/analysis/csv/getTeamCSV.ts +++ b/src/handler/analysis/csv/getTeamCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -17,12 +17,12 @@ import { import { autoEnd, endgameToPoints, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { z } from "zod"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; interface AggregatedTeamData { teamNumber: number; diff --git a/src/handler/analysis/csv/getTeamMatchCSV.ts b/src/handler/analysis/csv/getTeamMatchCSV.ts index b310ec28..035d8d36 100644 --- a/src/handler/analysis/csv/getTeamMatchCSV.ts +++ b/src/handler/analysis/csv/getTeamMatchCSV.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { stringify } from "csv-stringify/sync"; import { UserRole, @@ -18,13 +18,13 @@ import { import { autoEnd, endgameToPoints, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { z } from "zod"; -import { CondensedReport } from "@/src/handler/analysis/csv/getReportCSV.js"; +import { CondensedReport } from "./getReportCSV.js"; import { dataSourceRuleToPrismaFilter, dataSourceRuleSchema, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../dataSourceRule.js"; // Simplified scouting report with properties required for aggregation interface PointsReport { diff --git a/src/handler/analysis/picklist/endgamePicklistTeamFast.ts b/src/handler/analysis/picklist/endgamePicklistTeamFast.ts index da02888b..6e744213 100644 --- a/src/handler/analysis/picklist/endgamePicklistTeamFast.ts +++ b/src/handler/analysis/picklist/endgamePicklistTeamFast.ts @@ -1,10 +1,10 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { BargeResult } from "@prisma/client"; import { defaultEndgamePoints, endgameToPoints, -} from "@/src/handler/analysis/analysisConstants.js"; -import { ArrayFilter } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; +} from "../analysisConstants.js"; +import { ArrayFilter } from "../coreAnalysis/averageManyFast.js"; // Number of endgame possibilities that result in points earned (essentially, successes) const numPointResults: number = Object.keys(BargeResult).reduce((acc, cur) => { diff --git a/src/handler/analysis/picklist/picklistShell.ts b/src/handler/analysis/picklist/picklistShell.ts index 73ff779e..f072f06c 100644 --- a/src/handler/analysis/picklist/picklistShell.ts +++ b/src/handler/analysis/picklist/picklistShell.ts @@ -1,15 +1,15 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; +import { addTournamentMatches } from "../../manager/addTournamentMatches.js"; import { Metric, metricsCategory, metricToName, picklistToMetric, -} from "@/src/handler/analysis/analysisConstants.js"; -import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; -import { zScoreMany } from "@/src/handler/analysis/picklist/zScoreMany.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { averageManyFast } from "../coreAnalysis/averageManyFast.js"; +import { zScoreMany } from "./zScoreMany.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; /** * Main picklist endpoint. Note inconsistent strings make it confusing for this season. diff --git a/src/handler/analysis/picklist/zScoreMany.ts b/src/handler/analysis/picklist/zScoreMany.ts index edaf901d..e5ff82d5 100644 --- a/src/handler/analysis/picklist/zScoreMany.ts +++ b/src/handler/analysis/picklist/zScoreMany.ts @@ -4,8 +4,8 @@ import { metricsCategory, metricToName, picklistToMetric, -} from "@/src/handler/analysis/analysisConstants.js"; -import { computeRankFlag } from "@/src/handler/analysis/rankFlag.js"; +} from "../analysisConstants.js"; +import { computeRankFlag } from "../rankFlag.js"; /** * Take in data for many teams and return z-score values and breakdowns for queried metrics. diff --git a/src/handler/analysis/rankFlag.ts b/src/handler/analysis/rankFlag.ts index ae3856bb..a02fd7af 100644 --- a/src/handler/analysis/rankFlag.ts +++ b/src/handler/analysis/rankFlag.ts @@ -3,7 +3,7 @@ import z from "zod"; import { runAnalysis, AnalysisFunctionConfig, -} from "@/src/handler/analysis/analysisFunction.js"; +} from "./analysisFunction.js"; import { User } from "@prisma/client"; export async function computeRankFlag( diff --git a/src/handler/analysis/scoutingLead.ts b/src/handler/analysis/scoutingLead.ts index 88a6a2e9..cefe7671 100644 --- a/src/handler/analysis/scoutingLead.ts +++ b/src/handler/analysis/scoutingLead.ts @@ -1,7 +1,7 @@ // import { Request, Response } from "express"; -// import prismaClient from '@/src/prismaClient.js' +// import prismaClient from '../../prismaClient.js' // import z from 'zod' -// import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +// import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; // export const scoutingLead = async (req: AuthenticatedRequest, res : Response) => { // try { diff --git a/src/handler/analysis/scoutingLead/scouterScoutReports.ts b/src/handler/analysis/scoutingLead/scouterScoutReports.ts index 5bc5c536..ae3bf82f 100644 --- a/src/handler/analysis/scoutingLead/scouterScoutReports.ts +++ b/src/handler/analysis/scoutingLead/scouterScoutReports.ts @@ -1,6 +1,6 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const scouterScoutReports = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/scoutingLead/scoutingLeadPage.ts b/src/handler/analysis/scoutingLead/scoutingLeadPage.ts index fb604344..b27eed10 100644 --- a/src/handler/analysis/scoutingLead/scoutingLeadPage.ts +++ b/src/handler/analysis/scoutingLead/scoutingLeadPage.ts @@ -1,12 +1,12 @@ // import { Request, Response } from "express"; -// import prismaClient from '@/src/prismaClient.js' +// import prismaClient from '../../../prismaClient.js' // import z from 'zod' -// import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -// import { driverAbility, highNoteMap, matchTimeEnd, metricToEvent, stageMap } from "@/src/handler/analysis/analysisConstants.js"; -// import { autoPathSingleMatchSingleScoutReport } from "@/src/handler/analysis/autoPaths/autoPathSingleMatchSingleScoutReport"; -// import { singleMatchSingleScoutReport } from "@/src/handler/analysis/coreAnalysis/singleMatchSingleScoutReport"; -// import { cooperationSingleMatch } from "@/src/handler/analysis/coreAnalysis/cooperationSingleMatch"; -// // import { cooperationSingleMatch } from "@/src/handler/analysis/scoutingLead/cooperationSingleMatch"; +// import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +// import { driverAbility, highNoteMap, matchTimeEnd, metricToEvent, stageMap } from "../analysisConstants.js"; +// import { autoPathSingleMatchSingleScoutReport } from "../autoPaths/autoPathSingleMatchSingleScoutReport.js"; +// import { singleMatchSingleScoutReport } from "../coreAnalysis/singleMatchSingleScoutReport.js"; +// import { cooperationSingleMatch } from "../coreAnalysis/cooperationSingleMatch.js"; +// // import { cooperationSingleMatch } from "./cooperationSingleMatch.js"; // export const scoutingLeadPage = async (req : AuthenticatedRequest, res : Response) => { // try { diff --git a/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts b/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts index 90c4bd2c..12420a13 100644 --- a/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts +++ b/src/handler/analysis/scoutingLead/totalPointsScoutingLead.ts @@ -1,6 +1,6 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +import { runAnalysis } from "../analysisFunction.js"; const config = { argsSchema: z.object({ scoutReportUuid: z.string() }), diff --git a/src/handler/analysis/specificMatchPage/autoPathScouter.ts b/src/handler/analysis/specificMatchPage/autoPathScouter.ts index 0a654ad2..9690f203 100644 --- a/src/handler/analysis/specificMatchPage/autoPathScouter.ts +++ b/src/handler/analysis/specificMatchPage/autoPathScouter.ts @@ -1,11 +1,11 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import { FlippedActionMap, FlippedPositionMap, autoEnd, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import z from "zod"; -import { runAnalysis } from "@/src/handler/analysis/analysisFunction.js"; +import { runAnalysis } from "../analysisFunction.js"; const config = { argsSchema: z.object({ matchKey: z.string(), scoutReportUuid: z.string() }), diff --git a/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts b/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts index 953e341c..abbf8f70 100644 --- a/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts +++ b/src/handler/analysis/specificMatchPage/matchPageAllScouters.ts @@ -1,13 +1,13 @@ // import { Request, Response } from "express"; -// import prismaClient from '@/src/prismaClient.js' +// import prismaClient from '../../../prismaClient.js' // import z from 'zod' -// import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -// import { singleMatchEventsAverage } from "@/src/handler/analysis/coreAnalysis/singleMatchEventsAverage"; -// import { arrayAndAverageTeam } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeam"; -// import { specificMatchPageMetrics } from "@/src/handler/analysis/analysisConstants.js"; -// import { singleMatchSingleScouter } from "@/src/handler/analysis/coreAnalysis/singleMatchSingleScouter"; +// import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +// import { singleMatchEventsAverage } from "../coreAnalysis/singleMatchEventsAverage.js"; +// import { arrayAndAverageTeam } from "../coreAnalysis/arrayAndAverageTeam.js"; +// import { specificMatchPageMetrics } from "../analysisConstants.js"; +// import { singleMatchSingleScouter } from "../coreAnalysis/singleMatchSingleScouter.js"; // import { match } from "assert"; -// import { autoPathSingleMatchSingleScouter } from "@/src/handler/analysis/autoPaths/autoPathSingleMatchSingleScouter"; +// import { autoPathSingleMatchSingleScouter } from "../autoPaths/autoPathSingleMatchSingleScouter.js"; // export const matchPageAllScouters = async (req: AuthenticatedRequest, res: Response) => { // try { diff --git a/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts b/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts index 3749d035..75cab18e 100644 --- a/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts +++ b/src/handler/analysis/specificMatchPage/matchPageSpecificScouter.ts @@ -1,15 +1,15 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { Metric, FlippedRoleMap, specificMatchPageMetrics, metricToName, -} from "@/src/handler/analysis/analysisConstants.js"; -import { BargeResultReverseMap } from "@/src/handler/manager/managerConstants.js"; -import { autoPathScouter } from "@/src/handler/analysis/specificMatchPage/autoPathScouter.js"; -import { averageScoutReport } from "@/src/handler/analysis/coreAnalysis/averageScoutReport.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { BargeResultReverseMap } from "../../manager/managerConstants.js"; +import { autoPathScouter } from "./autoPathScouter.js"; +import { averageScoutReport } from "../coreAnalysis/averageScoutReport.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const matchPageSpecificScouter = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts b/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts index 8cf27a9e..73cc7a6a 100644 --- a/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts +++ b/src/handler/analysis/specificMatchPage/scoutReportForMatch.ts @@ -1,7 +1,7 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { UserRole } from "@prisma/client"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const scoutReportForMatch = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts b/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts index c29a5844..5a4ce7d6 100644 --- a/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts +++ b/src/handler/analysis/specificMatchPage/timelineForScoutReport.ts @@ -1,10 +1,10 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { FlippedActionMap, FlippedPositionMap, -} from "@/src/handler/analysis/analysisConstants.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const timelineForScoutReport = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/breakdownDetails.ts b/src/handler/analysis/teamLookUp/breakdownDetails.ts index ed0f8f37..3a59d8a4 100644 --- a/src/handler/analysis/teamLookUp/breakdownDetails.ts +++ b/src/handler/analysis/teamLookUp/breakdownDetails.ts @@ -6,14 +6,14 @@ import { breakdownPos, lowercaseToBreakdown, MetricsBreakdown, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysisConstants.js"; import { EventAction } from "@prisma/client"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "@/src/handler/analysis/dataSourceRule.js"; -import prismaClient from "@/src/prismaClient.js"; +} from "../dataSourceRule.js"; +import prismaClient from "../../../prismaClient.js"; export const breakdownDetails = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/breakdownMetrics.ts b/src/handler/analysis/teamLookUp/breakdownMetrics.ts index 37002c81..ab2a371f 100644 --- a/src/handler/analysis/teamLookUp/breakdownMetrics.ts +++ b/src/handler/analysis/teamLookUp/breakdownMetrics.ts @@ -1,10 +1,10 @@ import z from "zod"; -import { nonEventMetric } from "@/src/handler/analysis/coreAnalysis/nonEventMetric.js"; +import { nonEventMetric } from "../coreAnalysis/nonEventMetric.js"; import { lowercaseToBreakdown, MetricsBreakdown, -} from "@/src/handler/analysis/analysisConstants.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const breakdownMetrics = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/categoryMetrics.ts b/src/handler/analysis/teamLookUp/categoryMetrics.ts index 4a8864a2..ebe50219 100644 --- a/src/handler/analysis/teamLookUp/categoryMetrics.ts +++ b/src/handler/analysis/teamLookUp/categoryMetrics.ts @@ -2,9 +2,9 @@ import z from "zod"; import { metricsCategory, metricToName, -} from "@/src/handler/analysis/analysisConstants.js"; -import { averageManyFast } from "@/src/handler/analysis/coreAnalysis/averageManyFast.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { averageManyFast } from "../coreAnalysis/averageManyFast.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const categoryMetrics = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/detailsPage.ts b/src/handler/analysis/teamLookUp/detailsPage.ts index 82219568..dc9e3b8a 100644 --- a/src/handler/analysis/teamLookUp/detailsPage.ts +++ b/src/handler/analysis/teamLookUp/detailsPage.ts @@ -1,12 +1,12 @@ import z from "zod"; -import { autoPathsTeam } from "@/src/handler/analysis/autoPaths/autoPathsTeam.js"; -import { averageAllTeamFast } from "@/src/handler/analysis/coreAnalysis/averageAllTeamFast.js"; +import { autoPathsTeam } from "../autoPaths/autoPathsTeam.js"; +import { averageAllTeamFast } from "../coreAnalysis/averageAllTeamFast.js"; import { Metric, metricsToNumber, -} from "@/src/handler/analysis/analysisConstants.js"; -import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const detailsPage = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/getNotes.ts b/src/handler/analysis/teamLookUp/getNotes.ts index fb8ae4ac..02e7ddf8 100644 --- a/src/handler/analysis/teamLookUp/getNotes.ts +++ b/src/handler/analysis/teamLookUp/getNotes.ts @@ -1,10 +1,10 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "@/src/handler/analysis/dataSourceRule.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../dataSourceRule.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const getNotes = createAnalysisHandler({ params: { diff --git a/src/handler/analysis/teamLookUp/multipleFlags.ts b/src/handler/analysis/teamLookUp/multipleFlags.ts index b742a96f..5b3a9f53 100644 --- a/src/handler/analysis/teamLookUp/multipleFlags.ts +++ b/src/handler/analysis/teamLookUp/multipleFlags.ts @@ -1,11 +1,11 @@ import z from "zod"; -import { rankFlag } from "@/src/handler/analysis/rankFlag.js"; +import { rankFlag } from "../rankFlag.js"; import { metricsCategory, metricToName, -} from "@/src/handler/analysis/analysisConstants.js"; -import { arrayAndAverageTeams } from "@/src/handler/analysis/coreAnalysis/arrayAndAverageTeams.js"; -import { createAnalysisHandler } from "@/src/handler/analysis/analysisHandler.js"; +} from "../analysisConstants.js"; +import { arrayAndAverageTeams } from "../coreAnalysis/arrayAndAverageTeams.js"; +import { createAnalysisHandler } from "../analysisHandler.js"; export const multipleFlags = createAnalysisHandler({ params: { diff --git a/src/handler/manager/addTournamentMatches.ts b/src/handler/manager/addTournamentMatches.ts index 9073f2dc..40bf81db 100644 --- a/src/handler/manager/addTournamentMatches.ts +++ b/src/handler/manager/addTournamentMatches.ts @@ -1,4 +1,4 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; import axios from "axios"; diff --git a/src/handler/manager/apikey/addApiKey.ts b/src/handler/manager/apikey/addApiKey.ts index 9c8bccf7..beb7b593 100644 --- a/src/handler/manager/apikey/addApiKey.ts +++ b/src/handler/manager/apikey/addApiKey.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { createHash, randomBytes } from "crypto"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addApiKey = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/apikey/getApiKeys.ts b/src/handler/manager/apikey/getApiKeys.ts index 03b8424b..31e59c81 100644 --- a/src/handler/manager/apikey/getApiKeys.ts +++ b/src/handler/manager/apikey/getApiKeys.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const getApiKeys = async ( diff --git a/src/handler/manager/apikey/renameApiKey.ts b/src/handler/manager/apikey/renameApiKey.ts index c2286b93..15c061ee 100644 --- a/src/handler/manager/apikey/renameApiKey.ts +++ b/src/handler/manager/apikey/renameApiKey.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const renameApiKey = async ( diff --git a/src/handler/manager/apikey/revokeApiKey.ts b/src/handler/manager/apikey/revokeApiKey.ts index a975b5ab..9c43ce42 100644 --- a/src/handler/manager/apikey/revokeApiKey.ts +++ b/src/handler/manager/apikey/revokeApiKey.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const revokeApiKey = async ( diff --git a/src/handler/manager/deleteUser.ts b/src/handler/manager/deleteUser.ts index ccf5aec4..7d3679b6 100644 --- a/src/handler/manager/deleteUser.ts +++ b/src/handler/manager/deleteUser.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../prismaClient.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; export const deleteUser = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getAnalysts.ts b/src/handler/manager/getAnalysts.ts index 05d1620b..9683c6e7 100644 --- a/src/handler/manager/getAnalysts.ts +++ b/src/handler/manager/getAnalysts.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../prismaClient.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const getAnalysts = async ( diff --git a/src/handler/manager/getMatchResults.ts b/src/handler/manager/getMatchResults.ts index 3d346592..9aa759b3 100644 --- a/src/handler/manager/getMatchResults.ts +++ b/src/handler/manager/getMatchResults.ts @@ -1,9 +1,9 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; import { TeamMatchData, ScoutReport } from "@prisma/client"; -import { computeAverageScoutReport } from "@/src/handler/analysis/coreAnalysis/averageScoutReport.js"; -import { Metric } from "@/src/handler/analysis/analysisConstants.js"; +import { computeAverageScoutReport } from "../analysis/coreAnalysis/averageScoutReport.js"; +import { Metric } from "../analysis/analysisConstants.js"; export const getMatchResults = async ( req: Request, diff --git a/src/handler/manager/getMatches.ts b/src/handler/manager/getMatches.ts index d0a538fd..061155f8 100644 --- a/src/handler/manager/getMatches.ts +++ b/src/handler/manager/getMatches.ts @@ -1,18 +1,18 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; -import { ReverseMatchTypeMap } from "@/src/handler/manager/managerConstants.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { addTournamentMatches } from "./addTournamentMatches.js"; +import { ReverseMatchTypeMap } from "./managerConstants.js"; import { MatchType, Prisma } from "@prisma/client"; import { swrConstant, ttlConstant, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../analysis/analysisConstants.js"; import { dataSourceRuleSchema, dataSourceRuleToPrismaFilter, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../analysis/dataSourceRule.js"; /** * @param params.tournament tournament to pull from diff --git a/src/handler/manager/getProfile.ts b/src/handler/manager/getProfile.ts index 3730dac9..6c7907c5 100644 --- a/src/handler/manager/getProfile.ts +++ b/src/handler/manager/getProfile.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../prismaClient.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; export const getProfile = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTeamCode.ts b/src/handler/manager/getTeamCode.ts index 8daa36c2..7079d318 100644 --- a/src/handler/manager/getTeamCode.ts +++ b/src/handler/manager/getTeamCode.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../prismaClient.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; export const getTeamCode = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTeamTournamentStatus.ts b/src/handler/manager/getTeamTournamentStatus.ts index 4a3a63c4..1986c138 100644 --- a/src/handler/manager/getTeamTournamentStatus.ts +++ b/src/handler/manager/getTeamTournamentStatus.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; export const getTeamTournamentStatus = async ( diff --git a/src/handler/manager/getTeams.ts b/src/handler/manager/getTeams.ts index 9892ff0d..a1c589ba 100644 --- a/src/handler/manager/getTeams.ts +++ b/src/handler/manager/getTeams.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; export const getTeams = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getTournamentWithSchedule.ts b/src/handler/manager/getTournamentWithSchedule.ts index 41a039c0..5c22c6f6 100644 --- a/src/handler/manager/getTournamentWithSchedule.ts +++ b/src/handler/manager/getTournamentWithSchedule.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; export const getTournamentsWithSchedule = async ( diff --git a/src/handler/manager/getTournaments.ts b/src/handler/manager/getTournaments.ts index f77f423e..3d0459ff 100644 --- a/src/handler/manager/getTournaments.ts +++ b/src/handler/manager/getTournaments.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; export const getTournaments = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/getUsers.ts b/src/handler/manager/getUsers.ts index 3511227d..0660a718 100644 --- a/src/handler/manager/getUsers.ts +++ b/src/handler/manager/getUsers.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../prismaClient.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; export const getUsers = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/addMutablePicklist.ts b/src/handler/manager/mutablepicklists/addMutablePicklist.ts index 138a21a3..d79721a2 100644 --- a/src/handler/manager/mutablepicklists/addMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/addMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts b/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts index 850f5707..73530688 100644 --- a/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/deleteMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const deleteMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/getMutablePicklists.ts b/src/handler/manager/mutablepicklists/getMutablePicklists.ts index f12bc92b..a0d81987 100644 --- a/src/handler/manager/mutablepicklists/getMutablePicklists.ts +++ b/src/handler/manager/mutablepicklists/getMutablePicklists.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const getMutablePicklists = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts b/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts index 0da89469..32a2aa52 100644 --- a/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/getSingleMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const getSingleMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/mutablepicklists/updateMutablePicklist.ts b/src/handler/manager/mutablepicklists/updateMutablePicklist.ts index 0c6fbf63..41b3b689 100644 --- a/src/handler/manager/mutablepicklists/updateMutablePicklist.ts +++ b/src/handler/manager/mutablepicklists/updateMutablePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const updateMutablePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/addUsername.ts b/src/handler/manager/onboarding/addUsername.ts index 8002b118..c3e1b6fa 100644 --- a/src/handler/manager/onboarding/addUsername.ts +++ b/src/handler/manager/onboarding/addUsername.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addUsername = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/addWebsite.ts b/src/handler/manager/onboarding/addWebsite.ts index 3ec1113e..ddb2b94b 100644 --- a/src/handler/manager/onboarding/addWebsite.ts +++ b/src/handler/manager/onboarding/addWebsite.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { sendSlackVerification } from "@/src/handler/manager/sendSlackVerification.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { sendSlackVerification } from "../sendSlackVerification.js"; export const addWebsite = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/approveTeamEmail.ts b/src/handler/manager/onboarding/approveTeamEmail.ts index 547078a8..0b34ca8b 100644 --- a/src/handler/manager/onboarding/approveTeamEmail.ts +++ b/src/handler/manager/onboarding/approveTeamEmail.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { PrismaClientKnownRequestError } from "@prisma/client/runtime/library"; diff --git a/src/handler/manager/onboarding/checkCode.ts b/src/handler/manager/onboarding/checkCode.ts index 4cfd2dfa..d03347fd 100644 --- a/src/handler/manager/onboarding/checkCode.ts +++ b/src/handler/manager/onboarding/checkCode.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const checkCode = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/onboarding/resendEmail.ts b/src/handler/manager/onboarding/resendEmail.ts index cc6554ab..830fbf40 100644 --- a/src/handler/manager/onboarding/resendEmail.ts +++ b/src/handler/manager/onboarding/resendEmail.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { Resend } from "resend"; import { randomBytes } from "crypto"; import { DateTime } from "luxon"; diff --git a/src/handler/manager/picklists/addPicklist.ts b/src/handler/manager/picklists/addPicklist.ts index 3bbd6840..ad56ac09 100644 --- a/src/handler/manager/picklists/addPicklist.ts +++ b/src/handler/manager/picklists/addPicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addPicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/deletePicklist.ts b/src/handler/manager/picklists/deletePicklist.ts index f98f07ce..dccfac5c 100644 --- a/src/handler/manager/picklists/deletePicklist.ts +++ b/src/handler/manager/picklists/deletePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const deletePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/getPicklists.ts b/src/handler/manager/picklists/getPicklists.ts index bfce4ee9..97d40460 100644 --- a/src/handler/manager/picklists/getPicklists.ts +++ b/src/handler/manager/picklists/getPicklists.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const getPicklists = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/getSinglePicklist.ts b/src/handler/manager/picklists/getSinglePicklist.ts index d0dc9f37..10cbc878 100644 --- a/src/handler/manager/picklists/getSinglePicklist.ts +++ b/src/handler/manager/picklists/getSinglePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const getSinglePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/picklists/updatePicklist.ts b/src/handler/manager/picklists/updatePicklist.ts index a168954a..a6659c2e 100644 --- a/src/handler/manager/picklists/updatePicklist.ts +++ b/src/handler/manager/picklists/updatePicklist.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const updatePicklist = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/pitDisplay.ts b/src/handler/manager/pitDisplay.ts index 62576a5f..438b5645 100644 --- a/src/handler/manager/pitDisplay.ts +++ b/src/handler/manager/pitDisplay.ts @@ -1,11 +1,11 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; import axios from "axios"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { matchPredictionLogic } from "@/src/handler/analysis/alliancePredictions/matchPredictionLogic.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { matchPredictionLogic } from "../analysis/alliancePredictions/matchPredictionLogic.js"; import { MatchType } from "@prisma/client"; -import { MatchEnumToAbrivation } from "@/src/handler/manager/managerConstants.js"; +import { MatchEnumToAbrivation } from "./managerConstants.js"; export const pitDisplay = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/registeredteams/addRegisteredTeam.ts b/src/handler/manager/registeredteams/addRegisteredTeam.ts index b13fd120..14b79af1 100644 --- a/src/handler/manager/registeredteams/addRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/addRegisteredTeam.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { sendVerificationEmail } from "@/src/handler/manager/onboarding/resendEmail.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { sendVerificationEmail } from "../onboarding/resendEmail.js"; export const addRegisteredTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/registeredteams/approveRegisteredTeam.ts b/src/handler/manager/registeredteams/approveRegisteredTeam.ts index 6b3270a9..c2854ba8 100644 --- a/src/handler/manager/registeredteams/approveRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/approveRegisteredTeam.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const approveRegisteredTeam = async ( diff --git a/src/handler/manager/registeredteams/checkRegisteredTeam.ts b/src/handler/manager/registeredteams/checkRegisteredTeam.ts index 58dc68ec..e2a27556 100644 --- a/src/handler/manager/registeredteams/checkRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/checkRegisteredTeam.ts @@ -1,7 +1,7 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { Response } from "express"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const checkRegisteredTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/registeredteams/rejectRegisteredTeam.ts b/src/handler/manager/registeredteams/rejectRegisteredTeam.ts index 41eb6c95..0fe7e800 100644 --- a/src/handler/manager/registeredteams/rejectRegisteredTeam.ts +++ b/src/handler/manager/registeredteams/rejectRegisteredTeam.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const rejectRegisteredTeam = async ( diff --git a/src/handler/manager/scouters/addNewScouter.ts b/src/handler/manager/scouters/addNewScouter.ts index 117c28a6..feae4d02 100644 --- a/src/handler/manager/scouters/addNewScouter.ts +++ b/src/handler/manager/scouters/addNewScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const addNewScouter = async ( diff --git a/src/handler/manager/scouters/addScouterDashboard.ts b/src/handler/manager/scouters/addScouterDashboard.ts index b5a2a334..ae5ac496 100644 --- a/src/handler/manager/scouters/addScouterDashboard.ts +++ b/src/handler/manager/scouters/addScouterDashboard.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addScouterDashboard = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/archiveScouter.ts b/src/handler/manager/scouters/archiveScouter.ts index 5b43f6d7..6c7b38b3 100644 --- a/src/handler/manager/scouters/archiveScouter.ts +++ b/src/handler/manager/scouters/archiveScouter.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; export const archiveScouter = async ( diff --git a/src/handler/manager/scouters/changeNameScouter.ts b/src/handler/manager/scouters/changeNameScouter.ts index 6a8a5ffc..b6c0d327 100644 --- a/src/handler/manager/scouters/changeNameScouter.ts +++ b/src/handler/manager/scouters/changeNameScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const changeNameScouter = async ( diff --git a/src/handler/manager/scouters/checkCodeScouter.ts b/src/handler/manager/scouters/checkCodeScouter.ts index 8745de02..b08454c8 100644 --- a/src/handler/manager/scouters/checkCodeScouter.ts +++ b/src/handler/manager/scouters/checkCodeScouter.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const checkCodeScouter = async ( diff --git a/src/handler/manager/scouters/deleteScouter.ts b/src/handler/manager/scouters/deleteScouter.ts index a4afc531..02075f33 100644 --- a/src/handler/manager/scouters/deleteScouter.ts +++ b/src/handler/manager/scouters/deleteScouter.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { invalidateCache } from "@/src/lib/clearCache.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { invalidateCache } from "../../../lib/clearCache.js"; export const deleteScouter = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/emailTeamCode.ts b/src/handler/manager/scouters/emailTeamCode.ts index 362b2726..b7652cda 100644 --- a/src/handler/manager/scouters/emailTeamCode.ts +++ b/src/handler/manager/scouters/emailTeamCode.ts @@ -1,7 +1,7 @@ import { Request, Response } from "express"; import z from "zod"; import { Resend } from "resend"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; export const emailTeamCode = async ( req: Request, diff --git a/src/handler/manager/scouters/getScheduleForScouter.ts b/src/handler/manager/scouters/getScheduleForScouter.ts index dad6f3f7..51d05a07 100644 --- a/src/handler/manager/scouters/getScheduleForScouter.ts +++ b/src/handler/manager/scouters/getScheduleForScouter.ts @@ -1,12 +1,12 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { MatchTypeMap, ScouterScheduleMap, -} from "@/src/handler/manager/managerConstants.js"; +} from "../managerConstants.js"; import SHA256 from "crypto-js/sha256.js"; -import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; +import { addTournamentMatches } from "../addTournamentMatches.js"; export const getScheduleForScouter = async ( req: Request, diff --git a/src/handler/manager/scouters/getScouterTournaments.ts b/src/handler/manager/scouters/getScouterTournaments.ts index 975cf852..626072a9 100644 --- a/src/handler/manager/scouters/getScouterTournaments.ts +++ b/src/handler/manager/scouters/getScouterTournaments.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getScouterTournaments = async ( diff --git a/src/handler/manager/scouters/getScouters.ts b/src/handler/manager/scouters/getScouters.ts index 4abcab50..8ef2a0c8 100644 --- a/src/handler/manager/scouters/getScouters.ts +++ b/src/handler/manager/scouters/getScouters.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import z from "zod"; export const getScouters = async ( diff --git a/src/handler/manager/scouters/getScoutersOnTeam.ts b/src/handler/manager/scouters/getScoutersOnTeam.ts index ed68bde7..d7a393e7 100644 --- a/src/handler/manager/scouters/getScoutersOnTeam.ts +++ b/src/handler/manager/scouters/getScoutersOnTeam.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getScoutersOnTeam = async ( diff --git a/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts b/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts index 57134c1b..03905ca5 100644 --- a/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts +++ b/src/handler/manager/scouters/getTournamentForScouterWithSchedule.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getTournamentForScouterWithSchedule = async ( diff --git a/src/handler/manager/scouters/scoutingLeadProgressPage.ts b/src/handler/manager/scouters/scoutingLeadProgressPage.ts index 6ec80282..5fb7598c 100644 --- a/src/handler/manager/scouters/scoutingLeadProgressPage.ts +++ b/src/handler/manager/scouters/scoutingLeadProgressPage.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const scoutingLeadProgressPage = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/unarchiveScouter.ts b/src/handler/manager/scouters/unarchiveScouter.ts index f9dd0ced..80bf7841 100644 --- a/src/handler/manager/scouters/unarchiveScouter.ts +++ b/src/handler/manager/scouters/unarchiveScouter.ts @@ -1,6 +1,6 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; import { Response } from "express"; diff --git a/src/handler/manager/scouters/updateRoleToScoutingLead.ts b/src/handler/manager/scouters/updateRoleToScoutingLead.ts index d9cb481d..c0327c1c 100644 --- a/src/handler/manager/scouters/updateRoleToScoutingLead.ts +++ b/src/handler/manager/scouters/updateRoleToScoutingLead.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const updateRoleToScoutingLead = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scouters/updateScouterName.ts b/src/handler/manager/scouters/updateScouterName.ts index a5ace904..8cfb95a5 100644 --- a/src/handler/manager/scouters/updateScouterName.ts +++ b/src/handler/manager/scouters/updateScouterName.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const updateScouterName = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts b/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts index 550116bd..635c5996 100644 --- a/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts +++ b/src/handler/manager/scoutershifts/checkScouterShiftMatches.ts @@ -1,5 +1,5 @@ -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; //uuid is when editing a shift so it doesnt check that its over lapping with itself export const checkScouterShiftMatches = async ( diff --git a/src/handler/manager/scoutershifts/deleteScouterShift.ts b/src/handler/manager/scoutershifts/deleteScouterShift.ts index be9bfc84..61447b99 100644 --- a/src/handler/manager/scoutershifts/deleteScouterShift.ts +++ b/src/handler/manager/scoutershifts/deleteScouterShift.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const deleteScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutershifts/updateScouterShift.ts b/src/handler/manager/scoutershifts/updateScouterShift.ts index d9be8259..0552af0d 100644 --- a/src/handler/manager/scoutershifts/updateScouterShift.ts +++ b/src/handler/manager/scoutershifts/updateScouterShift.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { checkScouterShiftMatches } from "@/src/handler/manager/scoutershifts/checkScouterShiftMatches.js"; -import { checkOnlyOneInstanceOfScouter } from "@/src/handler/manager/checkOnlyInstanceOfScouter.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { checkScouterShiftMatches } from "./checkScouterShiftMatches.js"; +import { checkOnlyOneInstanceOfScouter } from "../checkOnlyInstanceOfScouter.js"; export const updateScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutreports/addScoutReport.ts b/src/handler/manager/scoutreports/addScoutReport.ts index ed107d4f..85863594 100644 --- a/src/handler/manager/scoutreports/addScoutReport.ts +++ b/src/handler/manager/scoutreports/addScoutReport.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; import { AlgaePickupMap, @@ -11,8 +11,8 @@ import { UnderShallowCageMap, RobotRoleMap, EventActionMap, -} from "@/src/handler/manager/managerConstants.js"; -import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; +} from "../managerConstants.js"; +import { addTournamentMatches } from "../addTournamentMatches.js"; import { EventAction, Position } from "@prisma/client"; import { AlgaePickup, @@ -23,8 +23,8 @@ import { RobotRole, UnderShallowCage, } from "@prisma/client"; -import { sendWarningToSlack } from "@/src/handler/slack/sendWarningNotification.js"; -import { invalidateCache } from "@/src/lib/clearCache.js"; +import { sendWarningToSlack } from "../../slack/sendWarningNotification.js"; +import { invalidateCache } from "../../../lib/clearCache.js"; export const addScoutReport = async ( req: Request, diff --git a/src/handler/manager/scoutreports/addScoutReportDashboard.ts b/src/handler/manager/scoutreports/addScoutReportDashboard.ts index d1cd22de..66931842 100644 --- a/src/handler/manager/scoutreports/addScoutReportDashboard.ts +++ b/src/handler/manager/scoutreports/addScoutReportDashboard.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { CoralPickupMap, AlgaePickupMap, @@ -12,9 +12,9 @@ import { UnderShallowCageMap, RobotRoleMap, EventActionMap, -} from "@/src/handler/manager/managerConstants.js"; -import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; -import { totalPointsScoutingLead } from "@/src/handler/analysis/scoutingLead/totalPointsScoutingLead.js"; +} from "../managerConstants.js"; +import { addTournamentMatches } from "../addTournamentMatches.js"; +import { totalPointsScoutingLead } from "../../analysis/scoutingLead/totalPointsScoutingLead.js"; import { AlgaePickup, BargeResult, @@ -26,7 +26,7 @@ import { RobotRole, UnderShallowCage, } from "@prisma/client"; -import { invalidateCache } from "@/src/lib/clearCache.js"; +import { invalidateCache } from "../../../lib/clearCache.js"; export const addScoutReportDashboard = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutreports/deleteScoutReport.ts b/src/handler/manager/scoutreports/deleteScoutReport.ts index 01f4fc31..67cd56c5 100644 --- a/src/handler/manager/scoutreports/deleteScoutReport.ts +++ b/src/handler/manager/scoutreports/deleteScoutReport.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { invalidateCache } from "@/src/lib/clearCache.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { invalidateCache } from "../../../lib/clearCache.js"; export const deleteScoutReport = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/scoutreports/getScoutReport.ts b/src/handler/manager/scoutreports/getScoutReport.ts index cc26639a..db4cfe0d 100644 --- a/src/handler/manager/scoutreports/getScoutReport.ts +++ b/src/handler/manager/scoutreports/getScoutReport.ts @@ -1,7 +1,7 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const getScoutReport = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/addTeamSource.ts b/src/handler/manager/settings/addTeamSource.ts index 743653f0..26385a6f 100644 --- a/src/handler/manager/settings/addTeamSource.ts +++ b/src/handler/manager/settings/addTeamSource.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { allTeamNumbers } from "@/src/handler/analysis/analysisConstants.js"; -import { arrayToRule } from "@/src/lib/migrateDataSources.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { allTeamNumbers } from "../../analysis/analysisConstants.js"; +import { arrayToRule } from "../../../lib/migrateDataSources.js"; export const addTeamSource = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/addTournamentSource.ts b/src/handler/manager/settings/addTournamentSource.ts index 2bf5ef8d..5beb9bf8 100644 --- a/src/handler/manager/settings/addTournamentSource.ts +++ b/src/handler/manager/settings/addTournamentSource.ts @@ -1,9 +1,9 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { allTournaments } from "@/src/handler/analysis/analysisConstants.js"; -import { arrayToRule } from "@/src/lib/migrateDataSources.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { allTournaments } from "../../analysis/analysisConstants.js"; +import { arrayToRule } from "../../../lib/migrateDataSources.js"; export const addTournamentSource = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/getTeamSource.ts b/src/handler/manager/settings/getTeamSource.ts index 5174251b..7bd1b603 100644 --- a/src/handler/manager/settings/getTeamSource.ts +++ b/src/handler/manager/settings/getTeamSource.ts @@ -1,11 +1,11 @@ import { Response } from "express"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "@/src/handler/analysis/dataSourceRule.js"; +} from "../../analysis/dataSourceRule.js"; import z from "zod"; -import { allTeamNumbers } from "@/src/handler/analysis/analysisConstants.js"; +import { allTeamNumbers } from "../../analysis/analysisConstants.js"; export const getTeamSource = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/getTournamentSource.ts b/src/handler/manager/settings/getTournamentSource.ts index 5c77ec41..41748439 100644 --- a/src/handler/manager/settings/getTournamentSource.ts +++ b/src/handler/manager/settings/getTournamentSource.ts @@ -1,10 +1,10 @@ import { Response } from "express"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { dataSourceRuleSchema, dataSourceRuleToArray, -} from "@/src/handler/analysis/dataSourceRule.js"; -import { allTournaments } from "@/src/handler/analysis/analysisConstants.js"; +} from "../../analysis/dataSourceRule.js"; +import { allTournaments } from "../../analysis/analysisConstants.js"; import z from "zod"; export const getTournamentSource = async ( diff --git a/src/handler/manager/settings/updateSettings.ts b/src/handler/manager/settings/updateSettings.ts index 5decaf27..d63cd200 100644 --- a/src/handler/manager/settings/updateSettings.ts +++ b/src/handler/manager/settings/updateSettings.ts @@ -1,13 +1,13 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; -import { arrayToRule } from "@/src/lib/migrateDataSources.js"; +import { arrayToRule } from "../../../lib/migrateDataSources.js"; import { allTeamNumbers, allTournaments, -} from "@/src/handler/analysis/analysisConstants.js"; +} from "../../analysis/analysisConstants.js"; export const updateSettings = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/settings/updateTeamEmail.ts b/src/handler/manager/settings/updateTeamEmail.ts index 786b1745..ccfc6e90 100644 --- a/src/handler/manager/settings/updateTeamEmail.ts +++ b/src/handler/manager/settings/updateTeamEmail.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { sendVerificationEmail } from "@/src/handler/manager/onboarding/resendEmail.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; +import { sendVerificationEmail } from "../onboarding/resendEmail.js"; export const updateTeamEmail = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/temp/addNotOnTeam.ts b/src/handler/manager/temp/addNotOnTeam.ts index 001c774e..ea8c6c32 100644 --- a/src/handler/manager/temp/addNotOnTeam.ts +++ b/src/handler/manager/temp/addNotOnTeam.ts @@ -1,6 +1,6 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import prismaClient from "../../../prismaClient.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; export const addNotOnTeam = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/tournament/addScouterShift.ts b/src/handler/manager/tournament/addScouterShift.ts index 09f8eb08..9e59de6b 100644 --- a/src/handler/manager/tournament/addScouterShift.ts +++ b/src/handler/manager/tournament/addScouterShift.ts @@ -1,10 +1,10 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; +import { AuthenticatedRequest } from "../../../lib/middleware/requireAuth.js"; import { UserRole } from "@prisma/client"; -import { checkOnlyOneInstanceOfScouter } from "@/src/handler/manager/checkOnlyInstanceOfScouter.js"; -import { checkScouterShiftMatches } from "@/src/handler/manager/scoutershifts/checkScouterShiftMatches.js"; +import { checkOnlyOneInstanceOfScouter } from "../checkOnlyInstanceOfScouter.js"; +import { checkScouterShiftMatches } from "../scoutershifts/checkScouterShiftMatches.js"; export const addScouterShift = async ( req: AuthenticatedRequest, diff --git a/src/handler/manager/tournament/getTeamRankings.ts b/src/handler/manager/tournament/getTeamRankings.ts index baf523db..fd6ba5f9 100644 --- a/src/handler/manager/tournament/getTeamRankings.ts +++ b/src/handler/manager/tournament/getTeamRankings.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getTeamRankings = async ( diff --git a/src/handler/manager/tournament/getTeamsInTournament.ts b/src/handler/manager/tournament/getTeamsInTournament.ts index 10196605..9555b14a 100644 --- a/src/handler/manager/tournament/getTeamsInTournament.ts +++ b/src/handler/manager/tournament/getTeamsInTournament.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../../prismaClient.js"; import z from "zod"; export const getTeamsInTournament = async ( diff --git a/src/handler/manager/updateNotes.ts b/src/handler/manager/updateNotes.ts index 5e0fa395..d219bea3 100644 --- a/src/handler/manager/updateNotes.ts +++ b/src/handler/manager/updateNotes.ts @@ -1,8 +1,8 @@ import { Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { invalidateCache } from "@/src/lib/clearCache.js"; +import { AuthenticatedRequest } from "../../lib/middleware/requireAuth.js"; +import { invalidateCache } from "../../lib/clearCache.js"; export const updateNotes = async ( req: AuthenticatedRequest, diff --git a/src/handler/slack/addSlackWorkspace.ts b/src/handler/slack/addSlackWorkspace.ts index 0db43015..a17b5603 100644 --- a/src/handler/slack/addSlackWorkspace.ts +++ b/src/handler/slack/addSlackWorkspace.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; export const addSlackWorkspace = async ( diff --git a/src/handler/slack/onboardingRedirect.ts b/src/handler/slack/onboardingRedirect.ts index f1910979..e201f1fb 100644 --- a/src/handler/slack/onboardingRedirect.ts +++ b/src/handler/slack/onboardingRedirect.ts @@ -1,4 +1,4 @@ -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import { Request, Response } from "express"; import z from "zod"; diff --git a/src/handler/slack/processCommands.ts b/src/handler/slack/processCommands.ts index c92ba3ae..12378f90 100644 --- a/src/handler/slack/processCommands.ts +++ b/src/handler/slack/processCommands.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; export const processCommand = async ( diff --git a/src/handler/slack/processEvents.ts b/src/handler/slack/processEvents.ts index 4152f6ef..42c62ac8 100644 --- a/src/handler/slack/processEvents.ts +++ b/src/handler/slack/processEvents.ts @@ -1,5 +1,5 @@ import { Request, Response } from "express"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import z from "zod"; export const processEvent = async ( diff --git a/src/handler/slack/sendWarningNotification.ts b/src/handler/slack/sendWarningNotification.ts index 4d3b6298..a20a4207 100644 --- a/src/handler/slack/sendWarningNotification.ts +++ b/src/handler/slack/sendWarningNotification.ts @@ -1,6 +1,6 @@ // Require the Node Slack SDK package (github.com/slackapi/node-slack-sdk) import { WebClient } from "@slack/web-api"; -import prismaClient from "@/src/prismaClient.js"; +import prismaClient from "../../prismaClient.js"; import { TeamMatchData, WarningType } from "@prisma/client"; // WebClient instantiates a client that can call API methods diff --git a/src/lib/clearCache.ts b/src/lib/clearCache.ts index d1c28865..15ed8030 100644 --- a/src/lib/clearCache.ts +++ b/src/lib/clearCache.ts @@ -1,5 +1,5 @@ -import prismaClient from "@/src/prismaClient.js"; -import { kv } from "@/src/redisClient.js"; +import prismaClient from "../prismaClient.js"; +import { kv } from "../redisClient.js"; export const clearCache = async () => { await prismaClient.cachedAnalysis.deleteMany(); diff --git a/src/lib/deleteOldRequests.ts b/src/lib/deleteOldRequests.ts index 1a8a5cc5..b8bb4bcd 100644 --- a/src/lib/deleteOldRequests.ts +++ b/src/lib/deleteOldRequests.ts @@ -1,4 +1,4 @@ -import prisma from "@/src/prismaClient.js"; +import prisma from "../prismaClient.js"; export default async function deleteOldRequests(): Promise { await prisma.emailVerificationRequest.deleteMany({ diff --git a/src/lib/fetchMatches.ts b/src/lib/fetchMatches.ts index e2727865..c3261625 100644 --- a/src/lib/fetchMatches.ts +++ b/src/lib/fetchMatches.ts @@ -1,5 +1,5 @@ -import prisma from "@/src/prismaClient.js"; -import { addTournamentMatches } from "@/src/handler/manager/addTournamentMatches.js"; +import prisma from "../prismaClient.js"; +import { addTournamentMatches } from "../handler/manager/addTournamentMatches.js"; export default async function fetchMatches(): Promise { // upsert current tournaments in the matches table diff --git a/src/lib/fetchTeams.ts b/src/lib/fetchTeams.ts index 6cd9f6a4..73215457 100644 --- a/src/lib/fetchTeams.ts +++ b/src/lib/fetchTeams.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import prisma from "@/src/prismaClient.js"; +import prisma from "../prismaClient.js"; export default async function fetchTeams(): Promise { // Get teams from TBA and upsert them to the database diff --git a/src/lib/fetchTournaments.ts b/src/lib/fetchTournaments.ts index c848f9d2..b39f0c44 100644 --- a/src/lib/fetchTournaments.ts +++ b/src/lib/fetchTournaments.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import prisma from "@/src/prismaClient.js"; +import prisma from "../prismaClient.js"; export default async function fetchTournaments( initialYear?: number, diff --git a/src/lib/middleware/posthogMiddleware.ts b/src/lib/middleware/posthogMiddleware.ts index ff9171ac..38dcc42e 100644 --- a/src/lib/middleware/posthogMiddleware.ts +++ b/src/lib/middleware/posthogMiddleware.ts @@ -1,7 +1,7 @@ import { Request, Response, NextFunction } from "express"; -import { AuthenticatedRequest } from "@/src/lib/middleware/requireAuth.js"; -import { posthog } from "@/src/posthogClient.js"; -import prisma from "@/src/prismaClient.js"; +import { AuthenticatedRequest } from "./requireAuth.js"; +import { posthog } from "../../posthogClient.js"; +import prisma from "../../prismaClient.js"; import z from "zod"; const posthogReporter = async ( diff --git a/src/lib/middleware/requireAuth.ts b/src/lib/middleware/requireAuth.ts index 364b28dd..22a07730 100644 --- a/src/lib/middleware/requireAuth.ts +++ b/src/lib/middleware/requireAuth.ts @@ -1,4 +1,4 @@ -import prisma from "@/src/prismaClient.js"; +import prisma from "../../prismaClient.js"; import axios from "axios"; import { User } from "@prisma/client"; import { Request as ExpressRequest, Response, NextFunction } from "express"; diff --git a/src/lib/migrateDataSources.ts b/src/lib/migrateDataSources.ts index 6ded55ae..516dfee3 100644 --- a/src/lib/migrateDataSources.ts +++ b/src/lib/migrateDataSources.ts @@ -1,10 +1,10 @@ import { User } from "@prisma/client"; -import { DataSourceRule } from "@/src/handler/analysis/dataSourceRule.js"; +import { DataSourceRule } from "../handler/analysis/dataSourceRule.js"; import { allTeamNumbers, allTournaments, -} from "@/src/handler/analysis/analysisConstants.js"; -import prismaClient from "@/src/prismaClient.js"; +} from "../handler/analysis/analysisConstants.js"; +import prismaClient from "../prismaClient.js"; export const arrayToRule = ( sources: T[], diff --git a/src/lib/scheduleJobs.ts b/src/lib/scheduleJobs.ts index 1acc7d99..4da5b1a1 100644 --- a/src/lib/scheduleJobs.ts +++ b/src/lib/scheduleJobs.ts @@ -1,8 +1,8 @@ -import fetchTournaments from "@/src/lib/fetchTournaments.js"; -import fetchTeams from "@/src/lib/fetchTeams.js"; -import fetchMatches from "@/src/lib/fetchMatches.js"; -import prisma from "@/src/prismaClient.js"; -import deleteOldRequests from "@/src/lib/deleteOldRequests.js"; +import fetchTournaments from "./fetchTournaments.js"; +import fetchTeams from "./fetchTeams.js"; +import fetchMatches from "./fetchMatches.js"; +import prisma from "../prismaClient.js"; +import deleteOldRequests from "./deleteOldRequests.js"; export default async function scheduleJobs(): Promise { const year = 2024; diff --git a/src/posthogClient.ts b/src/posthogClient.ts index 11df5a6a..0f47f4af 100644 --- a/src/posthogClient.ts +++ b/src/posthogClient.ts @@ -1,5 +1,5 @@ import { PostHog } from "posthog-node"; -import { ENVIRONMENT } from "@/src/lib/environment.js"; +import { ENVIRONMENT } from "./lib/environment.js"; export const posthog = new PostHog(process.env.POSTHOG_PROJECT_API_KEY, { disableGeoip: true, diff --git a/src/routes/analysis/analysis.routes.ts b/src/routes/analysis/analysis.routes.ts index 8e366b5a..3905fbac 100644 --- a/src/routes/analysis/analysis.routes.ts +++ b/src/routes/analysis/analysis.routes.ts @@ -1,20 +1,20 @@ -import { alliancePageResponse } from "@/src/handler/analysis/alliancePredictions/alliancePageResponse"; -import { matchPrediction } from "@/src/handler/analysis/alliancePredictions/matchPrediction"; -import { getReportCSV } from "@/src/handler/analysis/csv/getReportCSV"; -import { getTeamCSV } from "@/src/handler/analysis/csv/getTeamCSV"; -import { getTeamMatchCSV } from "@/src/handler/analysis/csv/getTeamMatchCSV"; -import { picklistShell } from "@/src/handler/analysis/picklist/picklistShell"; -import { matchPageSpecificScouter } from "@/src/handler/analysis/specificMatchPage/matchPageSpecificScouter"; -import { scoutReportForMatch } from "@/src/handler/analysis/specificMatchPage/scoutReportForMatch"; -import { timelineForScoutReport } from "@/src/handler/analysis/specificMatchPage/timelineForScoutReport"; -import { breakdownDetails } from "@/src/handler/analysis/teamLookUp/breakdownDetails"; -import { breakdownMetrics } from "@/src/handler/analysis/teamLookUp/breakdownMetrics"; -import { categoryMetrics } from "@/src/handler/analysis/teamLookUp/categoryMetrics"; -import { detailsPage } from "@/src/handler/analysis/teamLookUp/detailsPage"; -import { getNotes } from "@/src/handler/analysis/teamLookUp/getNotes"; -import { multipleFlags } from "@/src/handler/analysis/teamLookUp/multipleFlags"; -import { pitDisplay } from "@/src/handler/manager/pitDisplay"; -import { requireAuth } from "@/src/lib/middleware/requireAuth"; +import { alliancePageResponse } from "../../handler/analysis/alliancePredictions/alliancePageResponse.js"; +import { matchPrediction } from "../../handler/analysis/alliancePredictions/matchPrediction.js"; +import { getReportCSV } from "../../handler/analysis/csv/getReportCSV.js"; +import { getTeamCSV } from "../../handler/analysis/csv/getTeamCSV.js"; +import { getTeamMatchCSV } from "../../handler/analysis/csv/getTeamMatchCSV.js"; +import { picklistShell } from "../../handler/analysis/picklist/picklistShell.js"; +import { matchPageSpecificScouter } from "../../handler/analysis/specificMatchPage/matchPageSpecificScouter.js"; +import { scoutReportForMatch } from "../../handler/analysis/specificMatchPage/scoutReportForMatch.js"; +import { timelineForScoutReport } from "../../handler/analysis/specificMatchPage/timelineForScoutReport.js"; +import { breakdownDetails } from "../../handler/analysis/teamLookUp/breakdownDetails.js"; +import { breakdownMetrics } from "../../handler/analysis/teamLookUp/breakdownMetrics.js"; +import { categoryMetrics } from "../../handler/analysis/teamLookUp/categoryMetrics.js"; +import { detailsPage } from "../../handler/analysis/teamLookUp/detailsPage.js"; +import { getNotes } from "../../handler/analysis/teamLookUp/getNotes.js"; +import { multipleFlags } from "../../handler/analysis/teamLookUp/multipleFlags.js"; +import { pitDisplay } from "../../handler/manager/pitDisplay.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; import { Router } from "express"; const router = Router(); diff --git a/src/routes/index.ts b/src/routes/index.ts index 4aa6c0a1..d913a354 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,9 +1,9 @@ import { Router } from "express"; -import slackRouter from "@/src/routes/slack/slack.routes.js"; -import managerRouter from "@/src/routes/manager/manager.routes.js"; -import analysisRouter from "@/src/routes/analysis/analysis.routes.js"; -import { onboardingRedirect } from "@/src/handler/slack/onboardingRedirect.js"; +import slackRouter from "./slack/slack.routes.js"; +import managerRouter from "./manager/manager.routes.js"; +import analysisRouter from "./analysis/analysis.routes.js"; +import { onboardingRedirect } from "../handler/slack/onboardingRedirect.js"; const router = Router(); diff --git a/src/routes/manager/apikey.routes.ts b/src/routes/manager/apikey.routes.ts index f7dae3fb..e66aacc9 100644 --- a/src/routes/manager/apikey.routes.ts +++ b/src/routes/manager/apikey.routes.ts @@ -1,9 +1,9 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { addApiKey } from "@/src/handler/manager/apikey/addApiKey.js"; -import { getApiKeys } from "@/src/handler/manager/apikey/getApiKeys.js"; -import { renameApiKey } from "@/src/handler/manager/apikey/renameApiKey.js"; -import { revokeApiKey } from "@/src/handler/manager/apikey/revokeApiKey.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { addApiKey } from "../../handler/manager/apikey/addApiKey.js"; +import { getApiKeys } from "../../handler/manager/apikey/getApiKeys.js"; +import { renameApiKey } from "../../handler/manager/apikey/renameApiKey.js"; +import { revokeApiKey } from "../../handler/manager/apikey/revokeApiKey.js"; const router = Router(); diff --git a/src/routes/manager/manager.routes.ts b/src/routes/manager/manager.routes.ts index 3497b97d..2d58640c 100644 --- a/src/routes/manager/manager.routes.ts +++ b/src/routes/manager/manager.routes.ts @@ -1,31 +1,31 @@ import { Router } from "express"; -import onboarding from "@/src/routes/manager/onboarding.routes.js"; -import picklists from "@/src/routes/manager/picklists.routes.js"; -import mutablepicklist from "@/src/routes/manager/mutablepicklists.routes.js"; -import registeredteams from "@/src/routes/manager/registeredteams.routes.js"; -import scouters from "@/src/routes/manager/scouters.routes.js"; -import tournaments from "@/src/routes/manager/tournaments.routes.js"; -import scoutreports from "@/src/routes/manager/scoutreports.routes.js"; -import settings from "@/src/routes/manager/settings.routes.js"; -//import apikey from "@/src/routes/manager/apikey.routes.js"; - -import { getTournaments } from "@/src/handler/manager/getTournaments.js"; -import { getTeams } from "@/src/handler/manager/getTeams.js"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { getMatches } from "@/src/handler/manager/getMatches.js"; -import { updateNotes } from "@/src/handler/manager/updateNotes.js"; -import { getScouters } from "@/src/handler/manager/scouters/getScouters.js"; -import { getProfile } from "@/src/handler/manager/getProfile.js"; -import { getUsers } from "@/src/handler/manager/getUsers.js"; -import { deleteUser } from "@/src/handler/manager/deleteUser.js"; -import { updateRoleToScoutingLead } from "@/src/handler/manager/scouters/updateRoleToScoutingLead.js"; -import { getAnalysts } from "@/src/handler/manager/getAnalysts.js"; -import { addNotOnTeam } from "@/src/handler/manager/temp/addNotOnTeam.js"; -import { getTeamCode } from "@/src/handler/manager/getTeamCode.js"; -import { addScoutReportDashboard } from "@/src/handler/manager/scoutreports/addScoutReportDashboard.js"; -import { getTeamTournamentStatus } from "@/src/handler/manager/getTeamTournamentStatus.js"; -import { getMatchResults } from "@/src/handler/manager/getMatchResults.js"; +import onboarding from "./onboarding.routes.js"; +import picklists from "./picklists.routes.js"; +import mutablepicklist from "./mutablepicklists.routes.js"; +import registeredteams from "./registeredteams.routes.js"; +import scouters from "./scouters.routes.js"; +import tournaments from "./tournaments.routes.js"; +import scoutreports from "./scoutreports.routes.js"; +import settings from "./settings.routes.js"; +//import apikey from "./apikey.routes.js"; + +import { getTournaments } from "../../handler/manager/getTournaments.js"; +import { getTeams } from "../../handler/manager/getTeams.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { getMatches } from "../../handler/manager/getMatches.js"; +import { updateNotes } from "../../handler/manager/updateNotes.js"; +import { getScouters } from "../../handler/manager/scouters/getScouters.js"; +import { getProfile } from "../../handler/manager/getProfile.js"; +import { getUsers } from "../../handler/manager/getUsers.js"; +import { deleteUser } from "../../handler/manager/deleteUser.js"; +import { updateRoleToScoutingLead } from "../../handler/manager/scouters/updateRoleToScoutingLead.js"; +import { getAnalysts } from "../../handler/manager/getAnalysts.js"; +import { addNotOnTeam } from "../../handler/manager/temp/addNotOnTeam.js"; +import { getTeamCode } from "../../handler/manager/getTeamCode.js"; +import { addScoutReportDashboard } from "../../handler/manager/scoutreports/addScoutReportDashboard.js"; +import { getTeamTournamentStatus } from "../../handler/manager/getTeamTournamentStatus.js"; +import { getMatchResults } from "../../handler/manager/getMatchResults.js"; const router = Router(); diff --git a/src/routes/manager/mutablepicklists.routes.ts b/src/routes/manager/mutablepicklists.routes.ts index 1cde7c8c..0e7ac396 100644 --- a/src/routes/manager/mutablepicklists.routes.ts +++ b/src/routes/manager/mutablepicklists.routes.ts @@ -1,10 +1,10 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { addMutablePicklist } from "@/src/handler/manager/mutablepicklists/addMutablePicklist.js"; -import { deleteMutablePicklist } from "@/src/handler/manager/mutablepicklists/deleteMutablePicklist.js"; -import { getMutablePicklists } from "@/src/handler/manager/mutablepicklists/getMutablePicklists.js"; -import { getSingleMutablePicklist } from "@/src/handler/manager/mutablepicklists/getSingleMutablePicklist.js"; -import { updateMutablePicklist } from "@/src/handler/manager/mutablepicklists/updateMutablePicklist.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { addMutablePicklist } from "../../handler/manager/mutablepicklists/addMutablePicklist.js"; +import { deleteMutablePicklist } from "../../handler/manager/mutablepicklists/deleteMutablePicklist.js"; +import { getMutablePicklists } from "../../handler/manager/mutablepicklists/getMutablePicklists.js"; +import { getSingleMutablePicklist } from "../../handler/manager/mutablepicklists/getSingleMutablePicklist.js"; +import { updateMutablePicklist } from "../../handler/manager/mutablepicklists/updateMutablePicklist.js"; /* diff --git a/src/routes/manager/onboarding.routes.ts b/src/routes/manager/onboarding.routes.ts index 39076b1a..1402d106 100644 --- a/src/routes/manager/onboarding.routes.ts +++ b/src/routes/manager/onboarding.routes.ts @@ -1,13 +1,13 @@ import { Router } from "express"; -import requireLovatSignature from "@/src/lib/middleware/requireLovatSignature.js"; -import { approveTeamEmail } from "@/src/handler/manager/onboarding/approveTeamEmail.js"; -import { addUsername } from "@/src/handler/manager/onboarding/addUsername.js"; -import { checkCode } from "@/src/handler/manager/onboarding/checkCode.js"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { addRegisteredTeam } from "@/src/handler/manager/registeredteams/addRegisteredTeam.js"; +import requireLovatSignature from "../../lib/middleware/requireLovatSignature.js"; +import { approveTeamEmail } from "../../handler/manager/onboarding/approveTeamEmail.js"; +import { addUsername } from "../../handler/manager/onboarding/addUsername.js"; +import { checkCode } from "../../handler/manager/onboarding/checkCode.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { addRegisteredTeam } from "../../handler/manager/registeredteams/addRegisteredTeam.js"; import rateLimit from "express-rate-limit"; -import { addWebsite } from "@/src/handler/manager/onboarding/addWebsite.js"; -import { resendEmail } from "@/src/handler/manager/onboarding/resendEmail.js"; +import { addWebsite } from "../../handler/manager/onboarding/addWebsite.js"; +import { resendEmail } from "../../handler/manager/onboarding/resendEmail.js"; /* diff --git a/src/routes/manager/picklists.routes.ts b/src/routes/manager/picklists.routes.ts index dab6dc50..d3943b1f 100644 --- a/src/routes/manager/picklists.routes.ts +++ b/src/routes/manager/picklists.routes.ts @@ -1,10 +1,10 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { addPicklist } from "@/src/handler/manager/picklists/addPicklist.js"; -import { deletePicklist } from "@/src/handler/manager/picklists/deletePicklist.js"; -import { getPicklists } from "@/src/handler/manager/picklists/getPicklists.js"; -import { getSinglePicklist } from "@/src/handler/manager/picklists/getSinglePicklist.js"; -import { updatePicklist } from "@/src/handler/manager/picklists/updatePicklist.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { addPicklist } from "../../handler/manager/picklists/addPicklist.js"; +import { deletePicklist } from "../../handler/manager/picklists/deletePicklist.js"; +import { getPicklists } from "../../handler/manager/picklists/getPicklists.js"; +import { getSinglePicklist } from "../../handler/manager/picklists/getSinglePicklist.js"; +import { updatePicklist } from "../../handler/manager/picklists/updatePicklist.js"; /* diff --git a/src/routes/manager/registeredteams.routes.ts b/src/routes/manager/registeredteams.routes.ts index a58f1341..d6b0e43d 100644 --- a/src/routes/manager/registeredteams.routes.ts +++ b/src/routes/manager/registeredteams.routes.ts @@ -1,9 +1,9 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { rejectRegisteredTeam } from "@/src/handler/manager/registeredteams/rejectRegisteredTeam.js"; -import { approveRegisteredTeam } from "@/src/handler/manager/registeredteams/approveRegisteredTeam.js"; -import { checkRegisteredTeam } from "@/src/handler/manager/registeredteams/checkRegisteredTeam.js"; -import requireLovatSignature from "@/src/lib/middleware/requireLovatSignature.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { rejectRegisteredTeam } from "../../handler/manager/registeredteams/rejectRegisteredTeam.js"; +import { approveRegisteredTeam } from "../../handler/manager/registeredteams/approveRegisteredTeam.js"; +import { checkRegisteredTeam } from "../../handler/manager/registeredteams/checkRegisteredTeam.js"; +import requireLovatSignature from "../../lib/middleware/requireLovatSignature.js"; const router = Router(); diff --git a/src/routes/manager/scouters.routes.ts b/src/routes/manager/scouters.routes.ts index a5b5edb5..13647a9d 100644 --- a/src/routes/manager/scouters.routes.ts +++ b/src/routes/manager/scouters.routes.ts @@ -1,20 +1,20 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { addNewScouter } from "@/src/handler/manager/scouters/addNewScouter.js"; -import { archiveScouter } from "@/src/handler/manager/scouters/archiveScouter.js"; -import { changeNameScouter } from "@/src/handler/manager/scouters/changeNameScouter.js"; -import { checkCodeScouter } from "@/src/handler/manager/scouters/checkCodeScouter.js"; -import { emailTeamCode } from "@/src/handler/manager/scouters/emailTeamCode.js"; -import { getScheduleForScouter } from "@/src/handler/manager/scouters/getScheduleForScouter.js"; -import { getScoutersOnTeam } from "@/src/handler/manager/scouters/getScoutersOnTeam.js"; -import { getScouterTournaments } from "@/src/handler/manager/scouters/getScouterTournaments.js"; -import { getTournamentForScouterWithSchedule } from "@/src/handler/manager/scouters/getTournamentForScouterWithSchedule.js"; -import { unarchiveScouter } from "@/src/handler/manager/scouters/unarchiveScouter.js"; -import { addScouterDashboard } from "@/src/handler/manager/scouters/addScouterDashboard.js"; -import { scouterScoutReports } from "@/src/handler/analysis/scoutingLead/scouterScoutReports.js"; -import { deleteScouter } from "@/src/handler/manager/scouters/deleteScouter.js"; -import { scoutingLeadProgressPage } from "@/src/handler/manager/scouters/scoutingLeadProgressPage.js"; -import { updateScouterName } from "@/src/handler/manager/scouters/updateScouterName.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { addNewScouter } from "../../handler/manager/scouters/addNewScouter.js"; +import { archiveScouter } from "../../handler/manager/scouters/archiveScouter.js"; +import { changeNameScouter } from "../../handler/manager/scouters/changeNameScouter.js"; +import { checkCodeScouter } from "../../handler/manager/scouters/checkCodeScouter.js"; +import { emailTeamCode } from "../../handler/manager/scouters/emailTeamCode.js"; +import { getScheduleForScouter } from "../../handler/manager/scouters/getScheduleForScouter.js"; +import { getScoutersOnTeam } from "../../handler/manager/scouters/getScoutersOnTeam.js"; +import { getScouterTournaments } from "../../handler/manager/scouters/getScouterTournaments.js"; +import { getTournamentForScouterWithSchedule } from "../../handler/manager/scouters/getTournamentForScouterWithSchedule.js"; +import { unarchiveScouter } from "../../handler/manager/scouters/unarchiveScouter.js"; +import { addScouterDashboard } from "../../handler/manager/scouters/addScouterDashboard.js"; +import { scouterScoutReports } from "../../handler/analysis/scoutingLead/scouterScoutReports.js"; +import { deleteScouter } from "../../handler/manager/scouters/deleteScouter.js"; +import { scoutingLeadProgressPage } from "../../handler/manager/scouters/scoutingLeadProgressPage.js"; +import { updateScouterName } from "../../handler/manager/scouters/updateScouterName.js"; const router = Router(); router.post("/emailTeamCode", emailTeamCode); diff --git a/src/routes/manager/scoutershifts.routes.ts b/src/routes/manager/scoutershifts.routes.ts index 24243d64..75f7de09 100644 --- a/src/routes/manager/scoutershifts.routes.ts +++ b/src/routes/manager/scoutershifts.routes.ts @@ -1,7 +1,7 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { updateScouterShift } from "@/src/handler/manager/scoutershifts/updateScouterShift.js"; -import { deleteScouterShift } from "@/src/handler/manager/scoutershifts/deleteScouterShift.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { updateScouterShift } from "../../handler/manager/scoutershifts/updateScouterShift.js"; +import { deleteScouterShift } from "../../handler/manager/scoutershifts/deleteScouterShift.js"; const router = Router(); diff --git a/src/routes/manager/scoutreports.routes.ts b/src/routes/manager/scoutreports.routes.ts index 222ed854..b786d97b 100644 --- a/src/routes/manager/scoutreports.routes.ts +++ b/src/routes/manager/scoutreports.routes.ts @@ -1,8 +1,8 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { addScoutReport } from "@/src/handler/manager/scoutreports/addScoutReport.js"; -import { deleteScoutReport } from "@/src/handler/manager/scoutreports/deleteScoutReport.js"; -import { getScoutReport } from "@/src/handler/manager/scoutreports/getScoutReport.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { addScoutReport } from "../../handler/manager/scoutreports/addScoutReport.js"; +import { deleteScoutReport } from "../../handler/manager/scoutreports/deleteScoutReport.js"; +import { getScoutReport } from "../../handler/manager/scoutreports/getScoutReport.js"; const router = Router(); diff --git a/src/routes/manager/settings.routes.ts b/src/routes/manager/settings.routes.ts index 0b5c9e4a..a084d39b 100644 --- a/src/routes/manager/settings.routes.ts +++ b/src/routes/manager/settings.routes.ts @@ -1,12 +1,12 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { updateSettings } from "@/src/handler/manager/settings/updateSettings.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { updateSettings } from "../../handler/manager/settings/updateSettings.js"; import rateLimit from "express-rate-limit"; -import { updateTeamEmail } from "@/src/handler/manager/settings/updateTeamEmail.js"; -import { getTeamSource } from "@/src/handler/manager/settings/getTeamSource.js"; -import { addTeamSource } from "@/src/handler/manager/settings/addTeamSource.js"; -import { getTournamentSource } from "@/src/handler/manager/settings/getTournamentSource.js"; -import { addTournamentSource } from "@/src/handler/manager/settings/addTournamentSource.js"; +import { updateTeamEmail } from "../../handler/manager/settings/updateTeamEmail.js"; +import { getTeamSource } from "../../handler/manager/settings/getTeamSource.js"; +import { addTeamSource } from "../../handler/manager/settings/addTeamSource.js"; +import { getTournamentSource } from "../../handler/manager/settings/getTournamentSource.js"; +import { addTournamentSource } from "../../handler/manager/settings/addTournamentSource.js"; const updateTeamEmails = rateLimit({ windowMs: 2 * 60 * 1000, diff --git a/src/routes/manager/tournaments.routes.ts b/src/routes/manager/tournaments.routes.ts index fa408240..c747191f 100644 --- a/src/routes/manager/tournaments.routes.ts +++ b/src/routes/manager/tournaments.routes.ts @@ -1,8 +1,8 @@ import { Router } from "express"; -import { requireAuth } from "@/src/lib/middleware/requireAuth.js"; -import { getTeamsInTournament } from "@/src/handler/manager/tournament/getTeamsInTournament.js"; -import { getTeamRankings } from "@/src/handler/manager/tournament/getTeamRankings.js"; -import { addScouterShift } from "@/src/handler/manager/tournament/addScouterShift.js"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { getTeamsInTournament } from "../../handler/manager/tournament/getTeamsInTournament.js"; +import { getTeamRankings } from "../../handler/manager/tournament/getTeamRankings.js"; +import { addScouterShift } from "../../handler/manager/tournament/addScouterShift.js"; /* diff --git a/src/routes/slack/slack.routes.ts b/src/routes/slack/slack.routes.ts index 4d154da7..83fbfdbb 100644 --- a/src/routes/slack/slack.routes.ts +++ b/src/routes/slack/slack.routes.ts @@ -1,10 +1,10 @@ import { Router } from "express"; import express from "express"; -import { requireSlackToken } from "@/src/lib/middleware/requireSlackToken.js"; -import { addSlackWorkspace } from "@/src/handler/slack/addSlackWorkspace.js"; -import { processCommand } from "@/src/handler/slack/processCommands.js"; -import { processEvent } from "@/src/handler/slack/processEvents.js"; +import { requireSlackToken } from "../../lib/middleware/requireSlackToken.js"; +import { addSlackWorkspace } from "../../handler/slack/addSlackWorkspace.js"; +import { processCommand } from "../../handler/slack/processCommands.js"; +import { processEvent } from "../../handler/slack/processEvents.js"; /* diff --git a/src/server.ts b/src/server.ts index e2e0eaaa..39b68a80 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1,7 +1,7 @@ -import { app } from "@/src/app.js"; -import scheduleJobs from "@/src/lib/scheduleJobs.js"; -import { migrateDataSources } from "@/src/lib/migrateDataSources.js"; -import { clearCache } from "@/src/lib/clearCache.js"; +import { app } from "./app.js"; +import scheduleJobs from "./lib/scheduleJobs.js"; +import { migrateDataSources } from "./lib/migrateDataSources.js"; +import { clearCache } from "./lib/clearCache.js"; const port = process.env.PORT || 3000; diff --git a/tsconfig.json b/tsconfig.json index b9bba33c..83fa46ef 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,12 +5,7 @@ "target": "esnext", "allowImportingTsExtensions": false, "esModuleInterop": true, - "outDir": "dist", - "baseUrl": ".", - "paths": { - "@/src/*": ["src/*"], - "@/src": ["src"] - } + "outDir": "dist" }, "include": ["src/**/*"] From b0719697aa4fe26e3c3e5e32e6468995875574e5 Mon Sep 17 00:00:00 2001 From: jackattack-4 <142643773+jackattack-4@users.noreply.github.com> Date: Sun, 4 Jan 2026 08:53:59 -0800 Subject: [PATCH 08/14] Update index.ts --- src/routes/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/index.ts b/src/routes/index.ts index d913a354..6287f132 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -11,6 +11,6 @@ router.use("/slack", slackRouter); router.use("/manager", managerRouter); router.use("/analysis", analysisRouter); -router.get("/invite", onboardingRedirect); +router.get("/slack-invite", onboardingRedirect); export default router; From d05f9fb8e750c5db6ac847601ddb0129188aba26 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:38:49 -0800 Subject: [PATCH 09/14] distributed analysis routes --- src/routes/analysis/analysis.routes.ts | 20 ++++++-------------- src/routes/analysis/csv.routes.ts | 15 +++++++++++++++ src/routes/analysis/scoutreport.routes.ts | 15 +++++++++++++++ src/routes/analysis/teamLookup.routes.ts | 21 +++++++++++++++++++++ 4 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 src/routes/analysis/csv.routes.ts create mode 100644 src/routes/analysis/scoutreport.routes.ts create mode 100644 src/routes/analysis/teamLookup.routes.ts diff --git a/src/routes/analysis/analysis.routes.ts b/src/routes/analysis/analysis.routes.ts index 3905fbac..c676b252 100644 --- a/src/routes/analysis/analysis.routes.ts +++ b/src/routes/analysis/analysis.routes.ts @@ -16,6 +16,9 @@ import { multipleFlags } from "../../handler/analysis/teamLookUp/multipleFlags.j import { pitDisplay } from "../../handler/manager/pitDisplay.js"; import { requireAuth } from "../../lib/middleware/requireAuth.js"; import { Router } from "express"; +import teamLookup from "./teamLookup.routes.js" +import csv from "./csv.routes.js" +import scoutReport from "./scoutreport.routes.js" const router = Router(); @@ -23,24 +26,13 @@ router.get("/pitdisplay", pitDisplay); router.use(requireAuth); -router.get("/metric/:metric/team/:team", detailsPage); //tested, same format -router.get("/category/team/:team", categoryMetrics); //tested, same format -router.get("/breakdown/team/:team", breakdownMetrics); //tested, same format -router.get("/breakdown/team/:team/:breakdown", breakdownDetails); -router.get("/notes/team/:team", getNotes); //tested -router.get("/flag/team/:team", multipleFlags); //tested +router.use(teamLookup); +router.use(csv); +router.use(scoutReport); router.get("/alliance", alliancePageResponse); router.get("/matchprediction", matchPrediction); router.get("/picklist", picklistShell); -router.get("/metrics/scoutreport/:uuid", matchPageSpecificScouter); -router.get("/scoutreports/match/:match", scoutReportForMatch); -router.get("/timeline/scoutreport/:uuid", timelineForScoutReport); - -router.get("/csvplain", getTeamCSV); -router.get("/matchcsv", getTeamMatchCSV); -router.get("/reportcsv", getReportCSV); - export default router; diff --git a/src/routes/analysis/csv.routes.ts b/src/routes/analysis/csv.routes.ts new file mode 100644 index 00000000..f9f7b405 --- /dev/null +++ b/src/routes/analysis/csv.routes.ts @@ -0,0 +1,15 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { getReportCSV } from "../../handler/analysis/csv/getReportCSV.js"; +import { getTeamCSV } from "../../handler/analysis/csv/getTeamCSV.js"; +import { getTeamMatchCSV } from "../../handler/analysis/csv/getTeamMatchCSV.js"; + +const router = Router(); + +router.use(requireAuth); + +router.get("/csvplain", getTeamCSV); +router.get("/matchcsv", getTeamMatchCSV); +router.get("/reportcsv", getReportCSV); + +export default router; \ No newline at end of file diff --git a/src/routes/analysis/scoutreport.routes.ts b/src/routes/analysis/scoutreport.routes.ts new file mode 100644 index 00000000..3212a75a --- /dev/null +++ b/src/routes/analysis/scoutreport.routes.ts @@ -0,0 +1,15 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { matchPageSpecificScouter } from "../../handler/analysis/specificMatchPage/matchPageSpecificScouter"; +import { scoutReportForMatch } from "../../handler/analysis/specificMatchPage/scoutReportForMatch"; +import { timelineForScoutReport } from "../../handler/analysis/specificMatchPage/timelineForScoutReport"; + +const router = Router(); + +router.use(requireAuth); + +router.get("/metrics/scoutreport/:uuid", matchPageSpecificScouter); +router.get("/scoutreports/match/:match", scoutReportForMatch); +router.get("/timeline/scoutreport/:uuid", timelineForScoutReport); + +export default router; \ No newline at end of file diff --git a/src/routes/analysis/teamLookup.routes.ts b/src/routes/analysis/teamLookup.routes.ts new file mode 100644 index 00000000..ab7b5675 --- /dev/null +++ b/src/routes/analysis/teamLookup.routes.ts @@ -0,0 +1,21 @@ +import { Router } from "express"; +import { requireAuth } from "../../lib/middleware/requireAuth.js"; +import { breakdownDetails } from "../../handler/analysis/teamLookUp/breakdownDetails.js"; +import { breakdownMetrics } from "../../handler/analysis/teamLookUp/breakdownMetrics.js"; +import { categoryMetrics } from "../../handler/analysis/teamLookUp/categoryMetrics.js"; +import { detailsPage } from "../../handler/analysis/teamLookUp/detailsPage.js"; +import { getNotes } from "../../handler/analysis/teamLookUp/getNotes.js"; +import { multipleFlags } from "../../handler/analysis/teamLookUp/multipleFlags.js"; + +const router = Router(); + +router.use(requireAuth); + +router.get("/metric/:metric/team/:team", detailsPage); +router.get("/category/team/:team", categoryMetrics); +router.get("/breakdown/team/:team", breakdownMetrics); +router.get("/breakdown/team/:team/:breakdown", breakdownDetails); +router.get("/notes/team/:team", getNotes); +router.get("/flag/team/:team", multipleFlags); + +export default router; From a2e4e92583d2bf7f464641ff4407c0fd4084f88b Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sun, 4 Jan 2026 16:41:46 -0800 Subject: [PATCH 10/14] remove unused imports --- src/routes/analysis/analysis.routes.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/routes/analysis/analysis.routes.ts b/src/routes/analysis/analysis.routes.ts index c676b252..0d5f20ff 100644 --- a/src/routes/analysis/analysis.routes.ts +++ b/src/routes/analysis/analysis.routes.ts @@ -1,18 +1,6 @@ import { alliancePageResponse } from "../../handler/analysis/alliancePredictions/alliancePageResponse.js"; import { matchPrediction } from "../../handler/analysis/alliancePredictions/matchPrediction.js"; -import { getReportCSV } from "../../handler/analysis/csv/getReportCSV.js"; -import { getTeamCSV } from "../../handler/analysis/csv/getTeamCSV.js"; -import { getTeamMatchCSV } from "../../handler/analysis/csv/getTeamMatchCSV.js"; import { picklistShell } from "../../handler/analysis/picklist/picklistShell.js"; -import { matchPageSpecificScouter } from "../../handler/analysis/specificMatchPage/matchPageSpecificScouter.js"; -import { scoutReportForMatch } from "../../handler/analysis/specificMatchPage/scoutReportForMatch.js"; -import { timelineForScoutReport } from "../../handler/analysis/specificMatchPage/timelineForScoutReport.js"; -import { breakdownDetails } from "../../handler/analysis/teamLookUp/breakdownDetails.js"; -import { breakdownMetrics } from "../../handler/analysis/teamLookUp/breakdownMetrics.js"; -import { categoryMetrics } from "../../handler/analysis/teamLookUp/categoryMetrics.js"; -import { detailsPage } from "../../handler/analysis/teamLookUp/detailsPage.js"; -import { getNotes } from "../../handler/analysis/teamLookUp/getNotes.js"; -import { multipleFlags } from "../../handler/analysis/teamLookUp/multipleFlags.js"; import { pitDisplay } from "../../handler/manager/pitDisplay.js"; import { requireAuth } from "../../lib/middleware/requireAuth.js"; import { Router } from "express"; From 9650745f7bbc154dfef2275dc1a2f24b787c29ed Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:06:33 -0800 Subject: [PATCH 11/14] move requireAuth in router --- src/routes/manager/scoutreports.routes.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/routes/manager/scoutreports.routes.ts b/src/routes/manager/scoutreports.routes.ts index b786d97b..f8058228 100644 --- a/src/routes/manager/scoutreports.routes.ts +++ b/src/routes/manager/scoutreports.routes.ts @@ -10,8 +10,6 @@ router.post("/", addScoutReport); router.get("/:uuid", getScoutReport); -router.use(requireAuth); - -router.delete("/:uuid", deleteScoutReport); +router.delete("/:uuid", requireAuth, deleteScoutReport); export default router; From c92fafe6d92a654ec336521ba5aa49294acdbb83 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sun, 4 Jan 2026 18:26:05 -0800 Subject: [PATCH 12/14] fix requireAuth problem --- src/lib/middleware/requireAuth.ts | 1 + src/routes/manager/manager.routes.ts | 34 ++++++++++++--------------- src/routes/manager/scouters.routes.ts | 16 ++++++------- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/lib/middleware/requireAuth.ts b/src/lib/middleware/requireAuth.ts index 22a07730..202443af 100644 --- a/src/lib/middleware/requireAuth.ts +++ b/src/lib/middleware/requireAuth.ts @@ -19,6 +19,7 @@ export const requireAuth = async ( res: Response, next: NextFunction, ): Promise => { + console.log("Authenticating request"); try { console.log(`${req.method} ${req.path}`); // Validate JWT diff --git a/src/routes/manager/manager.routes.ts b/src/routes/manager/manager.routes.ts index 2d58640c..c702c86f 100644 --- a/src/routes/manager/manager.routes.ts +++ b/src/routes/manager/manager.routes.ts @@ -39,35 +39,31 @@ router.use("/scoutreports", scoutreports); router.use("/settings", settings); //router.use("/apikey", apikey); -router.use(requireAuth); +router.get("/teams", requireAuth, getTeams); +router.get("/tournaments", requireAuth, getTournaments); -router.get("/teams", getTeams); -router.get("/tournaments", getTournaments); +router.get("/matches/:tournament", requireAuth, getMatches); -router.get("/matches/:tournament", getMatches); +router.put("/notes/:uuid", requireAuth, updateNotes); +router.get("/scoutershift/scouters", requireAuth, getScouters); -router.put("/notes/:uuid", updateNotes); +router.get("/profile", requireAuth, getProfile); -router.get("/scoutershift/scouters", getScouters); +router.get("/users", requireAuth, getUsers); -router.get("/profile", getProfile); +router.delete("/user", requireAuth, deleteUser); -router.get("/users", getUsers); +router.post("/upgradeuser", requireAuth, updateRoleToScoutingLead); +router.get("/analysts", requireAuth, getAnalysts); -router.delete("/user", deleteUser); +router.post("/noteam", requireAuth, addNotOnTeam); -router.post("/upgradeuser", updateRoleToScoutingLead); +router.get("/code", requireAuth, getTeamCode); -router.get("/analysts", getAnalysts); +router.post("/dashboard/scoutreport", requireAuth, addScoutReportDashboard); -router.post("/noteam", addNotOnTeam); +router.get("/v1/manager/team-tournament-status", requireAuth, getTeamTournamentStatus); -router.get("/code", getTeamCode); - -router.post("/dashboard/scoutreport", addScoutReportDashboard); - -router.get("/v1/manager/team-tournament-status", getTeamTournamentStatus); - -router.get("/v1/manager/match-results-page", getMatchResults); +router.get("/v1/manager/match-results-page", requireAuth, getMatchResults); export default router; diff --git a/src/routes/manager/scouters.routes.ts b/src/routes/manager/scouters.routes.ts index 13647a9d..cb56337f 100644 --- a/src/routes/manager/scouters.routes.ts +++ b/src/routes/manager/scouters.routes.ts @@ -27,15 +27,13 @@ router.get("/scouters/:uuid/tournaments", getScouterTournaments); router.get("/scouterschedules/:tournament", getScheduleForScouter); router.get("/scouter/tournaments", getTournamentForScouterWithSchedule); -router.use(requireAuth); +router.post("/unarchive/uuid/:uuid", requireAuth, unarchiveScouter); +router.post("/archive/uuid/:uuid", requireAuth, archiveScouter); -router.post("/unarchive/uuid/:uuid", unarchiveScouter); -router.post("/archive/uuid/:uuid", archiveScouter); - -router.put("/scoutername", updateScouterName); -router.delete("/scouterdashboard", deleteScouter); -router.get("/scouterspage", scoutingLeadProgressPage); -router.post("/scouterdashboard", addScouterDashboard); -router.get("/scouterreports", scouterScoutReports); +router.put("/scoutername", requireAuth, updateScouterName); +router.delete("/scouterdashboard", requireAuth, deleteScouter); +router.get("/scouterspage", requireAuth, scoutingLeadProgressPage); +router.post("/scouterdashboard", requireAuth, addScouterDashboard); +router.get("/scouterreports", requireAuth, scouterScoutReports); export default router; From 583b74b5f4f875df0f267c2328e7b886a02b7168 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Sun, 4 Jan 2026 19:09:41 -0800 Subject: [PATCH 13/14] fix bug in slack notifications --- src/handler/slack/sendWarningNotification.ts | 25 ++++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/handler/slack/sendWarningNotification.ts b/src/handler/slack/sendWarningNotification.ts index a20a4207..e1317be8 100644 --- a/src/handler/slack/sendWarningNotification.ts +++ b/src/handler/slack/sendWarningNotification.ts @@ -38,6 +38,14 @@ export async function sendWarningToSlack( ? report.scouter.name.trim() : `A Scouter from team ${report.scouter.sourceTeamNumber}`; + // Locate the upcoming match number for the workspace's team; fall back to a generic label if missing. + const partnerMatch = upcomingAlliancePartners.find( + ([partnerTeam]) => partnerTeam === channel.workspace.owner, + ); + const partnerMatchLabel = partnerMatch?.[1] + ? `Q${partnerMatch[1]}` + : "an upcoming match"; + let result; const thread = await prismaClient.slackNotificationThread.findFirst({ @@ -55,13 +63,13 @@ export async function sendWarningToSlack( if (warning == WarningType.AUTO_LEAVE) { result = await client.chat.postMessage({ channel: channel.channelId, - text: `Heads up! *${scouterName}* reported your alliance partner in *Q${upcomingAlliancePartners[upcomingAlliancePartners.map((x) => x[0]).findIndex((num) => num === matchNumber)][1]}*, team *${teamNumber}*, didn't leave during auto in *Q${matchNumber}*`, + text: `Heads up! *${scouterName}* reported your alliance partner in *${partnerMatchLabel}*, team *${teamNumber}*, didn't leave during auto in *Q${matchNumber}*`, }); } else if (warning == WarningType.BREAK) { result = await client.chat.postMessage({ channel: channel.channelId, // robotBrokeDesc needs to be filtered because old versions of Collection will send it as null, or it might be undefined - text: `Heads up! *${scouterName}* reported your alliance partner in *Q${upcomingAlliancePartners[upcomingAlliancePartners.map((x) => x[0]).findIndex((num) => num === matchNumber)][1]}*, team *${teamNumber}*, broke in *Q${matchNumber}*.\n${ + text: `Heads up! *${scouterName}* reported your alliance partner in *${partnerMatchLabel}*, team *${teamNumber}*, broke in *Q${matchNumber}*.\n${ report.robotBrokeDescription && report.robotBrokeDescription.trim() !== "" ? `> ${report.robotBrokeDescription}` @@ -139,6 +147,8 @@ async function getUpcomingAlliancePartners( tournamentKey, ); + const allianceByMatch = new Map(upcomingAlliances); + const upcomingTeams: TeamMatchData[] = await prismaClient.teamMatchData.findMany({ where: { @@ -155,11 +165,12 @@ async function getUpcomingAlliancePartners( const out: number[][] = []; for (const data of upcomingTeams) { - if ( - upcomingAlliances[ - upcomingAlliances.findIndex((x) => x[0] === data.matchNumber) - ][1] - ) { + const allianceIsRed = allianceByMatch.get(data.matchNumber); + if (allianceIsRed === undefined) { + continue; // skip unexpected data without alliance info + } + + if (allianceIsRed) { if (parseInt(data.key.at(-1)) >= 3) { out.push([data.teamNumber, data.matchNumber]); } From 395ae872dc3a17e1eb5a8683230c4e40596103e2 Mon Sep 17 00:00:00 2001 From: JackAttack-365 <142643773+jackattack-4@users.noreply.github.com> Date: Thu, 8 Jan 2026 16:08:13 -0800 Subject: [PATCH 14/14] implement suggestions --- src/routes/manager/scoutreports.routes.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/manager/scoutreports.routes.ts b/src/routes/manager/scoutreports.routes.ts index b786d97b..04a30867 100644 --- a/src/routes/manager/scoutreports.routes.ts +++ b/src/routes/manager/scoutreports.routes.ts @@ -8,10 +8,10 @@ const router = Router(); router.post("/", addScoutReport); -router.get("/:uuid", getScoutReport); - router.use(requireAuth); +router.get("/:uuid", getScoutReport); + router.delete("/:uuid", deleteScoutReport); export default router;