Added example endpoint for stats auth
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
import { Get, JsonController } from 'routing-controllers';
 | 
			
		||||
import { Get, JsonController, UseBefore } from 'routing-controllers';
 | 
			
		||||
import { OpenAPI } from 'routing-controllers-openapi';
 | 
			
		||||
import { getConnection } from 'typeorm';
 | 
			
		||||
import StatsAuth from '../middlewares/StatsAuth';
 | 
			
		||||
import { Donation } from '../models/entities/Donation';
 | 
			
		||||
import { Runner } from '../models/entities/Runner';
 | 
			
		||||
import { RunnerOrganisation } from '../models/entities/RunnerOrganisation';
 | 
			
		||||
@@ -31,4 +32,26 @@ export class StatsController {
 | 
			
		||||
            "total_donation_amount": donations.reduce((sum, current) => sum + current.amount, 0),
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Get("/authorized")
 | 
			
		||||
    @UseBefore(StatsAuth)
 | 
			
		||||
    @OpenAPI({ description: "A demo endpoint for authorized stats." })
 | 
			
		||||
    async getAuthorized() {
 | 
			
		||||
        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),
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user