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
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
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
{: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