diff --git a/apps/lol_analytics/lib/lol_analytics/match/MatchRepo.ex b/apps/lol_analytics/lib/lol_analytics/match/MatchRepo.ex new file mode 100644 index 0000000..1c67409 --- /dev/null +++ b/apps/lol_analytics/lib/lol_analytics/match/MatchRepo.ex @@ -0,0 +1,25 @@ +defmodule LolAnalytics.Match.MatchRepo do + alias LolAnalytics.Match.MatchSchema + + import Ecto.Query + + @spec get_match(String.t()) :: %LolAnalytics.Match.MatchSchema{} + def get_match(match_id) do + query = from m in MatchSchema, where: m.match_id == ^match_id + + LoLAnalytics.Repo.one(query) + end + + @spec insert_match(String.t()) :: %LolAnalytics.Match.MatchSchema{} + def insert_match(match_id) do + MatchSchema.changeset(%MatchSchema{}, %{:match_id => match_id, :processed => false}) + |> LoLAnalytics.Repo.insert() + end + + @spec update_match(%LolAnalytics.Match.MatchSchema{}, term()) :: + %LolAnalytics.Match.MatchSchema{} + def update_match(match, attrs) do + match = MatchSchema.changeset(match, attrs) + LoLAnalytics.Repo.update(match) + end +end diff --git a/apps/lol_analytics/lib/lol_analytics/match/MatchSchema.ex b/apps/lol_analytics/lib/lol_analytics/match/MatchSchema.ex new file mode 100644 index 0000000..b4ca006 --- /dev/null +++ b/apps/lol_analytics/lib/lol_analytics/match/MatchSchema.ex @@ -0,0 +1,18 @@ +defmodule LolAnalytics.Match.MatchSchema do + use Ecto.Schema + import Ecto.Changeset + + schema "match" do + field :match_id, :string + field :processed, :boolean, default: false + + timestamps() + end + + def changeset(%__MODULE__{} = match, params \\ %{}) do + match + |> cast(params, [:match_id, :processed]) + |> validate_required([:match_id, :processed]) + end + +end diff --git a/apps/lol_analytics/priv/repo/migrations/20240502191221_match.exs b/apps/lol_analytics/priv/repo/migrations/20240502191221_match.exs new file mode 100644 index 0000000..98ba3f8 --- /dev/null +++ b/apps/lol_analytics/priv/repo/migrations/20240502191221_match.exs @@ -0,0 +1,13 @@ +defmodule LoLAnalytics.Repo.Migrations.Match do + use Ecto.Migration + + def change do + create table("match", id: false) do + add :match_id, :string, primary_key: true + add :processed, :boolean + timestamps() + end + + create index("match", [:processed]) + end +end