use strict context boundaries and remove all n+1 queries
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:
@@ -9,8 +9,8 @@ defmodule Cannery.Ammo.AmmoGroup do
|
||||
use Ecto.Schema
|
||||
import CanneryWeb.Gettext
|
||||
import Ecto.Changeset
|
||||
alias Cannery.Ammo.{AmmoGroup, AmmoType}
|
||||
alias Cannery.{Accounts.User, ActivityLog.ShotGroup, Containers, Containers.Container}
|
||||
alias Cannery.Ammo.AmmoType
|
||||
alias Cannery.{Accounts.User, Containers, Containers.Container}
|
||||
alias Ecto.{Changeset, UUID}
|
||||
|
||||
@derive {Jason.Encoder,
|
||||
@@ -33,15 +33,13 @@ defmodule Cannery.Ammo.AmmoGroup do
|
||||
field :purchased_on, :date
|
||||
|
||||
belongs_to :ammo_type, AmmoType
|
||||
belongs_to :container, Container
|
||||
belongs_to :user, User
|
||||
|
||||
has_many :shot_groups, ShotGroup
|
||||
field :container_id, :binary_id
|
||||
field :user_id, :binary_id
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@type t :: %AmmoGroup{
|
||||
@type t :: %__MODULE__{
|
||||
id: id(),
|
||||
count: integer,
|
||||
notes: String.t() | nil,
|
||||
@@ -50,14 +48,12 @@ defmodule Cannery.Ammo.AmmoGroup do
|
||||
purchased_on: Date.t(),
|
||||
ammo_type: AmmoType.t() | nil,
|
||||
ammo_type_id: AmmoType.id(),
|
||||
container: Container.t() | nil,
|
||||
container_id: Container.id(),
|
||||
user: User.t() | nil,
|
||||
user_id: User.id(),
|
||||
inserted_at: NaiveDateTime.t(),
|
||||
updated_at: NaiveDateTime.t()
|
||||
}
|
||||
@type new_ammo_group :: %AmmoGroup{}
|
||||
@type new_ammo_group :: %__MODULE__{}
|
||||
@type id :: UUID.t()
|
||||
@type changeset :: Changeset.t(t() | new_ammo_group())
|
||||
|
||||
@@ -76,8 +72,7 @@ defmodule Cannery.Ammo.AmmoGroup do
|
||||
%User{id: user_id},
|
||||
attrs
|
||||
)
|
||||
when not (ammo_type_id |> is_nil()) and not (container_id |> is_nil()) and
|
||||
not (user_id |> is_nil()) do
|
||||
when is_binary(ammo_type_id) and is_binary(container_id) and is_binary(user_id) do
|
||||
ammo_group
|
||||
|> change(ammo_type_id: ammo_type_id)
|
||||
|> change(user_id: user_id)
|
||||
|
||||
@@ -8,7 +8,7 @@ defmodule Cannery.Ammo.AmmoType do
|
||||
use Ecto.Schema
|
||||
import Ecto.Changeset
|
||||
alias Cannery.Accounts.User
|
||||
alias Cannery.Ammo.{AmmoGroup, AmmoType}
|
||||
alias Cannery.Ammo.AmmoGroup
|
||||
alias Ecto.{Changeset, UUID}
|
||||
|
||||
@derive {Jason.Encoder,
|
||||
@@ -64,14 +64,14 @@ defmodule Cannery.Ammo.AmmoType do
|
||||
field :manufacturer, :string
|
||||
field :upc, :string
|
||||
|
||||
belongs_to :user, User
|
||||
field :user_id, :binary_id
|
||||
|
||||
has_many :ammo_groups, AmmoGroup
|
||||
|
||||
timestamps()
|
||||
end
|
||||
|
||||
@type t :: %AmmoType{
|
||||
@type t :: %__MODULE__{
|
||||
id: id(),
|
||||
name: String.t(),
|
||||
desc: String.t() | nil,
|
||||
@@ -95,12 +95,11 @@ defmodule Cannery.Ammo.AmmoType do
|
||||
manufacturer: String.t() | nil,
|
||||
upc: String.t() | nil,
|
||||
user_id: User.id(),
|
||||
user: User.t() | nil,
|
||||
ammo_groups: [AmmoGroup.t()] | nil,
|
||||
inserted_at: NaiveDateTime.t(),
|
||||
updated_at: NaiveDateTime.t()
|
||||
}
|
||||
@type new_ammo_type :: %AmmoType{}
|
||||
@type new_ammo_type :: %__MODULE__{}
|
||||
@type id :: UUID.t()
|
||||
@type changeset :: Changeset.t(t() | new_ammo_type())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user