Put objects in inserted activties into the db.

This commit is contained in:
Roger Braun 2017-03-30 18:07:01 +02:00
parent 40eb0e4c24
commit 6aa1523bb3
3 changed files with 10 additions and 1 deletions

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

View file

@ -8,6 +8,7 @@ def insert(map) when is_map(map) 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

View file

@ -25,7 +25,7 @@ test "inserts a given map into the activity database, giving it an id if it has
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 @@ test "adds an id to a given object if it lacks one" 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