feat: add first version of Models

This commit is contained in:
Kalane 2021-09-12 16:09:29 +02:00
parent d82285050f
commit 753bda3418
9 changed files with 320 additions and 7 deletions

View file

@ -0,0 +1,43 @@
import { BaseModel, column, HasMany, hasMany, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'
import MatchPlayer from './MatchPlayer'
import MatchTeam from './MatchTeam'
export default class Match extends BaseModel {
public static selfAssignPrimaryKey = true
@column({ isPrimary: true })
public id: string
@column()
public gameId: number
@column()
public map: number
@column()
public gamemode: number
@column()
public date: number
@column()
public region: string
@column()
public result: number
@column()
public season: number
@column()
public gameDuration: number
@hasOne(() => MatchTeam)
public blueTeam: HasOne<typeof MatchTeam>
@hasOne(() => MatchTeam)
public redTeam: HasOne<typeof MatchTeam>
@hasMany(() => MatchPlayer)
public players: HasMany<typeof MatchPlayer>
}

View file

@ -0,0 +1,152 @@
import { BaseModel, BelongsTo, belongsTo, column } from '@ioc:Adonis/Lucid/Orm'
import Match from './Match'
import Summoner from './Summoner'
export default class MatchPlayer extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public matchId: number
@belongsTo(() => Match)
public match: BelongsTo<typeof Match>
@column()
public participantId: number
@column()
public summonerId: number
@column()
public summonerPuuid: string
@belongsTo(() => Summoner, {
localKey: 'puuid',
foreignKey: 'summonerPuuid',
})
public summoner: BelongsTo<typeof Summoner>
@column()
public summonerName: string
@column()
public team: number
@column()
public teamPosition: string
@column()
public kills: number
@column()
public deaths: number
@column()
public assists: number
@column()
public kda: number
@column()
public kp: number
@column()
public champLevel: number
@column()
public championId: number
@column()
public championRole1: number
@column()
public championRole2: number
@column()
public doubleKills: number
@column()
public tripleKills: number
@column()
public quadraKills: number
@column()
public pentaKills: number
@column()
public baronKills: number
@column()
public dragonKills: number
@column()
public turretKills: number
@column()
public visionScore: number
@column()
public gold: number
@column()
public summoner1Id: number
@column()
public summoner2Id: number
@column()
public item0: number
@column()
public item1: number
@column()
public item2: number
@column()
public item3: number
@column()
public item4: number
@column()
public item5: number
@column()
public item6: number
@column()
public damageDealtObjectives: number
@column()
public damageDealtChampions: number
@column()
public damageTaken: number
@column()
public heal: number
@column()
public minions: number
@column()
public criticalStrike: number
@column()
public killingSpree: number
@column()
public timeSpentLiving: number
@column()
public perksPrimaryStyle: number
@column()
public perksSecondaryStyle: number
@column()
public perksSelected: number[]
}

View file

@ -0,0 +1,37 @@
import { BaseModel, BelongsTo, belongsTo, column } from '@ioc:Adonis/Lucid/Orm'
import Match from './Match'
export default class MatchTeam extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public matchId: string
@belongsTo(() => Match)
public match: BelongsTo<typeof Match>
@column()
public color: string
@column()
public result: number
@column()
public barons: number
@column()
public dragons: number
@column()
public inhibitors: number
@column()
public riftHeralds: number
@column()
public bans: number[]
@column()
public banOrders: number[]
}

View file

@ -0,0 +1,36 @@
import { DateTime } from 'luxon'
import { BaseModel, column, HasMany, hasMany } from '@ioc:Adonis/Lucid/Orm'
import SummonerMatchlist from './SummonerMatchlist'
import SummonerName from './SummonerName'
import MatchPlayer from './MatchPlayer'
export default class Summoner extends BaseModel {
public static selfAssignPrimaryKey = true
@column({ isPrimary: true })
public puuid: string
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true })
public updatedAt: DateTime
@hasMany(() => SummonerMatchlist, {
localKey: 'puuid',
foreignKey: 'summonerPuuid',
})
public matchlist: HasMany<typeof SummonerMatchlist>
@hasMany(() => MatchPlayer, {
localKey: 'puuid',
foreignKey: 'summonerPuuid',
})
public matches: HasMany<typeof MatchPlayer>
@hasMany(() => SummonerName, {
localKey: 'puuid',
foreignKey: 'summonerPuuid',
})
public names: HasMany<typeof SummonerName>
}

