All checks were successful
Build and Publish / build-release (push) Successful in 1m30s
37 lines
1005 B
Elixir
37 lines
1005 B
Elixir
defmodule ProviderService.Queries.ProviderQueries do
|
|
import Ecto.Query
|
|
alias ProviderService.Projections.Provider
|
|
alias ProviderService.Repo
|
|
|
|
def list_providers(params \\ %{}) do
|
|
base = from(p in Provider)
|
|
Flop.validate_and_run(base, params, for: Provider)
|
|
end
|
|
|
|
def get_provider(provider_id) do
|
|
case Repo.get(Provider, provider_id) do
|
|
nil -> {:error, :not_found}
|
|
provider -> {:ok, provider}
|
|
end
|
|
end
|
|
|
|
def get_active_template(provider_id, policy_type) do
|
|
with {:ok, provider} <- get_provider(provider_id) do
|
|
default_id = Map.get(provider.default_templates, policy_type)
|
|
templates = Map.get(provider.templates, policy_type, [])
|
|
|
|
result =
|
|
if default_id do
|
|
Enum.find(templates, &(&1["template_id"] == default_id))
|
|
else
|
|
Enum.find(templates, &(&1["active"] == true))
|
|
end
|
|
|
|
case result do
|
|
nil -> {:error, :no_active_template}
|
|
template -> {:ok, template}
|
|
end
|
|
end
|
|
end
|
|
end
|