From d82285050fd5cc328248c8573960fd4079ee5ddf Mon Sep 17 00:00:00 2001 From: Kalane Date: Sun, 12 Sep 2021 15:16:08 +0200 Subject: [PATCH] feat: start migrations --- server-v2/LeagueStatsSQL.diagram | 2 +- .../migrations/1631392754960_matches.ts | 27 +++++++ .../migrations/1631392766690_match_players.ts | 70 +++++++++++++++++++ .../migrations/1631392773430_summoners.ts | 21 ++++++ .../1631392778620_summoner_names.ts | 22 ++++++ .../1631392817716_summoner_matchlist.ts | 17 +++++ .../migrations/1631397498477_match_teams.ts | 25 +++++++ .../Jax/src/Endpoints/MatchEndpoint.ts | 14 ++-- 8 files changed, 190 insertions(+), 8 deletions(-) create mode 100644 server-v2/database/migrations/1631392754960_matches.ts create mode 100644 server-v2/database/migrations/1631392766690_match_players.ts create mode 100644 server-v2/database/migrations/1631392773430_summoners.ts create mode 100644 server-v2/database/migrations/1631392778620_summoner_names.ts create mode 100644 server-v2/database/migrations/1631392817716_summoner_matchlist.ts create mode 100644 server-v2/database/migrations/1631397498477_match_teams.ts diff --git a/server-v2/LeagueStatsSQL.diagram b/server-v2/LeagueStatsSQL.diagram index 0615472..0d9f7dc 100644 --- a/server-v2/LeagueStatsSQL.diagram +++ b/server-v2/LeagueStatsSQL.diagram @@ -1 +1 @@ -{"type":"edit","version":3,"columns":[{"id":0,"value":{"id":"0","name":"name","type":"string"}},{"id":1,"value":{"id":"1","name":"type","type":"string"}},{"id":2,"value":{"id":"2","name":"nullable","type":"boolean"}}],"tables":[{"id":1,"value":{"name":"Matches","id":"table","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"id","type":"varchar(15)","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"gameId","type":"int","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"map","type":"smallint","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"gamemode","type":"smallint","nullable":"FALSE"}},{"id":5,"value":{"id":"column_5","name":"date","type":"int","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"region","type":"varchar(4)","nullable":"FALSE"}},{"id":7,"value":{"id":"column_7","name":"result","type":"smallint","nullable":"FALSE"}}]},"position":{"top":64,"left":448},"rowsExpanded":false,"selected":false},{"id":3,"value":{"name":"Match_Players","id":"table_3","schema":"new","rows":[{"id":5,"value":{"id":"column_5","name":"id","type":"integer","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"match_id","type":"varchar(15)","nullable":"FALSE"}},{"id":1,"value":{"id":"column","name":"summoner_puuid","type":"varchar(78)","nullable":"FALSE"}},{"id":8,"value":{"id":"column_8","name":"summoner_name","type":"varchar(16)","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"champion_id","type":"integer","nullable":"FALSE"}},{"id":7,"value":{"id":"column_7","name":"team","type":"smallint","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"bcp de stats","type":"","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"...","type":"","nullable":"FALSE"}}]},"position":{"top":64,"left":64},"rowsExpanded":false,"selected":false},{"id":4,"value":{"name":"Summoners","id":"table_4","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"puuid","type":"varchar(78)","nullable":"FALSE"}}]},"position":{"top":464,"left":448},"rowsExpanded":false,"selected":false},{"id":5,"value":{"name":"Summoner_Names","id":"table_5","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"summoner_puuid","type":"varchar(78)","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"name","type":"varchar(16)","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"date","type":"DATE","nullable":"FALSE"}}]},"position":{"top":448,"left":64},"rowsExpanded":false,"selected":false},{"id":6,"value":{"name":"Summoner_Matchlist","id":"table_6","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"summoner_puuid","type":"varchar(78)","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"match_id","type":"varchar(15)","nullable":"FALSE"}}]},"position":{"top":720,"left":64},"rowsExpanded":false,"selected":false},{"id":2,"value":{"name":"Match_Champions","id":"table_2","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"id","type":"integer","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"name","type":"varchar(20)","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"alias","type":"varchar(20)","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"icon ??","type":"varchar(100)","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"role","type":"varchar(10)","nullable":"FALSE"}},{"id":5,"value":{"id":"column_5","name":"second_role","type":"varchar(10)","nullable":"FALSE"}}]},"position":{"top":64,"left":832},"rowsExpanded":false,"selected":false}],"refs":[{"from":{"table":3,"rows":[2]},"to":{"table":1,"rows":[1]},"id":1,"selected":false},{"from":{"table":3,"rows":[1]},"to":{"table":4,"rows":[1]},"id":3,"selected":false},{"from":{"table":5,"rows":[1]},"to":{"table":4,"rows":[1]},"id":4,"selected":false},{"from":{"table":6,"rows":[1]},"to":{"table":4,"rows":[1]},"id":5,"selected":false}],"size":{"width":2048,"height":1178},"schema":"main"} \ No newline at end of file +{"type":"edit","version":3,"columns":[{"id":0,"value":{"id":"0","name":"name","type":"string"}},{"id":1,"value":{"id":"1","name":"type","type":"string"}},{"id":2,"value":{"id":"2","name":"nullable","type":"boolean"}}],"tables":[{"id":1,"value":{"name":"Matches","id":"table","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"id","type":"varchar(15)","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"gameId","type":"integer","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"map","type":"integer","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"gamemode","type":"integer","nullable":"FALSE"}},{"id":5,"value":{"id":"column_5","name":"date","type":"integer","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"region","type":"varchar(4)","nullable":"FALSE"}},{"id":7,"value":{"id":"column_7","name":"result","type":"integer","nullable":"FALSE"}},{"id":8,"value":{"id":"column_8","name":"season","type":"integer","nullable":"FALSE"}},{"id":11,"value":{"id":"column_11","name":"game_duration","type":"integer","nullable":"FALSE"}},{"id":9,"value":{"id":"column_9","name":"blue_team_id","type":"integer","nullable":"FALSE"}},{"id":10,"value":{"id":"column_10","name":"red_team_id","type":"integer","nullable":"FALSE"}}]},"position":{"top":64,"left":448},"rowsExpanded":false,"selected":false},{"id":3,"value":{"name":"Match_Players","id":"table_3","schema":"new","rows":[{"id":5,"value":{"id":"column_5","name":"id","type":"increments","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"match_id","type":"varchar(15)","nullable":"FALSE"}},{"id":1,"value":{"id":"column","name":"summoner_puuid","type":"varchar(78)","nullable":"FALSE"}},{"id":8,"value":{"id":"column_8","name":"summoner_name","type":"varchar(16)","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"champion_id","type":"integer","nullable":"FALSE"}},{"id":7,"value":{"id":"column_7","name":"team","type":"integer","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"bcp de stats","type":"","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"...","type":"","nullable":"FALSE"}}]},"position":{"top":112,"left":64},"rowsExpanded":false,"selected":false},{"id":4,"value":{"name":"Summoners","id":"table_4","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"puuid","type":"varchar(78)","nullable":"FALSE"}}]},"position":{"top":528,"left":448},"rowsExpanded":false,"selected":false},{"id":5,"value":{"name":"Summoner_Names","id":"table_5","schema":"new","rows":[{"id":4,"value":{"id":"column_4","name":"id","type":"increments","nullable":"FALSE"}},{"id":1,"value":{"id":"column","name":"summoner_puuid","type":"varchar(78)","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"name","type":"varchar(16)","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"date","type":"DATE","nullable":"FALSE"}}]},"position":{"top":512,"left":64},"rowsExpanded":false,"selected":false},{"id":6,"value":{"name":"Summoner_Matchlist","id":"table_6","schema":"new","rows":[{"id":3,"value":{"id":"column_3","name":"id","type":"increments","nullable":"FALSE"}},{"id":1,"value":{"id":"column","name":"summoner_puuid","type":"varchar(78)","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"match_id","type":"varchar(15)","nullable":"FALSE"}}]},"position":{"top":800,"left":64},"rowsExpanded":false,"selected":false},{"id":7,"value":{"name":"Match_Teams","id":"table_7","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"id","type":"increments","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"barons","type":"integer","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"color","type":"varchar(4)","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"dragons","type":"integer","nullable":"FALSE"}},{"id":5,"value":{"id":"column_5","name":"inhibitors","type":"integer","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"result","type":"integer","nullable":"FALSE"}},{"id":7,"value":{"id":"column_7","name":"rift_heralds","type":"integer","nullable":"FALSE"}},{"id":8,"value":{"id":"column_8","name":"bans","type":"integer[]","nullable":"FALSE"}},{"id":9,"value":{"id":"column_9","name":"ban_orders","type":"integer[]","nullable":"FALSE"}}]},"position":{"top":80,"left":832},"rowsExpanded":false,"selected":false},{"id":2,"value":{"name":"Match_Champions","id":"table_2","schema":"new","rows":[{"id":1,"value":{"id":"column","name":"id","type":"integer","nullable":"FALSE"}},{"id":2,"value":{"id":"column_2","name":"name","type":"varchar(20)","nullable":"FALSE"}},{"id":3,"value":{"id":"column_3","name":"alias","type":"varchar(20)","nullable":"FALSE"}},{"id":6,"value":{"id":"column_6","name":"icon ??","type":"varchar(100)","nullable":"FALSE"}},{"id":4,"value":{"id":"column_4","name":"role","type":"varchar(10)","nullable":"FALSE"}},{"id":5,"value":{"id":"column_5","name":"second_role","type":"varchar(10)","nullable":"FALSE"}}]},"position":{"top":64,"left":1216},"rowsExpanded":false,"selected":false}],"refs":[{"from":{"table":3,"rows":[2]},"to":{"table":1,"rows":[1]},"id":1,"selected":false},{"from":{"table":3,"rows":[1]},"to":{"table":4,"rows":[1]},"id":3,"selected":false},{"from":{"table":5,"rows":[1]},"to":{"table":4,"rows":[1]},"id":4,"selected":false},{"from":{"table":6,"rows":[1]},"to":{"table":4,"rows":[1]},"id":5,"selected":false},{"from":{"table":1,"rows":[9]},"to":{"table":7,"rows":[1]},"id":2,"selected":false},{"from":{"table":1,"rows":[10]},"to":{"table":7,"rows":[1]},"id":6,"selected":false}],"size":{"width":2048,"height":1178},"schema":"main"} \ No newline at end of file diff --git a/server-v2/database/migrations/1631392754960_matches.ts b/server-v2/database/migrations/1631392754960_matches.ts new file mode 100644 index 0000000..5bead9d --- /dev/null +++ b/server-v2/database/migrations/1631392754960_matches.ts @@ -0,0 +1,27 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Matches extends BaseSchema { + protected tableName = 'matches' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.string('id', 15).primary() + table.integer('gameId').notNullable() + table.integer('map').notNullable() + table.integer('gamemode').notNullable() + table.integer('date').notNullable() + table.string('region', 4).notNullable() + table.integer('result').notNullable() + + table.integer('season').notNullable() + table.integer('game_duration').notNullable() + + table.integer('blue_team_id').notNullable() + table.integer('red_team_id').notNullable() + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/server-v2/database/migrations/1631392766690_match_players.ts b/server-v2/database/migrations/1631392766690_match_players.ts new file mode 100644 index 0000000..65b660d --- /dev/null +++ b/server-v2/database/migrations/1631392766690_match_players.ts @@ -0,0 +1,70 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class MatchPlayers extends BaseSchema { + protected tableName = 'match_players' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.string('match_id', 15).notNullable() + + table.integer('participant_id').notNullable() + table.integer('summoner_id').notNullable() + table.string('summoner_puuid', 78).notNullable() + table.string('summoner_name', 16).notNullable() + + table.integer('team').notNullable() + table.string('team_position', 8).notNullable() + + table.integer('kills').notNullable() + table.integer('deaths').notNullable() + table.integer('assists').notNullable() + table.integer('kda').notNullable() + + table.integer('champ_level').notNullable() + table.integer('champion_id').notNullable() + table.integer('champion_role1').notNullable() + table.integer('champion_role2').nullable() + + table.integer('double_kills').notNullable() + table.integer('triple_kills').notNullable() + table.integer('quadra_kills').notNullable() + table.integer('penta_kills').notNullable() + + table.integer('baron_kills').notNullable() + table.integer('dragon_kills').notNullable() + table.integer('turret_kills').notNullable() + table.integer('vision_score').notNullable() + table.integer('gold').notNullable() + + table.integer('summoner1_id').notNullable() + table.integer('summoner2_id').notNullable() + + table.integer('item0').notNullable() + table.integer('item1').notNullable() + table.integer('item2').notNullable() + table.integer('item3').notNullable() + table.integer('item4').notNullable() + table.integer('item5').notNullable() + table.integer('item6').notNullable() + + table.integer('damage_dealt_objectives').notNullable() + table.integer('damage_dealt_to_champions').notNullable() + table.integer('damage_taken').notNullable() + table.integer('heal').notNullable() + table.integer('minions').notNullable() + + table.integer('critical_strike').notNullable() + table.integer('killing_spree').notNullable() + table.integer('time_spent_living').notNullable() + + table.integer('perks_primary_style').notNullable() + table.integer('perks_secondary_style').notNullable() + table.specificType('perks_selected', 'INT[]').notNullable() + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/server-v2/database/migrations/1631392773430_summoners.ts b/server-v2/database/migrations/1631392773430_summoners.ts new file mode 100644 index 0000000..91114b7 --- /dev/null +++ b/server-v2/database/migrations/1631392773430_summoners.ts @@ -0,0 +1,21 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Summoners extends BaseSchema { + protected tableName = 'summoners' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.string('puuid', 78).primary() + + /** + * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL + */ + table.timestamp('created_at', { useTz: true }) + table.timestamp('updated_at', { useTz: true }) + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/server-v2/database/migrations/1631392778620_summoner_names.ts b/server-v2/database/migrations/1631392778620_summoner_names.ts new file mode 100644 index 0000000..fca2f30 --- /dev/null +++ b/server-v2/database/migrations/1631392778620_summoner_names.ts @@ -0,0 +1,22 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class SummonerNames extends BaseSchema { + protected tableName = 'summoner_names' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.string('summoner_puuid', 78).notNullable() + table.string('name', 16).notNullable() + + /** + * Uses timestamptz for PostgreSQL and DATETIME2 for MSSQL + */ + table.timestamp('created_at', { useTz: true }) + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/server-v2/database/migrations/1631392817716_summoner_matchlist.ts b/server-v2/database/migrations/1631392817716_summoner_matchlist.ts new file mode 100644 index 0000000..da4680c --- /dev/null +++ b/server-v2/database/migrations/1631392817716_summoner_matchlist.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class SummonerMatchLists extends BaseSchema { + protected tableName = 'summoner_matchlist' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.string('summoner_puuid', 78).notNullable() + table.string('match_id', 15).notNullable() + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/server-v2/database/migrations/1631397498477_match_teams.ts b/server-v2/database/migrations/1631397498477_match_teams.ts new file mode 100644 index 0000000..84b76a2 --- /dev/null +++ b/server-v2/database/migrations/1631397498477_match_teams.ts @@ -0,0 +1,25 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class MatchTeams extends BaseSchema { + protected tableName = 'match_teams' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + + table.integer('barons').notNullable() + table.string('color', 4).notNullable() + table.integer('dragons').notNullable() + table.integer('inhibitors').notNullable() + table.integer('result').notNullable() + table.integer('rift_heralds').notNullable() + + table.specificType('bans', 'INT[]').notNullable() + table.specificType('ban_orders', 'INT[]').notNullable() + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/server/app/Services/Jax/src/Endpoints/MatchEndpoint.ts b/server/app/Services/Jax/src/Endpoints/MatchEndpoint.ts index 6d69dcf..703c16a 100644 --- a/server/app/Services/Jax/src/Endpoints/MatchEndpoint.ts +++ b/server/app/Services/Jax/src/Endpoints/MatchEndpoint.ts @@ -298,7 +298,7 @@ export interface ParticipantDto { objectivesStolenAssists: number; participantId: number; pentaKills: number; - perks: PerksDto; // TODO + perks: PerksDto; physicalDamageDealt: number; physicalDamageDealtToChampions: number; physicalDamageTaken: number; @@ -357,23 +357,23 @@ export enum ChampionTransformDto { export type LaneDto = 'TOP' | 'JUNGLE' |'MIDDLE' | 'BOTTOM' export interface PerksDto { - statPerks: StatPerksDto; - styles: StyleDto[]; + statPerks: PerkStatsDto; + styles: PerkStyleDto[]; } -export interface StatPerksDto { +export interface PerkStatsDto { defense: number; flex: number; offense: number; } -export interface StyleDto { +export interface PerkStyleDto { description: 'primaryStyle' | 'subStyle'; - selections: SelectionDto[]; + selections: PerkStyleSelectionDto[]; style: number; } -export interface SelectionDto { +export interface PerkStyleSelectionDto { perk: number; var1: number; var2: number;