View file

@ -0,0 +1,19 @@
import { BaseModel, BelongsTo, belongsTo, column } from '@ioc:Adonis/Lucid/Orm'
import Summoner from './Summoner'
export default class SummonerMatchlist extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public summonerPuuid: string
@column()
public matchId: string
@belongsTo(() => Summoner, {
localKey: 'puuid',
foreignKey: 'summonerPuuid',
})
public summoner: BelongsTo<typeof Summoner>
}

View file

@ -0,0 +1,23 @@
import { DateTime } from 'luxon'
import { BaseModel, BelongsTo, belongsTo, column } from '@ioc:Adonis/Lucid/Orm'
import Summoner from './Summoner'
export default class SummonerName extends BaseModel {
@column({ isPrimary: true })
public id: number
@column()
public summonerPuuid: string
@belongsTo(() => Summoner, {
localKey: 'puuid',
foreignKey: 'summonerPuuid',
})
public summoner: BelongsTo<typeof Summoner>
@column()
public name: string
@column.dateTime({ autoCreate: true })
public createdAt: DateTime
}

View file

@ -6,7 +6,7 @@ export default class Matches extends BaseSchema {
public async up() { public async up() {
this.schema.createTable(this.tableName, (table) => { this.schema.createTable(this.tableName, (table) => {
table.string('id', 15).primary() table.string('id', 15).primary()
table.integer('gameId').notNullable() table.integer('game_id').notNullable()
table.integer('map').notNullable() table.integer('map').notNullable()
table.integer('gamemode').notNullable() table.integer('gamemode').notNullable()
table.integer('date').notNullable() table.integer('date').notNullable()
@ -16,8 +16,8 @@ export default class Matches extends BaseSchema {
table.integer('season').notNullable() table.integer('season').notNullable()
table.integer('game_duration').notNullable() table.integer('game_duration').notNullable()
table.integer('blue_team_id').notNullable() // table.integer('blue_team_id').notNullable()
table.integer('red_team_id').notNullable() // table.integer('red_team_id').notNullable()
}) })
} }

View file

@ -19,7 +19,8 @@ export default class MatchPlayers extends BaseSchema {
table.integer('kills').notNullable() table.integer('kills').notNullable()
table.integer('deaths').notNullable() table.integer('deaths').notNullable()
table.integer('assists').notNullable() table.integer('assists').notNullable()
table.integer('kda').notNullable() table.float('kda').notNullable()
table.float('kp').notNullable()
table.integer('champ_level').notNullable() table.integer('champ_level').notNullable()
table.integer('champion_id').notNullable() table.integer('champion_id').notNullable()
@ -49,7 +50,7 @@ export default class MatchPlayers extends BaseSchema {
table.integer('item6').notNullable() table.integer('item6').notNullable()
table.integer('damage_dealt_objectives').notNullable() table.integer('damage_dealt_objectives').notNullable()
table.integer('damage_dealt_to_champions').notNullable() table.integer('damage_dealt_champions').notNullable()
table.integer('damage_taken').notNullable() table.integer('damage_taken').notNullable()
table.integer('heal').notNullable() table.integer('heal').notNullable()
table.integer('minions').notNullable() table.integer('minions').notNullable()

View file

@ -6,12 +6,14 @@ export default class MatchTeams extends BaseSchema {
public async up() { public async up() {
this.schema.createTable(this.tableName, (table) => { this.schema.createTable(this.tableName, (table) => {
table.increments('id') table.increments('id')
table.string('match_id', 15)
table.string('color', 4).notNullable()
table.integer('result').notNullable()
table.integer('barons').notNullable() table.integer('barons').notNullable()
table.string('color', 4).notNullable()
table.integer('dragons').notNullable() table.integer('dragons').notNullable()
table.integer('inhibitors').notNullable() table.integer('inhibitors').notNullable()
table.integer('result').notNullable()
table.integer('rift_heralds').notNullable() table.integer('rift_heralds').notNullable()
table.specificType('bans', 'INT[]').notNullable() table.specificType('bans', 'INT[]').notNullable()