fix n+1 queries with invite card
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@ -109,6 +109,19 @@ defmodule Memex.Accounts.Invites do
|
||||
)
|
||||
end
|
||||
|
||||
@spec get_use_counts([Invite.t()], User.t()) :: %{Invite.id() => non_neg_integer()}
|
||||
def get_use_counts(invites, %User{role: :admin}) do
|
||||
invite_ids = invites |> Enum.map(fn %{id: invite_id} -> invite_id end)
|
||||
|
||||
Repo.all(
|
||||
from u in User,
|
||||
where: u.invite_id in ^invite_ids,
|
||||
group_by: u.invite_id,
|
||||
select: {u.invite_id, count(u.id)}
|
||||
)
|
||||
|> Map.new()
|
||||
end
|
||||
|
||||
@spec decrement_invite_changeset(Invite.t()) :: Invite.changeset()
|
||||
defp decrement_invite_changeset(%Invite{uses_left: nil} = invite) do
|
||||
invite |> Invite.update_changeset(%{})
|
||||
|
Reference in New Issue
Block a user