frenzy/lib/frenzy/rule.ex

33 lines
677 B
Elixir

defmodule Frenzy.Rule do
use Ecto.Schema
import Ecto.Changeset
schema "rules" do
field :mode, :string
field :property, :string
field :param, :string
field :weight, :integer
field :delete, :boolean, virtual: true
belongs_to :filter, Frenzy.Filter
timestamps()
end
@doc false
def changeset(rule, attrs) do
rule
|> cast(attrs, [:mode, :property, :param, :weight, :delete])
|> set_delete_action()
|> validate_required([:mode, :property, :param, :weight])
end
def set_delete_action(changeset) do
if get_change(changeset, :delete) do
%{changeset | action: :delete}
else
changeset
end
end
end