diff --git a/lib/safira/accounts.ex b/lib/safira/accounts.ex index 51ca03e7b..c4f3783e3 100644 --- a/lib/safira/accounts.ex +++ b/lib/safira/accounts.ex @@ -1030,24 +1030,6 @@ defmodule Safira.Accounts do Course.changeset(course, attrs) end - @doc """ - Gets a single credential associated to the given attendee. - - ## Examples - - iex> get_credential_of_attendee(%Attendee{}) - %Credential{} - - iex> get_credential_of_attendee!(%Attendee{}) - nil - - """ - def get_credential_of_attendee(%Attendee{} = attendee) do - Credential - |> where([c], c.attendee_id == ^attendee.id) - |> Repo.one() - end - def generate_credentials(count) do for _ <- 1..count do {:ok, credential} = create_credential(%{}) diff --git a/lib/safira/accounts/credential.ex b/lib/safira/accounts/credential.ex index ea429768e..40a36dcc1 100644 --- a/lib/safira/accounts/credential.ex +++ b/lib/safira/accounts/credential.ex @@ -14,6 +14,7 @@ defmodule Safira.Accounts.Credential do def changeset(credential, attrs) do credential |> cast(attrs, [:attendee_id]) + |> unique_constraint(:attendee_id) |> cast_assoc(:attendee) end end diff --git a/lib/safira_web/plugs/user_roles.ex b/lib/safira_web/plugs/user_roles.ex index c12f395f3..4530832c6 100644 --- a/lib/safira_web/plugs/user_roles.ex +++ b/lib/safira_web/plugs/user_roles.ex @@ -53,7 +53,7 @@ defmodule SafiraWeb.UserRoles do defp has_credential?(conn) do is_nil(conn.assigns.current_user.attendee) or - not is_nil(Accounts.get_credential_of_attendee(conn.assigns.current_user.attendee)) + Accounts.attendee_has_credential?(conn.assigns.current_user.attendee.id) end @doc """ diff --git a/priv/repo/migrations/20240919141626_create_credentials.exs b/priv/repo/migrations/20240919141626_create_credentials.exs index 8b5aeacf0..09b8361cb 100644 --- a/priv/repo/migrations/20240919141626_create_credentials.exs +++ b/priv/repo/migrations/20240919141626_create_credentials.exs @@ -9,6 +9,6 @@ defmodule Safira.Repo.Migrations.CreateCredentials do timestamps(type: :utc_datetime) end - create index(:credentials, [:attendee_id]) + create unique_index(:credentials, [:attendee_id]) end end