aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/object.ex
diff options
context:
space:
mode:
authorMark Felder <feld@FreeBSD.org>2019-12-19 12:16:33 -0600
committerMark Felder <feld@FreeBSD.org>2019-12-19 12:16:33 -0600
commit50638525db6bf7d59c4a5820848c9f6773cc49e1 (patch)
tree6d94f34ddd482d57178107076a7e2f44698a3e43 /lib/pleroma/object.ex
parentdf469b4468168cf072e73df73e0fdde2bbab1da5 (diff)
parent38ad407395e838ddf1c11922806adc080af44d36 (diff)
downloadpleroma-50638525db6bf7d59c4a5820848c9f6773cc49e1.tar.gz
Merge branch 'develop' into config/benchmark
Diffstat (limited to 'lib/pleroma/object.ex')
-rw-r--r--lib/pleroma/object.ex17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex
index ff0e59241..eb37b95a6 100644
--- a/lib/pleroma/object.ex
+++ b/lib/pleroma/object.ex
@@ -23,6 +23,23 @@ defmodule Pleroma.Object do
timestamps()
end
+ def with_joined_activity(query, activity_type \\ "Create", join_type \\ :inner) do
+ object_position = Map.get(query.aliases, :object, 0)
+
+ join(query, join_type, [{object, object_position}], a in Activity,
+ on:
+ fragment(
+ "COALESCE(?->'object'->>'id', ?->>'object') = (? ->> 'id') AND (?->>'type' = ?) ",
+ a.data,
+ a.data,
+ object.data,
+ a.data,
+ ^activity_type
+ ),
+ as: :object_activity
+ )
+ end
+
def create(data) do
Object.change(%Object{}, %{data: data})
|> Repo.insert()