feat: create Match and DetailedMatch Models

This commit is contained in:
Valentin Kaelin 2020-10-05 20:47:16 +02:00
parent 3bbfab9260
commit 3862043980
2 changed files with 183 additions and 0 deletions

View file

@ -0,0 +1,57 @@
import { Model } from '@ioc:Mongodb/Model'
import { Champion, ParticipantDetails } from 'App/Models/Match'
export interface DetailedMatchModel {
gameId: string,
season: number,
blueTeam: Team,
redTeam: Team,
map: number,
gamemode: number,
date: number,
region: string,
time: number
}
interface Team {
bans: Ban[],
barons: number,
color: string,
dragons: number,
inhibitors: number,
players: ParticipantDetails[],
result: string,
riftHerald: number,
teamStats: TeamStats,
towers: number
}
interface Ban {
championID: number,
pickTurn: number,
champion: Champion
}
interface TeamStats {
kills: number,
deaths: number,
assists: number,
gold: number,
dmgChamp: number,
dmgObj: number,
dmgTaken: number
}
export default class DetailedMatch extends Model implements DetailedMatchModel {
public static collectionName = 'detailed_matches'
public gameId: string
public season: number
public blueTeam: Team
public redTeam: Team
public map: number
public gamemode: number
public date: number
public region: string
public time: number
}

View file

@ -0,0 +1,126 @@
import { Model } from '@ioc:Mongodb/Model'
export interface MatchModel extends ParticipantDetails {
account_id: string,
summoner_puuid: string,
gameId: number,
result: string,
allyTeam: ParticipantBasic[],
enemyTeam: ParticipantBasic[],
map: number,
gamemode: number,
date: number,
region: string,
season: number,
time: number,
}
export interface ParticipantDetails {
name: string,
summonerId: string,
champion: Champion,
role: string,
primaryRune: string,
secondaryRune: string,
level: number,
items: Item[],
firstSum: SummonerSpell | number,
secondSum: SummonerSpell | number,
stats: Stats,
percentStats?: PercentStats
rank?: Rank
}
export interface Champion {
id: number,
name: string,
alias: string,
roles: string[],
icon: string
}
interface SummonerSpell {
name: string,
description: string,
icon: string
}
interface Rank {
tier: string,
shortName: string
}
interface ParticipantBasic {
account_id: string,
name: string,
role: string,
champion: Champion
}
interface Item {
image: string,
name: string,
description: string,
price: number
}
interface Stats {
kills: number,
deaths: number,
assists: number,
minions: number,
vision: number,
gold: number,
dmgChamp: number,
dmgObj: number,
dmgTaken: number,
kda: number,
realKda: number,
criticalStrike: number,
killingSpree: number,
doubleKills: number,
tripleKills: number,
quadraKills: number,
pentaKills: number,
heal: number,
towers: number,
longestLiving: number,
kp: number,
}
interface PercentStats {
minions: number,
vision: number,
gold: string,
dmgChamp: string,
dmgObj: string,
dmgTaken: string,
}
export default class Match extends Model implements MatchModel {
public static collectionName = 'matches'
public account_id: string
public summoner_puuid: string
public gameId: number
public result: string
public allyTeam: ParticipantBasic[]
public enemyTeam: ParticipantBasic[]
public map: number
public gamemode: number
public date: number
public region: string
public season: number
public time: number
public name: string
public summonerId: string
public champion: Champion
public role: string
public primaryRune: string
public secondaryRune: string
public level: number
public items: Item[]
public firstSum: number
public secondSum: number
public stats: Stats
}