Browse Source

Put objects in inserted activties into the db.

tags/v0.9.9
Roger Braun 7 years ago
parent
commit
6aa1523bb3
3 changed files with 10 additions and 1 deletions
  1. +7
    -0
      lib/pleroma/object.ex
  2. +1
    -0
      lib/pleroma/web/activity_pub/activity_pub.ex
  3. +2
    -1
      test/web/activity_pub/activity_pub_test.exs

+ 7
- 0
lib/pleroma/object.ex View 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

+ 1
- 0
lib/pleroma/web/activity_pub/activity_pub.ex View 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


+ 2
- 1
test/web/activity_pub/activity_pub_test.exs View 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



Loading…
Cancel
Save