feat(elixir): robust sort in component list
This commit is contained in:
@@ -266,7 +266,7 @@ defmodule ComponentsElixir.Inventory do
|
||||
def list_components(opts \\ []) do
|
||||
Component
|
||||
|> apply_component_filters(opts)
|
||||
|> order_by([c], [asc: c.name])
|
||||
|> apply_component_sorting(opts)
|
||||
|> preload([:category, :storage_location])
|
||||
|> Repo.all()
|
||||
end
|
||||
@@ -292,6 +292,20 @@ defmodule ComponentsElixir.Inventory do
|
||||
end)
|
||||
end
|
||||
|
||||
defp apply_component_sorting(query, opts) do
|
||||
case Keyword.get(opts, :sort_criteria, "name_asc") do
|
||||
"name_asc" -> order_by(query, [c], [asc: c.name])
|
||||
"name_desc" -> order_by(query, [c], [desc: c.name])
|
||||
"inserted_at_asc" -> order_by(query, [c], [asc: c.inserted_at])
|
||||
"inserted_at_desc" -> order_by(query, [c], [desc: c.inserted_at])
|
||||
"updated_at_asc" -> order_by(query, [c], [asc: c.updated_at])
|
||||
"updated_at_desc" -> order_by(query, [c], [desc: c.updated_at])
|
||||
"count_asc" -> order_by(query, [c], [asc: c.count])
|
||||
"count_desc" -> order_by(query, [c], [desc: c.count])
|
||||
_ -> order_by(query, [c], [asc: c.name]) # Default fallback
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets a single component.
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user