Packages

Old version of AvroEx for legacy support

Current section

Files

Jump to
avro_ex_v0 lib avro_ex schema enum.ex
Raw

lib/avro_ex/schema/enum.ex

defmodule AvroExV0.Schema.Enum do
use Ecto.Schema
require AvroExV0.Schema.Macros, as: SchemaMacros
alias AvroExV0.Schema
alias AvroExV0.Schema.Context
import Ecto.Changeset
@primary_key false
@optional_fields [:aliases, :doc, :metadata, :namespace]
@required_fields [:name, :symbols]
embedded_schema do
field(:aliases, {:array, :string}, default: [])
field(:doc, :string)
field(:metadata, :map, default: %{})
field(:name, :string)
field(:namespace, :string)
field(:qualified_names, {:array, :string}, default: [])
field(:symbols, {:array, :string})
end
@type full_name :: String.t()
@type t :: %__MODULE__{
aliases: [Schema.alias()],
doc: Schema.doc(),
metadata: %{String.t() => String.t()},
name: Schema.name(),
namespace: Schema.namespace(),
symbols: [String.t()]
}
SchemaMacros.cast_schema(
data_fields: [:aliases, :doc, :name, :namespace, :qualified_names, :symbols]
)
def changeset(%__MODULE__{} = struct, params) do
struct
|> cast(params, @optional_fields ++ @required_fields)
|> validate_required(@required_fields)
end
def match?(%__MODULE__{symbols: symbols}, %Context{}, data) when is_binary(data) do
data in symbols
end
def match?(_, _, _), do: false
end