normalize query helpers
All checks were successful
Build and Publish / build-release (push) Successful in 1m27s

This commit is contained in:
2026-04-22 15:22:36 -05:00
parent 0b53afd832
commit b78a7fdf73

View File

@@ -6,22 +6,20 @@ defmodule PolicyServiceWeb.QueryHelpers do
@filter_count 3 @filter_count 3
def flop(filter_fields, order_fields, other \\ []) do def flop(filter_fields, order_fields, other \\ []) do
filter_params = build_filter_params(filter_fields, @filter_count)
[ [
page: [in: :query, schema: %Schema{type: :number, default: 1}], page: [in: :query, schema: %Schema{type: :number, default: 1}],
page_size: [in: :query, schema: %Schema{type: :number, default: 20}], page_size: [in: :query, schema: %Schema{type: :number, default: 20}],
"order_by[]": [in: :query, schema: %Schema{type: :array, items: %Schema{type: :string, enum: order_fields}}], order_by: [in: :query, schema: %Schema{type: :array, items: %Schema{type: :string, enum: order_fields}}],
"order_directions[]": [in: :query, schema: %Schema{type: :array, items: %Schema{type: :string, enum: ["asc", "desc"]}}] order_directions: [in: :query, schema: %Schema{type: :array, items: %Schema{type: :string, enum: ["asc", "desc"]}}]
] ++ filter_params ++ other ] ++ build_filter_params(filter_fields) ++ other
end end
defp build_filter_params(fields, count) do defp build_filter_params(fields) do
for i <- 0..(count - 1) do for i <- 0..(@filter_count - 1) do
[ [
{"filters[#{i}][field]", [in: :query, schema: %Schema{type: :string, enum: fields}]}, {:"filters_#{i}_field", [in: :query, schema: %Schema{type: :string, enum: fields}]},
{"filters[#{i}][op]", [in: :query, schema: %Schema{type: :string, enum: Flop.Filter.allowed_operators(:all)}]}, {:"filters_#{i}_op", [in: :query, schema: %Schema{type: :string, enum: Flop.Filter.allowed_operators(:all)}]},
{"filters[#{i}][value]", [in: :query, schema: %Schema{type: :string}]} {:"filters_#{i}_value", [in: :query, schema: %Schema{type: :string}]}
] ]
end |> List.flatten() end |> List.flatten()
end end