commit: 8de523c8aec19e999334753b5a982fff00d1f44c
parent: 093fd1832dd9e8137e28932fe167bcdc7e228366
Author: Roger Braun <roger@rogerbraun.net>
Date: Tue, 21 Mar 2017 09:21:52 +0100
Basic AP objects.
Diffstat:
6 files changed, 69 insertions(+), 0 deletions(-)
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
@@ -0,0 +1,9 @@
+defmodule Pleroma.Activity do
+ use Ecto.Schema
+
+ schema "activities" do
+ field :data, :map
+
+ timestamps()
+ end
+end
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex
@@ -0,0 +1,9 @@
+defmodule Pleroma.Object do
+ use Ecto.Schema
+
+ schema "objects" do
+ field :data, :map
+
+ timestamps()
+ end
+end
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -0,0 +1,8 @@
+defmodule Pleroma.Web.ActivityPub.ActivityPub do
+ alias Pleroma.Repo
+ alias Pleroma.Activity
+
+ def insert(map) when is_map(map) do
+ Repo.insert(%Activity{data: map})
+ end
+end
diff --git a/priv/repo/migrations/20170321074828_create_activity.exs b/priv/repo/migrations/20170321074828_create_activity.exs
@@ -0,0 +1,14 @@
+defmodule Pleroma.Repo.Migrations.CreatePleroma.Activity do
+ use Ecto.Migration
+
+ def change do
+ create table(:activities) do
+ add :data, :map
+
+ timestamps()
+ end
+
+ create index(:activities, [:data], using: :gin)
+
+ end
+end
diff --git a/priv/repo/migrations/20170321074832_create_object.exs b/priv/repo/migrations/20170321074832_create_object.exs
@@ -0,0 +1,12 @@
+defmodule Pleroma.Repo.Migrations.CreatePleroma.Object do
+ use Ecto.Migration
+
+ def change do
+ create table(:objects) do
+ add :data, :map
+
+ timestamps()
+ end
+
+ end
+end
diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs
@@ -0,0 +1,17 @@
+defmodule Pleroma.Web.ActivityPub.ActivityPubTest do
+ use Pleroma.DataCase
+ alias Pleroma.Web.ActivityPub.ActivityPub
+ alias Pleroma.Activity
+
+ describe "insertion" do
+ test "inserts a given map into the activity database" do
+ data = %{
+ ok: true
+ }
+
+ {:ok, %Activity{} = activity} = ActivityPub.insert(data)
+ assert activity.data == data
+ end
+ end
+
+end