From 3862043980513841794b5b111295de1931dd06ac Mon Sep 17 00:00:00 2001 From: Valentin Kaelin Date: Mon, 5 Oct 2020 20:47:16 +0200 Subject: [PATCH] feat: create Match and DetailedMatch Models --- server-new/app/Models/DetailedMatch.ts | 57 +++++++++++ server-new/app/Models/Match.ts | 126 +++++++++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 server-new/app/Models/DetailedMatch.ts create mode 100644 server-new/app/Models/Match.ts diff --git a/server-new/app/Models/DetailedMatch.ts b/server-new/app/Models/DetailedMatch.ts new file mode 100644 index 0000000..9a7caa2 --- /dev/null +++ b/server-new/app/Models/DetailedMatch.ts @@ -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 +} diff --git a/server-new/app/Models/Match.ts b/server-new/app/Models/Match.ts new file mode 100644 index 0000000..776b3bc --- /dev/null +++ b/server-new/app/Models/Match.ts @@ -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 +}