From f79f0db8625370efbf8cab9034e8bb207f7d66e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Girona=20Arias?= Date: Thu, 13 Jun 2024 15:36:57 +0200 Subject: [PATCH] create behaviour for fact processor --- .../fact_processor.ex | 4 ++++ .../facts/champion_picked_summoner_spell/repo.ex | 13 ++++--------- .../facts/champion_played_game/fact_processor.ex | 4 ++++ .../lib/lol_analytics/facts/fact_behaviour.ex | 3 +++ 4 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 apps/lol_analytics/lib/lol_analytics/facts/fact_behaviour.ex diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex index 80a193d..70f3638 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/fact_processor.ex @@ -1,8 +1,12 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.FactProcessor do + @behaviour LolAnalytics.Facts.FactBehaviour + require Logger alias LolAnalytics.Facts.ChampionPickedSummonerSpell + @impl true + @spec process_game_at_url(String.t()) :: any() def process_game_at_url(url) do data = HTTPoison.get!(url) process_game_data(data.body) 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 c86b7f8..b354701 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 @@ -37,15 +37,14 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo do ) |> Repo.one() - changeset = Schema.changeset(prev || %Schema{}, attrs) - - Repo.insert_or_update(changeset) + Schema.changeset(prev || %Schema{}, attrs) + |> Repo.insert_or_update() end - def get_champion_picked_summoners(championId, team_position \\ "MIDDLE") do + def get_champion_picked_summoners(champion_id, team_position \\ "MIDDLE") do query = from f in Schema, - where: f.champion_id == ^championId and f.team_position == ^team_position, + where: f.champion_id == ^champion_id and f.team_position == ^team_position, join: c in ChampionSchema, on: c.champion_id == f.champion_id, join: s in SummonerSpellSchema, @@ -59,10 +58,8 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo do )", f.is_win ), - id: f.champion_id, spell_id: f.summoner_spell_id, metadata: s.metadata, - champion_name: c.name, champion_id: c.champion_id, team_position: f.team_position, total_games: count("*") @@ -71,8 +68,6 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo do f.champion_id, f.summoner_spell_id, s.metadata, - c.image, - c.name, c.champion_id, f.team_position ] diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex index 1f291ac..f11a471 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/fact_processor.ex @@ -1,6 +1,10 @@ defmodule LolAnalytics.Facts.ChampionPlayedGame.FactProcessor do require Logger + @behaviour LolAnalytics.Facts.FactBehaviour + + @impl true + @spec process_game_at_url(String.t()) :: none() def process_game_at_url(path) do data = HTTPoison.get!(path) process_game_data(data.body) diff --git a/apps/lol_analytics/lib/lol_analytics/facts/fact_behaviour.ex b/apps/lol_analytics/lib/lol_analytics/facts/fact_behaviour.ex new file mode 100644 index 0000000..157e003 --- /dev/null +++ b/apps/lol_analytics/lib/lol_analytics/facts/fact_behaviour.ex @@ -0,0 +1,3 @@ +defmodule LolAnalytics.Facts.FactBehaviour do + @callback process_game_at_url(String.t()) :: any() +end