diff --git a/apps/lol_analytics/lib/lol_analytics/analyzer/champion_analyzer.ex b/apps/lol_analytics/lib/lol_analytics/analyzer/champion_analyzer.ex index aeedcb2..dbcb534 100644 --- a/apps/lol_analytics/lib/lol_analytics/analyzer/champion_analyzer.ex +++ b/apps/lol_analytics/lib/lol_analytics/analyzer/champion_analyzer.ex @@ -13,8 +13,8 @@ defmodule LolAnalytics.Analyzer.ChampionAnalyzer do @doc """ iex> LolAnalytics.Analyzer.ChampionAnalyzer.analyze(:url, "http://localhost:9000/ranked/14.9.580.2108/EUW1_6923309745.json") """ + @spec analyze(any(), any()) :: none() @impl true - @spec analyze(atom(), String.t()) :: :ok def analyze(:url, path) do data = HTTPoison.get!(path) analyze(:data, data.body) @@ -22,7 +22,6 @@ defmodule LolAnalytics.Analyzer.ChampionAnalyzer do end @impl true - @spec analyze(atom(), any()) :: list(LoLAPI.Model.Participant.t()) def analyze(:data, data) do decoded_match = Poison.decode!(data, as: %LoLAPI.Model.MatchResponse{}) participants = decoded_match.info.participants 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 new file mode 100644 index 0000000..c431962 --- /dev/null +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_repo.ex @@ -0,0 +1,3 @@ +defmodule LolAnalytics.Facts.ChampionPlayedGame.ChampionPlayedGameRepo do + +end diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_schema.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_schema.ex new file mode 100644 index 0000000..3595cdc --- /dev/null +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_played_game/champion_played_game_schema.ex @@ -0,0 +1,11 @@ +defmodule LolAnalytics.Facts.ChampionPlayedGame.ChampionPlayedGameSchema do + use Ecto.Schema + + schema "fact_champion_played_game" do + field :champion_id, :integer + field :match_id, :integer + field :is_win, :boolean + field :game_length_seconds, :integer + field :queue_id, :integer + end +end diff --git a/apps/lol_analytics/priv/repo/migrations/20240526160430_analytics_tables.exs b/apps/lol_analytics/priv/repo/migrations/20240526160430_analytics_tables.exs new file mode 100644 index 0000000..894e6ab --- /dev/null +++ b/apps/lol_analytics/priv/repo/migrations/20240526160430_analytics_tables.exs @@ -0,0 +1,51 @@ +defmodule LoLAnalytics.Repo.Migrations.AnalyticsTables do + use Ecto.Migration + + def change do + create table("dom_champion") do + add :champion_id, :integer, primary_key: true + timestamps() + end + + create table("dom_match") do + add :match_id, :integer, primary_key: true + timestamps() + end + + create index("dom_match", [:match_id], unique: true) + + create table("dom_patch") do + add :patch_number, :string, primary_key: true + timestamps() + end + + create index("dom_patch", [:patch_number], unique: true) + + create table("dom_item") do + add :item_id, :integer, primary_key: true + timestamps() + end + + create index("dom_item", [:item_id], unique: true) + + create table("dom_summoner_spell") do + add :spell_id, :integer, primary_key: true + timestamps() + end + + create index("dom_summoner_spell", [:spell_id], unique: true) + + create table("fact_champion_played_game") do + add :champion_id, references("dom_champion", with: [champion_id: :champion_id]), + primary_key: true + + add :match_id, references("dom_match", with: [match_id: :match_id]) + add :is_win, :boolean + add :game_length_seconds, :integer + add :queue_id, :integer + timestamps() + end + + create index("fact_champion_played_game", [:id, :champion_id, :queue_id]) + end +end