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]}}