This commit is contained in:
32
lib/elixir_ai/data/data.ex
Normal file
32
lib/elixir_ai/data/data.ex
Normal file
@@ -0,0 +1,32 @@
|
||||
defmodule ElixirAi.Data do
|
||||
defmacro __using__(_opts) do
|
||||
quote do
|
||||
import ElixirAi.Data
|
||||
require Logger
|
||||
end
|
||||
end
|
||||
|
||||
defmacro broadcast_error(opts, do: block) do
|
||||
topic = Keyword.get(opts, :topic)
|
||||
build_with_db(block, topic)
|
||||
end
|
||||
|
||||
defp build_with_db(block, topic) do
|
||||
quote do
|
||||
try do
|
||||
unquote(block)
|
||||
rescue
|
||||
exception ->
|
||||
Logger.error("Database error: #{Exception.message(exception)}")
|
||||
|
||||
Phoenix.PubSub.broadcast(
|
||||
ElixirAi.PubSub,
|
||||
unquote(topic),
|
||||
{:db_error, Exception.message(exception)}
|
||||
)
|
||||
|
||||
{:error, :db_error}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user