Merge branch 'develop' of ssh.gitgud.io:lambadalambda/pleroma into feature/unfollow...
[akkoma] / lib / pleroma / web / activity_pub / activity_pub.ex
index 0d3360ee187c4773909748e76aef552eef050d1c..5937ec88cf6e69189f1e8e22ea242b92ad2444f1 100644 (file)
@@ -133,6 +133,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
       query
     end
 
+    query = if opts["actor_id"] do
+      from activity in query,
+        where: fragment("? @> ?", activity.data, ^%{actor: opts["actor_id"]})
+    else
+      query
+    end
+
     Repo.all(query)
     |> Enum.reverse
   end
@@ -167,7 +174,17 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
     Repo.all(query)
   end
 
-  def upload(%Plug.Upload{} = file) do
+  def fetch_latest_follow(%User{ap_id: follower_id},
+                          %User{ap_id: followed_id}) do
+    query = from activity in Activity,
+      where: fragment("? @> ?", activity.data, ^%{type: "Follow", actor: follower_id,
+                                                  object: followed_id}),
+      order_by: [desc: :inserted_at],
+      limit: 1
+    Repo.one(query)
+  end
+
+  def upload(file) do
     data = Upload.store(file)
     Repo.insert(%Object{data: data})
   end