Packages

Bombadil - You know, for (PostgreSQL) search

Current section

Files

Jump to
bombadil lib bombadil ecto schema dynamic_schema.ex
Raw

lib/bombadil/ecto/schema/dynamic_schema.ex

defmodule Bombadil.Ecto.Schema.DynamicSchema do
@moduledoc false
@jsonb_field [{:payload, :map}]
@fields Application.get_env(:bombadil, :additional_fields, [])
@table_name Application.get_env(:bombadil, :table_name, "search_index")
defmacro __using__(_) do
quote do
use Ecto.Schema
@derive {Jason.Encoder, only: Keyword.keys(unquote(@fields ++ @jsonb_field))}
schema unquote(@table_name) do
unquote(
for {name, type} <- @fields ++ @jsonb_field do
quote do
field(unquote(name), unquote(type))
end
end
)
end
end
end
end