frenzy/lib/frenzy/filter.ex

34 lines
822 B
Elixir

defmodule Frenzy.Filter do
use Ecto.Schema
import Ecto.Changeset
schema "filters" do
field :mode, :string
field :score, :integer
belongs_to :feed, Frenzy.Feed
has_many :rules, Frenzy.Rule, on_delete: :delete_all
timestamps()
end
@type t() :: %__MODULE__{
__meta__: Ecto.Schema.Metadata.t(),
id: integer() | nil,
mode: String.t(),
score: integer(),
feed: Frenzy.Feed.t() | Ecto.Association.NotLoaded.t(),
rules: [Frenzy.Rule.t()] | Ecto.Association.NotLoaded.t(),
inserted_at: NaiveDateTime.t(),
updated_at: NaiveDateTime.t()
}
@doc false
def changeset(filter, attrs) do
filter
|> cast(attrs, [:mode, :score])
|> cast_assoc(:rules)
|> validate_required([:mode, :score])
end
end