make query helpers default with flop format
Some checks failed
Build and Publish / build-release (push) Failing after 37s

This commit is contained in:
2026-04-22 14:53:49 -05:00
parent 4383080696
commit 0b53afd832

View File

@@ -3,31 +3,26 @@ defmodule PolicyServiceWeb.QueryHelpers do
alias OpenApiSpex.Schema alias OpenApiSpex.Schema
@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)
[ [
filters: [in: :query, schema: filters(filter_fields)],
order_by: [in: :query, schema: order_by(order_fields)],
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}],
] ++ other "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"]}}]
] ++ filter_params ++ other
end end
defp filters(fields) do defp build_filter_params(fields, count) do
%Schema{ for i <- 0..(count - 1) do
type: :array, [
items: %Schema{ {"filters[#{i}][field]", [in: :query, schema: %Schema{type: :string, enum: fields}]},
type: :object, {"filters[#{i}][op]", [in: :query, schema: %Schema{type: :string, enum: Flop.Filter.allowed_operators(:all)}]},
properties: %{ {"filters[#{i}][value]", [in: :query, schema: %Schema{type: :string}]}
field: %Schema{type: :string, enum: fields}, ]
value: %Schema{type: :any}, end |> List.flatten()
op: %Schema{type: :string, enum: Flop.Filter.allowed_operators(:all)}
},
required: [:field, :value]
}
}
end
defp order_by(fields) do
%Schema{type: :array, items: %Schema{type: :string, enum: fields}}
end end
end end