aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-06-24 18:59:12 +0000
committerkaniini <nenolod@gmail.com>2019-06-24 18:59:12 +0000
commit1ab8a9e4fe693e0d3e7442eae37ddeed8ac6ed31 (patch)
treecefb2323072bce1f02492d49244ee24be340e03d /lib/pleroma/web
parent0f07bcc9e3b5037b33731616534c128f6c04a589 (diff)
parent2c63c6751203347907057c780ed8af465f182587 (diff)
downloadpleroma-1ab8a9e4fe693e0d3e7442eae37ddeed8ac6ed31.tar.gz
Merge branch 'feature/rework-user-deletion' into 'develop'
Rework user deletion Closes #846 See merge request pleroma/pleroma!1308
Diffstat (limited to 'lib/pleroma/web')
-rw-r--r--lib/pleroma/web/activity_pub/utils.ex18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex
index 10ff572a2..514266cee 100644
--- a/lib/pleroma/web/activity_pub/utils.ex
+++ b/lib/pleroma/web/activity_pub/utils.ex
@@ -151,16 +151,18 @@ defmodule Pleroma.Web.ActivityPub.Utils do
def create_context(context) do
context = context || generate_id("contexts")
- changeset = Object.context_mapping(context)
- case Repo.insert(changeset) do
- {:ok, object} ->
- object
+ # Ecto has problems accessing the constraint inside the jsonb,
+ # so we explicitly check for the existed object before insert
+ object = Object.get_cached_by_ap_id(context)
- # This should be solved by an upsert, but it seems ecto
- # has problems accessing the constraint inside the jsonb.
- {:error, _} ->
- Object.get_cached_by_ap_id(context)
+ with true <- is_nil(object),
+ changeset <- Object.context_mapping(context),
+ {:ok, inserted_object} <- Repo.insert(changeset) do
+ inserted_object
+ else
+ _ ->
+ object
end
end