Current section
Files
Jump to
Current section
Files
lib/kafkaesque.ex
defmodule Kafkaesque do
@moduledoc """
Documentation for `Kafkaesque`.
"""
alias Kafkaesque.Message
@doc """
Publishes a message in the outbox
"""
@spec publish(Ecto.Repo.t(), String.t(), map()) :: {:ok, Message.t()} | {:error, atom()}
def publish(repo, topic, payload) do
topic
|> Message.new(payload)
|> repo.insert()
end
defmacro __using__(opts) do
{repo, _opts} = Keyword.pop!(opts, :repo)
quote do
def publish(topic, payload) do
Kafkaesque.publish(unquote(repo), topic, payload)
end
end
end
end