fix: inconsistent sorting
on components that were inserted in quick succession
This commit is contained in:
@@ -289,16 +289,16 @@ defmodule ComponentsElixir.Inventory do
|
|||||||
|
|
||||||
defp apply_component_sorting(query, opts) do
|
defp apply_component_sorting(query, opts) do
|
||||||
case Keyword.get(opts, :sort_criteria, "name_asc") do
|
case Keyword.get(opts, :sort_criteria, "name_asc") do
|
||||||
"name_asc" -> order_by(query, [c], asc: c.name)
|
"name_asc" -> order_by(query, [c], [asc: c.name, asc: c.id])
|
||||||
"name_desc" -> order_by(query, [c], desc: c.name)
|
"name_desc" -> order_by(query, [c], [desc: c.name, asc: c.id])
|
||||||
"inserted_at_asc" -> order_by(query, [c], asc: c.inserted_at)
|
"inserted_at_asc" -> order_by(query, [c], [asc: c.inserted_at, asc: c.id])
|
||||||
"inserted_at_desc" -> order_by(query, [c], desc: c.inserted_at)
|
"inserted_at_desc" -> order_by(query, [c], [desc: c.inserted_at, asc: c.id])
|
||||||
"updated_at_asc" -> order_by(query, [c], asc: c.updated_at)
|
"updated_at_asc" -> order_by(query, [c], [asc: c.updated_at, asc: c.id])
|
||||||
"updated_at_desc" -> order_by(query, [c], desc: c.updated_at)
|
"updated_at_desc" -> order_by(query, [c], [desc: c.updated_at, asc: c.id])
|
||||||
"count_asc" -> order_by(query, [c], asc: c.count)
|
"count_asc" -> order_by(query, [c], [asc: c.count, asc: c.id])
|
||||||
"count_desc" -> order_by(query, [c], desc: c.count)
|
"count_desc" -> order_by(query, [c], [desc: c.count, asc: c.id])
|
||||||
# Default fallback
|
# Default fallback
|
||||||
_ -> order_by(query, [c], asc: c.name)
|
_ -> order_by(query, [c], [asc: c.name, asc: c.id])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ defmodule ComponentsElixir.Inventory.Category do
|
|||||||
has_many :children, Category, foreign_key: :parent_id
|
has_many :children, Category, foreign_key: :parent_id
|
||||||
has_many :components, Component
|
has_many :components, Component
|
||||||
|
|
||||||
timestamps()
|
timestamps(type: :naive_datetime_usec)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc false
|
@doc false
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ defmodule ComponentsElixir.Inventory.Component do
|
|||||||
belongs_to :category, Category
|
belongs_to :category, Category
|
||||||
belongs_to :storage_location, StorageLocation
|
belongs_to :storage_location, StorageLocation
|
||||||
|
|
||||||
timestamps()
|
timestamps(type: :naive_datetime_usec)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc false
|
@doc false
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ defmodule ComponentsElixir.Inventory.StorageLocation do
|
|||||||
has_many :children, StorageLocation, foreign_key: :parent_id
|
has_many :children, StorageLocation, foreign_key: :parent_id
|
||||||
has_many :components, Component
|
has_many :components, Component
|
||||||
|
|
||||||
timestamps()
|
timestamps(type: :naive_datetime_usec)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc false
|
@doc false
|
||||||
|
|||||||
Reference in New Issue
Block a user