我在编译器中遇到了奇怪的问题-尽管我在同一模块中调用它,但它声称我的宏未使用。它可能与在where语句中使用它有关,但是最后我认为这应该不是问题。大家有什么想法吗? ;)
defmodule Module do
defmacrop coalesce(left, right) do
quote do
fragment("COALESCE(?, ?)", unquote(left), unquote(right))
end
end
def remove(timestamp \\ Timex.now) do
Schema
|> where([p], coalesce(p.time, ^timestamp) < ^timestamp)
|> Repo.delete_all(returning: select_all(Schema))
end
end