From 8f0f795a709db216396998b68b8bbd64ff4d44ff Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 6 Apr 2021 09:34:12 +0200 Subject: [PATCH] Tried workaround for no availdable stats ref #190 --- src/controllers/StatsController.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/controllers/StatsController.ts b/src/controllers/StatsController.ts index 6e9c108..ab51f95 100644 --- a/src/controllers/StatsController.ts +++ b/src/controllers/StatsController.ts @@ -37,6 +37,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten runners by distance.", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopRunnersByDistance() { let runners = await getConnection().getRepository(Runner).find({ relations: ['scans', 'group', 'distanceDonations', 'scans.track'] }); + if (!runners || runners.length == 0) { + return []; + } let topRunners = runners.sort((runner1, runner2) => runner2.distance - runner1.distance).slice(0, 10); let responseRunners: ResponseStatsRunner[] = new Array(); topRunners.forEach(runner => { @@ -51,6 +54,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten runners by donations.", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopRunnersByDonations() { let runners = await getConnection().getRepository(Runner).find({ relations: ['scans', 'group', 'distanceDonations', 'scans.track'] }); + if (!runners || runners.length == 0) { + return []; + } let topRunners = runners.sort((runner1, runner2) => runner2.distanceDonationAmount - runner1.distanceDonationAmount).slice(0, 10); let responseRunners: ResponseStatsRunner[] = new Array(); topRunners.forEach(runner => { @@ -65,6 +71,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten runners by fastest laptime on your selected track (track by id).", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopRunnersByLaptime(@QueryParam("track") track: number) { let scans = await getConnection().getRepository(TrackScan).find({ relations: ['track', 'runner', 'runner.group', 'runner.scans', 'runner.scans.track', 'runner.distanceDonations'] }); + if (!scans || scans.length == 0) { + return []; + } scans = scans.filter((s) => { return s.track.id == track && s.valid == true && s.lapTime != 0 }).sort((scan1, scan2) => scan1.lapTime - scan2.lapTime); let topScans = new Array(); @@ -98,6 +107,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten teams by distance.", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopTeamsByDistance() { let teams = await getConnection().getRepository(RunnerTeam).find({ relations: ['runners', 'runners.scans', 'runners.distanceDonations', 'runners.scans.track'] }); + if (!teams || teams.length == 0) { + return []; + } let topTeams = teams.sort((team1, team2) => team2.distance - team1.distance).slice(0, 10); let responseTeams: ResponseStatsTeam[] = new Array(); topTeams.forEach(team => { @@ -112,6 +124,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten teams by donations.", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopTeamsByDonations() { let teams = await getConnection().getRepository(RunnerTeam).find({ relations: ['runners', 'runners.scans', 'runners.distanceDonations', 'runners.scans.track'] }); + if (!teams || teams.length == 0) { + return []; + } let topTeams = teams.sort((team1, team2) => team2.distanceDonationAmount - team1.distanceDonationAmount).slice(0, 10); let responseTeams: ResponseStatsTeam[] = new Array(); topTeams.forEach(team => { @@ -126,6 +141,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten organizations by distance.", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopOrgsByDistance() { let orgs = await getConnection().getRepository(RunnerOrganization).find({ relations: ['runners', 'runners.scans', 'runners.distanceDonations', 'runners.scans.track', 'teams', 'teams.runners', 'teams.runners.scans', 'teams.runners.distanceDonations', 'teams.runners.scans.track'] }); + if (!orgs || orgs.length == 0) { + return []; + } let topOrgs = orgs.sort((org1, org2) => org2.distance - org1.distance).slice(0, 10); let responseOrgs: ResponseStatsOrgnisation[] = new Array(); topOrgs.forEach(org => { @@ -140,6 +158,9 @@ export class StatsController { @OpenAPI({ description: "Returns the top ten organizations by donations.", security: [{ "StatsApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) async getTopOrgsByDonations() { let orgs = await getConnection().getRepository(RunnerOrganization).find({ relations: ['runners', 'runners.scans', 'runners.distanceDonations', 'runners.scans.track', 'teams', 'teams.runners', 'teams.runners.scans', 'teams.runners.distanceDonations', 'teams.runners.scans.track'] }); + if (!orgs || orgs.length == 0) { + return []; + } let topOrgs = orgs.sort((org1, org2) => org2.distanceDonationAmount - org1.distanceDonationAmount).slice(0, 10); let responseOrgs: ResponseStatsOrgnisation[] = new Array(); topOrgs.forEach(org => {