Magik.EctoEnum (Magik v0.9.0) View Source

EctoEnum helps to generate enum type and enum helper function.

You can define an enum module manually like this

defmodule MyEnum do
    def enum, do: ["value1", "value2", "value3"]
    def value1, do: "value1"
    def value2, do: "value2"
    def value3, do: "value3"
end

Now with EctoEnum you can do it with a few lines of code

defmodule MyEnum do
    use Magik.EctoEnum, ["value1", "value2", "value3"]
end

It still provides same functions with manual implemented module

Use different name and value

In some case, you want to use a different name instead of the same with value, you can pass a tuple like this

defmodule MyEnum do
  use Magik.EctoEnum, {name1: "Value 1", name2: "value 2"}
end

MyEnum.name1()
# => "Value 1"

Use in ecto schema

EctoEnum also defines a Type module that you can used directly in Ecto schema

defmodule Order do
  schema "orders do
    field :first_name, :string
    field :last_name, :string
    field :status, MyEnum.Type
  end
end

EctoEnum automatically validate value and only allow valid value