From 555e37eaf71456d4b46ec8343622ccd1d5ea2f27 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 29 Dec 2020 21:48:21 +0100 Subject: [PATCH] Added authed stats routes ref #56 --- src/controllers/StatsController.ts | 56 +++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/src/controllers/StatsController.ts b/src/controllers/StatsController.ts index f6d9a15..9d147c0 100644 --- a/src/controllers/StatsController.ts +++ b/src/controllers/StatsController.ts @@ -33,25 +33,47 @@ export class StatsController { }; } - @Get("/authorized") + @Get("/runners/distance") @UseBefore(StatsAuth) - @OpenAPI({ description: "A demo endpoint for authorized stats.", security: [{ "StatsApiToken": [] }] }) - async getAuthorized() { + @OpenAPI({ description: "Returns the top ten runners by distance.", security: [{ "StatsApiToken": [] }] }) + async getTopRunnersByDistance() { let connection = getConnection(); let runners = await connection.getRepository(Runner).find({ relations: ["scans"] }); - let teams = await connection.getRepository(RunnerTeam).find(); - let orgs = await connection.getRepository(RunnerOrganisation).find(); - let users = await connection.getRepository(User).find(); - let scans = await connection.getRepository(Scan).find(); - let donations = await connection.getRepository(Donation).find({ relations: ["runner", "runner.scans"] }); - return { - "total_runners": runners.length, - "total_teams": teams.length, - "total_orgs": orgs.length, - "total_users": users.length, - "total_scans": scans.filter(scan => { scan.valid === true }).length, - "total_distance": runners.reduce((sum, current) => sum + current.distance, 0), - "total_donation_amount": donations.reduce((sum, current) => sum + current.amount, 0), - }; + return runners.sort((runner1, runner2) => runner1.distance - runner2.distance).slice(0, 9); + } + + @Get("/runners/donations") + @UseBefore(StatsAuth) + @OpenAPI({ description: "Returns the top ten runners by donations.", security: [{ "StatsApiToken": [] }] }) + async getTopRunnersByDonations() { + throw new Error("Not implemented yet.") + } + + @Get("/teams/distance") + @UseBefore(StatsAuth) + @OpenAPI({ description: "Returns the top ten teams by distance.", security: [{ "StatsApiToken": [] }] }) + async getTopTeamsByDistance() { + throw new Error("Not implemented yet.") + } + + @Get("/teams/donations") + @UseBefore(StatsAuth) + @OpenAPI({ description: "Returns the top ten teams by donations.", security: [{ "StatsApiToken": [] }] }) + async getTopTeamsByDonations() { + throw new Error("Not implemented yet.") + } + + @Get("/organisations/distance") + @UseBefore(StatsAuth) + @OpenAPI({ description: "Returns the top ten organisations by distance.", security: [{ "StatsApiToken": [] }] }) + async getTopOrgsByDistance() { + throw new Error("Not implemented yet.") + } + + @Get("/organisations/donations") + @UseBefore(StatsAuth) + @OpenAPI({ description: "Returns the top ten organisations by donations.", security: [{ "StatsApiToken": [] }] }) + async getTopOrgsByDonations() { + throw new Error("Not implemented yet.") } } \ No newline at end of file