From 5c5000a218b47815e6846ac8b857dcd1995bfa6f Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Fri, 28 Mar 2025 21:49:19 +0100 Subject: [PATCH] feat: add runnersViaSelfservice to statsControllerGet --- src/controllers/StatsController.ts | 3 ++- src/models/responses/ResponseStats.ts | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/controllers/StatsController.ts b/src/controllers/StatsController.ts index c5791b1..7994356 100644 --- a/src/controllers/StatsController.ts +++ b/src/controllers/StatsController.ts @@ -23,6 +23,7 @@ export class StatsController { @OpenAPI({ description: "A very basic stats endpoint providing basic counters for a dashboard or simmilar" }) async get() { const connection = getConnection(); + const runnersViaSelfservice = await connection.getRepository(Runner).count({ where: { created_via: "selfservice" } }); const runners = await connection.getRepository(Runner).count(); const teams = await connection.getRepository(RunnerTeam).count(); const orgs = await connection.getRepository(RunnerOrganization).count(); @@ -41,7 +42,7 @@ export class StatsController { let donations = await connection.getRepository(Donation).find({ relations: ['runner', 'runner.scans', 'runner.scans.track'] }); const donors = await connection.getRepository(Donor).count(); - return new ResponseStats(runners, teams, orgs, users, scans, donations, distace, donors) + return new ResponseStats(runnersViaSelfservice, runners, teams, orgs, users, scans, donations, distace, donors) } @Get("/runners/distance") diff --git a/src/models/responses/ResponseStats.ts b/src/models/responses/ResponseStats.ts index 3aa2ace..2cafd46 100644 --- a/src/models/responses/ResponseStats.ts +++ b/src/models/responses/ResponseStats.ts @@ -16,6 +16,12 @@ export class ResponseStats implements IResponse { */ responseType: ResponseObjectType = ResponseObjectType.STATS; + /** + * The amount of runners registered via selfservice. + */ + @IsInt() + runnersViaSelfservice: number; + /** * The amount of runners registered in the system. */ @@ -84,14 +90,16 @@ export class ResponseStats implements IResponse { /** * Creates a new stats response containing some basic statistics for a dashboard or public display. - * @param runners Array containing all runners - the following relations have to be resolved: scans, scans.track - * @param teams Array containing all teams - no relations have to be resolved. - * @param orgs Array containing all orgs - no relations have to be resolved. - * @param users Array containing all users - no relations have to be resolved. - * @param scans Array containing all scans - no relations have to be resolved. + * @param runnersViaSelfservice number of runners registered via selfservice + * @param runners number of runners + * @param teams number of teams - no relations have to be resolved. + * @param orgs number of orgs - no relations have to be resolved. + * @param users number of users - no relations have to be resolved. + * @param scans number of scans - no relations have to be resolved. * @param donations Array containing all donations - the following relations have to be resolved: runner, runner.scans, runner.scans.track */ - public constructor(runners: number, teams: number, orgs: number, users: number, scans: number, donations: Donation[], distance: number, donors: number) { + public constructor(runnersViaSelfservice: number, runners: number, teams: number, orgs: number, users: number, scans: number, donations: Donation[], distance: number, donors: number) { + this.runnersViaSelfservice = runnersViaSelfservice; this.total_runners = runners; this.total_teams = teams; this.total_orgs = orgs;