LeagueStats/server/app/Controllers/Http/SummonerController.js

110 lines
3 KiB
JavaScript
Raw Normal View History

'use strict'
const Jax = use('Jax')
const MatchRepository = make('App/Repositories/MatchRepository')
const MatchService = use('App/Services/MatchService')
2019-12-01 15:20:27 +00:00
const SummonerService = use('App/Services/SummonerService')
const StatsService = use('App/Services/StatsService')
const Summoner = use('App/Models/Summoner')
class SummonerController {
/**
* POST: get basic summoner data
*/
async basic({ request, response }) {
console.time('all')
const summoner = request.input('summoner')
const region = request.input('region')
console.log(summoner, region)
const regexSummonerName = new RegExp('^[0-9\\p{L} _\\.]+$', 'u')
if (!regexSummonerName.exec(summoner)) {
return response.json(null)
}
const finalJSON = {}
Jax.regionName = region
try {
const account = await SummonerService.getAccount(summoner, region)
// Check if the summoner is found
if (!account) return response.json(null)
account.region = region
finalJSON.account = account
// Summoner in DB
const summonerDB = await Summoner.findOrCreate(
{ puuid: account.puuid },
{ puuid: account.puuid }
)
// MATCH LIST
await MatchService.updateMatchList(account, summonerDB)
const matchList = summonerDB.matchList
finalJSON.matchList = matchList
// CURRENT GAME
const currentGame = await Jax.Spectator.summonerID(account.id, region)
finalJSON.playing = !!currentGame
finalJSON.current = currentGame
// RANKED STATS
finalJSON.ranked = await SummonerService.getRanked(account, region)
// SAVE IN DB
await summonerDB.save()
} catch (error) {
console.log('username not found')
console.log(error)
return response.json(null)
}
console.timeEnd('all')
return response.json(finalJSON)
}
/**
* POST: get overview view summoner data
*/
async overview({ request, response }) {
console.time('overview')
const account = request.input('account')
const finalJSON = {}
// Summoner in DB
const summonerDB = await Summoner.findOrCreate(
{ puuid: account.puuid },
{ puuid: account.puuid }
)
// MATCHES BASIC
const gameIds = summonerDB.matchList.slice(0, 10).map(({ gameId }) => gameId)
finalJSON.matchesDetails = await MatchService.getMatches(account, gameIds, summonerDB)
// STATS
console.time('STATS')
finalJSON.stats = await StatsService.getSummonerStats(account)
console.timeEnd('STATS')
// SAVE IN DB
await summonerDB.save()
console.timeEnd('overview')
return response.json(finalJSON)
}
/**
* POST: get champions view summoner data
*/
async champions({ request, response }) {
const puuid = request.input('puuid')
const queue = request.input('queue')
2019-12-21 16:56:31 +00:00
console.time('championsRequest')
const championStats = await MatchRepository.championCompleteStats(puuid, queue)
2019-12-21 16:56:31 +00:00
console.timeEnd('championsRequest')
return response.json(championStats)
}
}
module.exports = SummonerController