diff --git a/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_repo.ex b/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_repo.ex index 56af516..094ad6a 100644 --- a/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_repo.ex +++ b/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_repo.ex @@ -1,11 +1,17 @@ defmodule LolAnalytics.Dimensions.Match.MatchRepo do + alias LolAnalytics.Dimensions.Patch.PatchRepo alias LolAnalytics.Dimensions.Match.MatchSchema alias LoLAnalytics.Repo import Ecto.Query - @spec get_or_create(String.t()) :: %MatchSchema{} - def get_or_create(match_id) do + @spec get_or_create(%{ + :match_id => String.t(), + :queue_id => integer(), + :patch_number => String.t() + }) :: %MatchSchema{} + def get_or_create(%{match_id: match_id, queue_id: queue_id, patch_number: patch_number}) do + _patch = PatchRepo.get_or_create(patch_number) query = from m in MatchSchema, where: m.match_id == ^match_id match = Repo.one(query) @@ -13,6 +19,9 @@ defmodule LolAnalytics.Dimensions.Match.MatchRepo do nil -> %MatchSchema{} |> MatchSchema.changeset(%{ + match_id: match_id, + patch_number: patch_number, + queue_id: queue_id, fact_champion_played_game_status: 0, fact_champion_picked_item_status: 0, fact_champion_picked_summoner_spell_status: 0 diff --git a/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_schema.ex b/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_schema.ex index 4cc685a..dc90683 100644 --- a/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_schema.ex +++ b/apps/lol_analytics/lib/lol_analytics/dimensions/match/match_schema.ex @@ -4,6 +4,8 @@ defmodule LolAnalytics.Dimensions.Match.MatchSchema do @casting_attrs [ :match_id, + :queue_id, + :patch_number, :fact_champion_picked_item_status, :fact_champion_picked_summoner_spell_status, :fact_champion_played_game_status @@ -11,6 +13,8 @@ defmodule LolAnalytics.Dimensions.Match.MatchSchema do schema "dim_match" do field :match_id, :string + field :patch_number, :string + field :queue_id, :integer field :fact_champion_picked_item_status, :integer field :fact_champion_picked_summoner_spell_status, :integer field :fact_champion_played_game_status, :integer diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/repo.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/repo.ex index a9e8321..8ee9096 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/repo.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_item/repo.ex @@ -31,12 +31,18 @@ defmodule LolAnalytics.Facts.ChampionPickedItem.Repo do :slot_number => integer() }) :: {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()} def insert(attrs) do - match = MatchRepo.get_or_create(attrs.match_id) _champion = ChampionRepo.get_or_create(attrs.champion_id) _player = PlayerRepo.get_or_create(attrs.puuid) _patch = PatchRepo.get_or_create(attrs.patch_number) _item_id = ItemRepo.get_or_create(attrs.item_id) + match = + MatchRepo.get_or_create(%{ + match_id: attrs.match_id, + patch_id: attrs.patch_id, + queue_id: attrs.queue_id + }) + prev = from(f in Schema, where: diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex index 1c964b1..2bd5439 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex @@ -22,12 +22,18 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo do :summoner_spell_id => String.t() }) :: any() def insert(attrs) do - match = MatchRepo.get_or_create(attrs.match_id) _champion = ChampionRepo.get_or_create(attrs.champion_id) _player = PlayerRepo.get_or_create(attrs.puuid) _spell = SummonerSpellRepo.get_or_create(attrs.summoner_spell_id) _patch = PatchRepo.get_or_create(attrs.patch_number) + match = + MatchRepo.get_or_create(%{ + match_id: attrs.match_id, + patch_id: attrs.patch_id, + queue_id: attrs.queue_id + }) + prev = from(f in Schema, where: diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_repo.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_repo.ex index a8d7882..c439c6c 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_repo.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_repo.ex @@ -10,10 +10,10 @@ defmodule LolAnalytics.Facts.ChampionPlayedGame.Repo do alias LoLAnalytics.Repo def insert(attrs) do - match = MatchRepo.get_or_create(attrs.match_id) _champion = ChampionRepo.get_or_create(attrs.champion_id) _player = PlayerRepo.get_or_create(attrs.puuid) _patch = PatchRepo.get_or_create(attrs.patch_number) + match = MatchRepo.get_or_create(attrs.match_id) prev = from(f in Schema, diff --git a/apps/lol_analytics/priv/repo/migrations/20240622161637_dim_match_queue_id.exs b/apps/lol_analytics/priv/repo/migrations/20240622161637_dim_match_queue_id.exs new file mode 100644 index 0000000..cfd1b76 --- /dev/null +++ b/apps/lol_analytics/priv/repo/migrations/20240622161637_dim_match_queue_id.exs @@ -0,0 +1,9 @@ +defmodule LoLAnalytics.Repo.Migrations.DimMatchQueueId do + use Ecto.Migration + + def change do + alter table "dim_match" do + add :queue_id, :integer + end + end +end diff --git a/apps/scrapper/lib/scrapper/processor/match_processor.ex b/apps/scrapper/lib/scrapper/processor/match_processor.ex index 23cada7..9e29135 100644 --- a/apps/scrapper/lib/scrapper/processor/match_processor.ex +++ b/apps/scrapper/lib/scrapper/processor/match_processor.ex @@ -58,6 +58,12 @@ defmodule Scrapper.Processor.MatchProcessor do "#{decoded_match.info.gameVersion}" ) + LolAnalytics.Dimensions.Match.MatchRepo.get_or_create(%{ + match_id: decoded_match.metadata.matchId, + patch_number: decoded_match.info.gameVersion, + queue_id: 420 + }) + _queue_id -> Storage.MatchStorage.S3MatchStorage.store_match(match_id, raw_match, "matches") end @@ -79,7 +85,7 @@ defmodule Scrapper.Processor.MatchProcessor do |> Enum.shuffle() |> Enum.take(2) |> Enum.each(fn participant_puuid -> - Scrapper.Queue.PlayerQueue.queue_puuid(participant_puuid) + Scrapper.Queue.PlayerQueue.enqueue_puuid(participant_puuid) end) end diff --git a/apps/scrapper/lib/scrapper/processor/player_processor.ex b/apps/scrapper/lib/scrapper/processor/player_processor.ex index 232e72d..cc70e3d 100644 --- a/apps/scrapper/lib/scrapper/processor/player_processor.ex +++ b/apps/scrapper/lib/scrapper/processor/player_processor.ex @@ -52,7 +52,7 @@ defmodule Scrapper.Processor.PlayerProcessor do { matches |> Enum.each(fn match_id -> - Scrapper.Queue.MatchQueue.queue_match(match_id) + Scrapper.Queue.MatchQueue.enqueue_match(match_id) end) }