Files
policy-service/lib/policy_service_web/query_helpers.ex
HaimKortovich 0b53afd832
Some checks failed
Build and Publish / build-release (push) Failing after 37s
make query helpers default with flop format
2026-04-22 14:53:49 -05:00

28 lines
1.1 KiB
Elixir

defmodule PolicyServiceWeb.QueryHelpers do
@moduledoc false
alias OpenApiSpex.Schema
@filter_count 3
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_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_directions[]": [in: :query, schema: %Schema{type: :array, items: %Schema{type: :string, enum: ["asc", "desc"]}}]
] ++ filter_params ++ other
end
defp build_filter_params(fields, count) do
for i <- 0..(count - 1) do
[
{"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}][value]", [in: :query, schema: %Schema{type: :string}]}
]
end |> List.flatten()
end
end