Put objects in inserted activties into the db.
authorRoger Braun <roger@rogerbraun.net>
Thu, 30 Mar 2017 16:07:01 +0000 (18:07 +0200)
committerRoger Braun <roger@rogerbraun.net>
Thu, 30 Mar 2017 16:07:29 +0000 (18:07 +0200)
lib/pleroma/object.ex
lib/pleroma/web/activity_pub/activity_pub.ex
test/web/activity_pub/activity_pub_test.exs

index a31f40d0745e5f2136a836afbbbf766dc33798e0..f932034d7b99b2b9b8b0a4c90054fba43f71fc7f 100644 (file)
@@ -1,9 +1,16 @@
 defmodule Pleroma.Object do
   use Ecto.Schema
+  alias Pleroma.{Repo, Object}
+  import Ecto.Query
 
   schema "objects" do
     field :data, :map
 
     timestamps()
   end
+
+  def get_by_ap_id(ap_id) do
+    Repo.one(from object in Object,
+      where: fragment("? @> ?", object.data, ^%{id: ap_id}))
+  end
 end
index 6c8250de86f08923318cae7a15cf77f7952bfa30..b01def6939937e59d6ff96747e2943f4631bb3fe 100644 (file)
@@ -8,6 +8,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
 
     map = if map["object"] do
       object = Map.put_new_lazy(map["object"], "id", &generate_object_id/0)
+      Repo.insert!(%Object{data: object})
       Map.put(map, "object", object)
     else
       map
index 0e778d8877e091a75b1463ab182e52aa28ba3b0c..2c6f67621d23a6220e4c494e65bbf9d3284e1da5 100644 (file)
@@ -25,7 +25,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
       assert activity.data["id"] == given_id
     end
 
-    test "adds an id to a given object if it lacks one" do
+    test "adds an id to a given object if it lacks one and inserts it to the object database" do
       data = %{
         "object" => %{
           "ok" => true
@@ -34,6 +34,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
 
       {:ok, %Activity{} = activity} = ActivityPub.insert(data)
       assert is_binary(activity.data["object"]["id"])
+      assert %Object{} = Object.get_by_ap_id(activity.data["object"]["id"])
     end
   end