diff options
author | kaniini <nenolod@gmail.com> | 2018-09-03 12:33:36 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2018-09-03 12:33:36 +0000 |
commit | 1c9e539b47ff594d75c9548a04e64cb0c61cff8c (patch) | |
tree | 26936ac9208ea802e17c78e31689480ff004cd3f /lib/pleroma/filter.ex | |
parent | 8fdddc255ce4fea3060904d27634022718597133 (diff) | |
parent | 6973b77e9462475361772907ddd690a960041b64 (diff) | |
download | pleroma-1c9e539b47ff594d75c9548a04e64cb0c61cff8c.tar.gz |
Merge branch 'feature/mastodon_api_2.4.x' into 'develop'
Add/Fix Mastodon endpoints for 2.4.3 compatibility
See merge request pleroma/pleroma!266
Diffstat (limited to 'lib/pleroma/filter.ex')
-rw-r--r-- | lib/pleroma/filter.ex | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/pleroma/filter.ex b/lib/pleroma/filter.ex new file mode 100644 index 000000000..fe904df3a --- /dev/null +++ b/lib/pleroma/filter.ex @@ -0,0 +1,62 @@ +defmodule Pleroma.Filter do + use Ecto.Schema + import Ecto.{Changeset, Query} + alias Pleroma.{User, Repo, Activity} + + schema "filters" do + belongs_to(:user, Pleroma.User) + field(:filter_id, :integer) + field(:hide, :boolean, default: false) + field(:whole_word, :boolean, default: true) + field(:phrase, :string) + field(:context, {:array, :string}) + field(:expires_at, :utc_datetime) + + timestamps() + end + + def get(id, %{id: user_id} = _user) do + query = + from( + f in Pleroma.Filter, + where: f.filter_id == ^id, + where: f.user_id == ^user_id + ) + + Repo.one(query) + end + + def get_filters(%Pleroma.User{id: user_id} = user) do + query = + from( + f in Pleroma.Filter, + where: f.user_id == ^user_id + ) + + Repo.all(query) + end + + def create(%Pleroma.Filter{} = filter) do + Repo.insert(filter) + end + + def delete(%Pleroma.Filter{id: filter_key} = filter) when is_number(filter_key) do + Repo.delete(filter) + end + + def delete(%Pleroma.Filter{id: filter_key} = filter) when is_nil(filter_key) do + %Pleroma.Filter{id: id} = get(filter.filter_id, %{id: filter.user_id}) + + filter + |> Map.put(:id, id) + |> Repo.delete() + end + + def update(%Pleroma.Filter{} = filter) do + destination = Map.from_struct(filter) + + Pleroma.Filter.get(filter.filter_id, %{id: filter.user_id}) + |> cast(destination, [:phrase, :context, :hide, :expires_at, :whole_word]) + |> Repo.update() + end +end |