defmodule Pleroma.List do
use Ecto.Schema
import Ecto.{Changeset, Query}
- alias Pleroma.{User, Repo}
+ alias Pleroma.{User, Repo, Activity}
schema "lists" do
belongs_to(:user, Pleroma.User)
Repo.all(query)
end
- def get(%{id: user_id} = _user, id) do
+ def get(id, %{id: user_id} = _user) do
query =
from(
l in Pleroma.List,
end
def get_following(%Pleroma.List{following: following} = list) do
- q = from(
- u in User,
- where: u.follower_address in ^following
- )
+ q =
+ from(
+ u in User,
+ where: u.follower_address in ^following
+ )
+
{:ok, Repo.all(q)}
end
+ # Get lists the activity should be streamed to.
+ def get_lists_from_activity(%Activity{actor: ap_id}) do
+ actor = User.get_cached_by_ap_id(ap_id)
+
+ query =
+ from(
+ l in Pleroma.List,
+ where: fragment("? && ?", l.following, ^[actor.follower_address])
+ )
+
+ Repo.all(query)
+ end
+
def rename(%Pleroma.List{} = list, title) do
list
|> title_changeset(%{title: title})
Repo.insert(list)
end
- # TODO check that user is following followed
def follow(%Pleroma.List{following: following} = list, %User{} = followed) do
update_follows(list, %{following: Enum.uniq([followed.follower_address | following])})
end