feat: add runnersViaSelfservice to statsControllerGet

This commit is contained in:
Philipp Dormann 2025-03-28 21:49:19 +01:00
parent d559d04031
commit 5c5000a218
Signed by: philipp
GPG Key ID: 3BB9ADD52DCA4314
2 changed files with 16 additions and 7 deletions

View File

@ -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")

View File

@ -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;