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