mirror of
https://github.com/vkaelin/LeagueStats.git
synced 2026-03-25 12:57:28 +00:00
refactor: store teamPositions in int in database
This commit is contained in:
parent
537a2eb183
commit
134cbfad0b
12 changed files with 40 additions and 19 deletions
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
|
@ -40,7 +40,7 @@ export function secToTime(seconds) {
|
||||||
* Sort an array of players by role
|
* Sort an array of players by role
|
||||||
*/
|
*/
|
||||||
export function sortTeamByRole(a, b) {
|
export function sortTeamByRole(a, b) {
|
||||||
const sortingArr = ['TOP', 'JUNGLE', 'MIDDLE', 'BOTTOM', 'SUPPORT']
|
const sortingArr = ['TOP', 'JUNGLE', 'MIDDLE', 'BOTTOM', 'UTILITY']
|
||||||
return sortingArr.indexOf(a.role) - sortingArr.indexOf(b.role)
|
return sortingArr.indexOf(a.role) - sortingArr.indexOf(b.role)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ export default new Vuex.Store({
|
||||||
'tr': 'tr1',
|
'tr': 'tr1',
|
||||||
'ru': 'ru'
|
'ru': 'ru'
|
||||||
},
|
},
|
||||||
roles: ['TOP', 'JUNGLE', 'MIDDLE', 'BOTTOM', 'SUPPORT']
|
roles: ['TOP', 'JUNGLE', 'MIDDLE', 'BOTTOM', 'UTILITY']
|
||||||
},
|
},
|
||||||
strict: debug
|
strict: debug
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ export default class MatchPlayer extends BaseModel {
|
||||||
public team: number
|
public team: number
|
||||||
|
|
||||||
@column()
|
@column()
|
||||||
public teamPosition: string
|
public teamPosition: number
|
||||||
|
|
||||||
@column()
|
@column()
|
||||||
public kills: number
|
public kills: number
|
||||||
|
|
|
||||||
|
|
@ -30,8 +30,8 @@ export default class MatchTeam extends BaseModel {
|
||||||
public riftHeralds: number
|
public riftHeralds: number
|
||||||
|
|
||||||
@column()
|
@column()
|
||||||
public bans: number[]
|
public bans?: number[]
|
||||||
|
|
||||||
@column()
|
@column()
|
||||||
public banOrders: number[]
|
public banOrders?: number[]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import Database from '@ioc:Adonis/Lucid/Database'
|
import Database from '@ioc:Adonis/Lucid/Database'
|
||||||
import { MatchDto } from 'App/Services/Jax/src/Endpoints/MatchEndpoint'
|
import { MatchDto } from 'App/Services/Jax/src/Endpoints/MatchEndpoint'
|
||||||
import Match from 'App/Models/Match'
|
import Match from 'App/Models/Match'
|
||||||
import { getSeasonNumber } from 'App/helpers'
|
import { getSeasonNumber, queuesWithRole } from 'App/helpers'
|
||||||
import CDragonService from 'App/Services/CDragonService'
|
import CDragonService from 'App/Services/CDragonService'
|
||||||
import { ChampionRoles } from './ParsedType'
|
import { ChampionRoles, TeamPosition } from './ParsedType'
|
||||||
class MatchParser {
|
class MatchParser {
|
||||||
public async parseOneMatch(match: MatchDto) {
|
public async parseOneMatch(match: MatchDto) {
|
||||||
// Parse + store in database
|
// Parse + store in database
|
||||||
|
|
@ -34,8 +34,8 @@ class MatchParser {
|
||||||
dragons: team.objectives.dragon.kills,
|
dragons: team.objectives.dragon.kills,
|
||||||
inhibitors: team.objectives.inhibitor.kills,
|
inhibitors: team.objectives.inhibitor.kills,
|
||||||
riftHeralds: team.objectives.riftHerald.kills,
|
riftHeralds: team.objectives.riftHerald.kills,
|
||||||
bans: team.bans.map((ban) => ban.championId),
|
bans: team.bans.length ? team.bans.map((ban) => ban.championId) : undefined,
|
||||||
banOrders: team.bans.map((ban) => ban.pickTurn),
|
banOrders: team.bans.length ? team.bans.map((ban) => ban.pickTurn) : undefined,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,6 +65,17 @@ class MatchParser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fix championId bug in older matches
|
||||||
|
if (player.championId > 1000) {
|
||||||
|
console.log('CHAMPION ID NOT FOUND: ' + player.championId)
|
||||||
|
console.log('FROM MATCH ' + match.metadata.matchId)
|
||||||
|
const championId = Object.keys(CDragonService.champions).find(
|
||||||
|
(key) => CDragonService.champions[key].name === player.championName
|
||||||
|
)
|
||||||
|
player.championId = championId ? Number(championId) : 1
|
||||||
|
console.log('CHAMPION ID FROM NAME : ' + championId)
|
||||||
|
}
|
||||||
|
|
||||||
const originalChampionData = CDragonService.champions[player.championId]
|
const originalChampionData = CDragonService.champions[player.championId]
|
||||||
const champRoles = originalChampionData.roles
|
const champRoles = originalChampionData.roles
|
||||||
|
|
||||||
|
|
@ -75,7 +86,10 @@ class MatchParser {
|
||||||
summoner_puuid: player.puuid,
|
summoner_puuid: player.puuid,
|
||||||
summoner_name: player.summonerName,
|
summoner_name: player.summonerName,
|
||||||
team: player.teamId,
|
team: player.teamId,
|
||||||
team_position: player.teamPosition,
|
team_position:
|
||||||
|
player.teamPosition.length && queuesWithRole.includes(match.info.queueId)
|
||||||
|
? TeamPosition[player.teamPosition]
|
||||||
|
: TeamPosition.NONE,
|
||||||
kills: player.kills,
|
kills: player.kills,
|
||||||
deaths: player.deaths,
|
deaths: player.deaths,
|
||||||
assists: player.assists,
|
assists: player.assists,
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,11 @@ export enum ChampionRoles {
|
||||||
tank,
|
tank,
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
export enum TeamPosition {
|
||||||
export enum TeamPosition {}
|
NONE,
|
||||||
|
TOP,
|
||||||
|
JUNGLE,
|
||||||
|
MIDDLE,
|
||||||
|
BOTTOM,
|
||||||
|
UTILITY,
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { getSeasonNumber, sortTeamByRole } from 'App/helpers'
|
import { getSeasonNumber, sortTeamByRole } from 'App/helpers'
|
||||||
import Match from 'App/Models/Match'
|
import Match from 'App/Models/Match'
|
||||||
import MatchPlayer from 'App/Models/MatchPlayer'
|
import MatchPlayer from 'App/Models/MatchPlayer'
|
||||||
|
import { TeamPosition } from 'App/Parsers/ParsedType'
|
||||||
import CDragonService from 'App/Services/CDragonService'
|
import CDragonService from 'App/Services/CDragonService'
|
||||||
import MatchSerializer from './MatchSerializer'
|
import MatchSerializer from './MatchSerializer'
|
||||||
import {
|
import {
|
||||||
|
|
@ -38,7 +39,7 @@ class BasicMatchSerializer extends MatchSerializer {
|
||||||
puuid: player.summonerPuuid,
|
puuid: player.summonerPuuid,
|
||||||
champion: this.getChampion(player.championId),
|
champion: this.getChampion(player.championId),
|
||||||
name: player.summonerName,
|
name: player.summonerName,
|
||||||
role: player.teamPosition,
|
role: TeamPosition[player.teamPosition],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -149,7 +150,7 @@ class BasicMatchSerializer extends MatchSerializer {
|
||||||
perks: this.getPerks(identity),
|
perks: this.getPerks(identity),
|
||||||
region: match.region,
|
region: match.region,
|
||||||
result: allyTeam.result,
|
result: allyTeam.result,
|
||||||
role: identity.teamPosition.length ? identity.teamPosition : 'NONE',
|
role: TeamPosition[identity.teamPosition],
|
||||||
season: getSeasonNumber(match.date),
|
season: getSeasonNumber(match.date),
|
||||||
stats: this.getStats(identity),
|
stats: this.getStats(identity),
|
||||||
summonerId: identity.summonerId,
|
summonerId: identity.summonerId,
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ interface Identifiable {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CDragonCache<T> {
|
export interface CDragonCache<T> {
|
||||||
[id: number]: T
|
[id: string]: T
|
||||||
}
|
}
|
||||||
|
|
||||||
class CDragonService {
|
class CDragonService {
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,6 @@ export function getCurrentSeason(): number {
|
||||||
* @param b second player
|
* @param b second player
|
||||||
*/
|
*/
|
||||||
export function sortTeamByRole(a: SerializedMatchTeamPlayer, b: SerializedMatchTeamPlayer) {
|
export function sortTeamByRole(a: SerializedMatchTeamPlayer, b: SerializedMatchTeamPlayer) {
|
||||||
const sortingArr = ['TOP', 'JUNGLE', 'MIDDLE', 'BOTTOM', 'SUPPORT']
|
const sortingArr = ['TOP', 'JUNGLE', 'MIDDLE', 'BOTTOM', 'UTILITY']
|
||||||
return sortingArr.indexOf(a.role) - sortingArr.indexOf(b.role)
|
return sortingArr.indexOf(a.role) - sortingArr.indexOf(b.role)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ export default class MatchPlayers extends BaseSchema {
|
||||||
table.string('summoner_name', 16).notNullable()
|
table.string('summoner_name', 16).notNullable()
|
||||||
|
|
||||||
table.integer('team').notNullable()
|
table.integer('team').notNullable()
|
||||||
table.string('team_position', 8).notNullable()
|
table.integer('team_position').notNullable()
|
||||||
|
|
||||||
table.integer('kills').notNullable()
|
table.integer('kills').notNullable()
|
||||||
table.integer('deaths').notNullable()
|
table.integer('deaths').notNullable()
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ export default class MatchTeams extends BaseSchema {
|
||||||
table.integer('inhibitors').notNullable()
|
table.integer('inhibitors').notNullable()
|
||||||
table.integer('rift_heralds').notNullable()
|
table.integer('rift_heralds').notNullable()
|
||||||
|
|
||||||
table.specificType('bans', 'INT[]').notNullable()
|
table.specificType('bans', 'INT[]').nullable()
|
||||||
table.specificType('ban_orders', 'INT[]').notNullable()
|
table.specificType('ban_orders', 'INT[]').nullable()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue