attempt to speed stuff up
This commit is contained in:
@@ -50,12 +50,9 @@ struct StatsController: RouteCollection {
|
|||||||
return Match.query(on: req.db).count().flatMap { (totalMatches) -> EventLoopFuture<MatchHistory> in
|
return Match.query(on: req.db).count().flatMap { (totalMatches) -> EventLoopFuture<MatchHistory> in
|
||||||
return Match.query(on: req.db).sort(\.$date, .descending).limit(20).all().map { (matches) -> (MatchHistory) in
|
return Match.query(on: req.db).sort(\.$date, .descending).limit(20).all().map { (matches) -> (MatchHistory) in
|
||||||
return MatchHistory(total:totalMatches, matches: matches, hasMorePages: totalMatches > 20)
|
return MatchHistory(total:totalMatches, matches: matches, hasMorePages: totalMatches > 20)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -550,20 +547,53 @@ struct StatsController: RouteCollection {
|
|||||||
|
|
||||||
func overall(req: Request) throws -> EventLoopFuture<OverallStats> {
|
func overall(req: Request) throws -> EventLoopFuture<OverallStats> {
|
||||||
|
|
||||||
|
|
||||||
return Match.query(on: req.db).all().map { (matches) -> OverallStats in
|
return Match.query(on: req.db).all().map { (matches) -> OverallStats in
|
||||||
let overallStats = self.getStatsWithMostRecentDailyRecord(matches: matches)
|
|
||||||
// print ( Date().timeIntervalSince(startTime))
|
|
||||||
|
|
||||||
let mwStats = self.getStatsWithMostRecentDailyRecord(matches: matches.filter({ (match) -> Bool in
|
let queue = DispatchQueue(label: "com.sledsoft.cod-tracker.queue", attributes: .concurrent)
|
||||||
return match.codGame == "mw" && self.shouldCountMatch(match: match )
|
let group = DispatchGroup()
|
||||||
}))
|
|
||||||
|
|
||||||
let bocwStats = self.getStatsWithMostRecentDailyRecord(matches: matches.filter({ (match) -> Bool in
|
var overallStats:StatsWithMostRecentDailyRecord?
|
||||||
return match.codGame == "bocw" && self.shouldCountMatch(match: match )
|
var mwStats:StatsWithMostRecentDailyRecord?
|
||||||
}))
|
var bocwStats:StatsWithMostRecentDailyRecord?
|
||||||
let mostRecentDailyStats = self.mostRecentDailyStats(matches: matches)
|
var mostRecentStats:Stats?
|
||||||
|
|
||||||
|
group.enter()
|
||||||
|
queue.async {
|
||||||
|
overallStats = self.getStatsWithMostRecentDailyRecord(matches: matches)
|
||||||
|
group.leave()
|
||||||
|
}
|
||||||
|
|
||||||
|
group.enter()
|
||||||
|
queue.async {
|
||||||
|
mwStats = self.getStatsWithMostRecentDailyRecord(matches: matches.filter({ (match) -> Bool in
|
||||||
|
return match.codGame == "mw" && self.shouldCountMatch(match: match )
|
||||||
|
}))
|
||||||
|
group.leave()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return OverallStats(overall: overallStats, mwStats: mwStats, bocwStats: bocwStats, mostRecentRecord: "\(mostRecentDailyStats.totalWins) - \(mostRecentDailyStats.totalLosses)")
|
group.enter()
|
||||||
|
queue.async {
|
||||||
|
bocwStats = self.getStatsWithMostRecentDailyRecord(matches: matches.filter({ (match) -> Bool in
|
||||||
|
return match.codGame == "bocw" && self.shouldCountMatch(match: match )
|
||||||
|
}))
|
||||||
|
group.leave()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
group.enter()
|
||||||
|
queue.async {
|
||||||
|
mostRecentStats = self.mostRecentDailyStats(matches: matches)
|
||||||
|
group.leave()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
group.wait()
|
||||||
|
|
||||||
|
|
||||||
|
return OverallStats(overall: overallStats!, mwStats: mwStats!, bocwStats: bocwStats!, mostRecentRecord: "\(mostRecentStats!.totalWins) - \(mostRecentStats!.totalLosses)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user