All checks were successful
Build and Publish / build-release (push) Successful in 1m27s
26 lines
1.0 KiB
Elixir
26 lines
1.0 KiB
Elixir
defmodule PolicyServiceWeb.QueryHelpers do
|
|
@moduledoc false
|
|
|
|
alias OpenApiSpex.Schema
|
|
|
|
@filter_count 3
|
|
|
|
def flop(filter_fields, order_fields, other \\ []) do
|
|
[
|
|
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"]}}]
|
|
] ++ build_filter_params(filter_fields) ++ other
|
|
end
|
|
|
|
defp build_filter_params(fields) do
|
|
for i <- 0..(@filter_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 |