This commit is contained in:
34
lib/provider_service/queries/provider_queries.ex
Normal file
34
lib/provider_service/queries/provider_queries.ex
Normal file
@@ -0,0 +1,34 @@
|
||||
defmodule ProviderService.Queries.ProviderQueries do
|
||||
alias ProviderService.Projections.Provider
|
||||
alias ProviderService.Repo
|
||||
|
||||
def list_providers(params \\ %{}) do
|
||||
Flop.validate_and_run(Provider, 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
|
||||
Reference in New Issue
Block a user