1 defmodule Pleroma.Filter do
3 import Ecto.{Changeset, Query}
4 alias Pleroma.{User, Repo, Activity}
7 belongs_to(:user, Pleroma.User)
8 field(:filter_id, :integer)
9 field(:hide, :boolean, default: false)
10 field(:whole_word, :boolean, default: true)
11 field(:phrase, :string)
12 field(:context, {:array, :string})
13 field(:expires_at, :utc_datetime)
18 def get(id, %{id: user_id} = _user) do
22 where: f.filter_id == ^id,
23 where: f.user_id == ^user_id
29 def get_filters(%Pleroma.User{id: user_id} = user) do
33 where: f.user_id == ^user_id
39 def create(%Pleroma.Filter{} = filter) do
43 def delete(%Pleroma.Filter{id: filter_key} = filter) when is_number(filter_key) do
47 def delete(%Pleroma.Filter{id: filter_key} = filter) when is_nil(filter_key) do
48 %Pleroma.Filter{id: id} = get(filter.filter_id, %{id: filter.user_id})
55 def update(%Pleroma.Filter{} = filter) do
56 destination = Map.from_struct(filter)
58 Pleroma.Filter.get(filter.filter_id, %{id: filter.user_id})
59 |> cast(destination, [:phrase, :context, :hide, :expires_at, :whole_word])