diff --git a/server-v2/app/Models/Match.ts b/server-v2/app/Models/Match.ts index de73667..bbb1380 100644 --- a/server-v2/app/Models/Match.ts +++ b/server-v2/app/Models/Match.ts @@ -1,4 +1,4 @@ -import { BaseModel, column, HasMany, hasMany, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm' +import { BaseModel, column, HasMany, hasMany } from '@ioc:Adonis/Lucid/Orm' import MatchPlayer from './MatchPlayer' import MatchTeam from './MatchTeam' @@ -32,11 +32,8 @@ export default class Match extends BaseModel { @column() public gameDuration: number - @hasOne(() => MatchTeam) - public blueTeam: HasOne - - @hasOne(() => MatchTeam) - public redTeam: HasOne + @hasMany(() => MatchTeam) + public teams: HasMany @hasMany(() => MatchPlayer) public players: HasMany diff --git a/server-v2/app/Parsers/MatchParser.ts b/server-v2/app/Parsers/MatchParser.ts index 706c424..a4c21e5 100644 --- a/server-v2/app/Parsers/MatchParser.ts +++ b/server-v2/app/Parsers/MatchParser.ts @@ -26,8 +26,7 @@ class MatchParser { if (match.info.gameDuration < 300) { result = 'Remake' } - const teamColor = team.teamId === 100 ? 'blueTeam' : 'redTeam' - await parsedMatch.related(teamColor).create({ + await parsedMatch.related('teams').create({ matchId: match.metadata.matchId, color: team.teamId, result: result, @@ -121,7 +120,7 @@ class MatchParser { // Load Match relations await parsedMatch.load((loader) => { - loader.load('blueTeam').load('redTeam').load('players') + loader.load('teams').load('players') }) return parsedMatch } diff --git a/server-v2/app/Serializers/BasicMatchSerializer.ts b/server-v2/app/Serializers/BasicMatchSerializer.ts index 9d33ece..8c8be4f 100644 --- a/server-v2/app/Serializers/BasicMatchSerializer.ts +++ b/server-v2/app/Serializers/BasicMatchSerializer.ts @@ -123,11 +123,9 @@ class BasicMatchSerializer extends MatchSerializer { } } - public serializeOneMatch(match: Match, puuid: string): SerializedMatch { + public serializeOneMatch(match: Match, puuid: string, newMatch = false): SerializedMatch { const identity = match.players.find((p) => p.summonerPuuid === puuid)! - - const allyTeamColor = identity.team === 100 ? 'blueTeam' : 'redTeam' - const allyTeam = match[allyTeamColor] + const allyTeam = match.teams.find((t) => t.color === identity.team)! const allyPlayers: MatchPlayer[] = [] const enemyPlayers: MatchPlayer[] = [] @@ -147,6 +145,7 @@ class BasicMatchSerializer extends MatchSerializer { level: identity.champLevel, map: match.map, name: identity.summonerName, + newMatch, perks: this.getPerks(identity), region: match.region, result: allyTeam.result, @@ -160,8 +159,8 @@ class BasicMatchSerializer extends MatchSerializer { time: match.gameDuration, } } - public serialize(matches: Match[], puuid: string): SerializedMatch[] { - return matches.map((match) => this.serializeOneMatch(match, puuid)) + public serialize(matches: Match[], puuid: string, newMatches = false): SerializedMatch[] { + return matches.map((match) => this.serializeOneMatch(match, puuid, newMatches)) } } diff --git a/server-v2/app/Serializers/SerializedTypes.ts b/server-v2/app/Serializers/SerializedTypes.ts index c226bc3..082c41d 100644 --- a/server-v2/app/Serializers/SerializedTypes.ts +++ b/server-v2/app/Serializers/SerializedTypes.ts @@ -9,6 +9,7 @@ export interface SerializedMatch { level: number map: number name: string + newMatch: boolean perks: SerializedMatchPerks region: string result: string diff --git a/server-v2/app/Services/MatchService.ts b/server-v2/app/Services/MatchService.ts index 2bf21ea..75bd5d4 100644 --- a/server-v2/app/Services/MatchService.ts +++ b/server-v2/app/Services/MatchService.ts @@ -3,7 +3,6 @@ import { MatchlistDto } from './Jax/src/Endpoints/MatchlistEndpoint' import { SummonerDTO } from './Jax/src/Endpoints/SummonerEndpoint' import Summoner from 'App/Models/Summoner' import Database from '@ioc:Adonis/Lucid/Database' -import SummonerMatchlist from 'App/Models/SummonerMatchlist' import MatchParser from 'App/Parsers/MatchParser' import BasicMatchSerializer from 'App/Serializers/BasicMatchSerializer' import { SerializedMatch } from 'App/Serializers/SerializedTypes' @@ -91,8 +90,7 @@ class MatchService { for (let i = 0; i < matchIds.length; ++i) { const matchSaved = await Match.query() .where('id', matchIds[i]) - .preload('blueTeam') - .preload('redTeam') + .preload('teams') .preload('players') .first() @@ -113,7 +111,7 @@ class MatchService { const parsedMatches: any = await MatchParser.parse(matchesFromApi) // TODO: Serialize match from DB + put it in Redis + push it in "matches" - const serializedMatches = BasicMatchSerializer.serialize(parsedMatches, puuid) + const serializedMatches = BasicMatchSerializer.serialize(parsedMatches, puuid, true) matches = [...matches, ...serializedMatches] }