defmodule PostgrexPubsubMultiTenant.BroadcastIdMigration do @moduledoc """ A macro for applying mutation broadcast triggers to tables """ defmacro __using__(opts) do table_name = opts |> Map.new() |> Map.get(:table_name) prefix = opts |> Map.new() |> Map.get(:prefix, "public") columns = opts |> Map.new() |> Map.get(:columns) quote do use Ecto.Migration def up do PostgrexPubsubMultiTenant.IdStrategy.broadcast_mutation_for_table( unquote(table_name), unquote(prefix), unquote(columns) ) end def down do PostgrexPubsubMultiTenant.IdStrategy.delete_broadcast_trigger_for_table( unquote(table_name), unquote(prefix) ) end end end end