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 defmodule Pleroma.Object do
use Ecto.Schema use Ecto.Schema
alias Pleroma.{Repo, Object}
import Ecto.Query
schema "objects" do schema "objects" do
field :data, :map field :data, :map
timestamps() timestamps()
end end
def get_by_ap_id(ap_id) do
Repo.one(from object in Object,
where: fragment("? @> ?", object.data, ^%{id: ap_id}))
end
end end

View file

@ -8,6 +8,7 @@ def insert(map) when is_map(map) do
map = if map["object"] do map = if map["object"] do
object = Map.put_new_lazy(map["object"], "id", &generate_object_id/0) object = Map.put_new_lazy(map["object"], "id", &generate_object_id/0)
Repo.insert!(%Object{data: object})
Map.put(map, "object", object) Map.put(map, "object", object)
else else
map 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 assert activity.data["id"] == given_id
end 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 = %{ data = %{
"object" => %{ "object" => %{
"ok" => true "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) {:ok, %Activity{} = activity} = ActivityPub.insert(data)
assert is_binary(activity.data["object"]["id"]) assert is_binary(activity.data["object"]["id"])
assert %Object{} = Object.get_by_ap_id(activity.data["object"]["id"])
end end
end end