ecto_bitfield v0.1.0 EctoBitfield

Provides macro to support Bitfield datatype with Ecto

defmodule Deal do
  use Ecto.Schema

  import EctoBitfield

  # takes in a list or a keyword list for explicitly setting the mappings
  defbitfield ValidDays, [:sunday, :monday, :tuesday, :wednesday, :thursday, :friday, :saturday]

  schema "deals" do
    field :valid_days, ValidDays
  end
end

To read::

query = from d in Deals, where: d.valid_days == ^[:sunday, :saturday]
# %Ecto.Queryable{...}

deal = Repo.one(query)
# %Deal{..., valid_days: [:sunday, :saturday]}

To write:

changeset = Ecto.Changeset.cast(deal, %{valid_days: [:monday, :tuesday]}, [:valid_days])
# %Ecto.Changeset{...}

Repo.update(changeset)
# {:ok, %Deal{..., valid_days: [:monday, :tuesday]}}

Link to this section Summary

Link to this section Functions

Link to this macro defbitfield(module, enums) (macro)