Current section
Files
Jump to
Current section
Files
lib/api_brasil/data/bulk.ex
defmodule ApiBrasil.Data.Bulk do
@moduledoc """
Execução em lote: `POST /bulk/direct/{action}` e `POST /bulk/queue/{action}`.
`direct/4` executa o lote de forma síncrona e `queue/4` apenas o enfileira,
devolvendo o protocolo do processamento.
{:ok, _resultado} = ApiBrasil.Data.Bulk.direct(client, "cpf", %{"items" => items})
{:ok, _protocolo} = ApiBrasil.Data.Bulk.queue(client, "cpf", %{"items" => items})
"""
use ApiBrasil.Core.Service
@doc "Executa um lote de forma síncrona: `POST /bulk/direct/{action}`."
@spec direct(Client.t(), String.t(), term(), keyword()) :: result()
def direct(client, action, body \\ nil, opts \\ []) do
Service.post(client, "bulk/direct/#{Service.encode_path(action)}", body, opts)
end
@doc "Como `direct/4`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec direct!(Client.t(), String.t(), term(), keyword()) :: map()
def direct!(client, action, body \\ nil, opts \\ []) do
Service.unwrap!(direct(client, action, body, opts))
end
@doc "Enfileira um lote: `POST /bulk/queue/{action}`."
@spec queue(Client.t(), String.t(), term(), keyword()) :: result()
def queue(client, action, body \\ nil, opts \\ []) do
Service.post(client, "bulk/queue/#{Service.encode_path(action)}", body, opts)
end
@doc "Como `queue/4`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec queue!(Client.t(), String.t(), term(), keyword()) :: map()
def queue!(client, action, body \\ nil, opts \\ []) do
Service.unwrap!(queue(client, action, body, opts))
end
end