Magik.EctoEnum (Magik v0.11.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

Use Enum integer

You can specify type of column in database, default is string

defmodule MyEnum do
  use Magik.EctoEnum, enum: [name1: 1, name2: 2], type: :integer
end