1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.ThreadMute do
7 alias Pleroma.{Repo, User, ThreadMute}
10 schema "thread_mutes" do
11 belongs_to(:user, User, type: Pleroma.FlakeId)
12 field(:context, :string)
15 def changeset(mute, params \\ %{}) do
17 |> Ecto.Changeset.cast(params, [:user_id, :context])
18 |> Ecto.Changeset.foreign_key_constraint(:user_id)
19 |> Ecto.Changeset.unique_constraint(:user_id, name: :unique_index)
22 def query(user_id, context) do
23 user_id = Pleroma.FlakeId.from_string(user_id)
26 |> Ecto.Query.where(user_id: ^user_id)
27 |> Ecto.Query.where(context: ^context)
30 def add_mute(user_id, context) do
32 |> changeset(%{user_id: user_id, context: context})
36 def remove_mute(user_id, context) do
37 query(user_id, context)
41 def check_muted(user_id, context) do
42 query(user_id, context)