aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2019-02-11 08:07:39 +0000
committerlambda <pleromagit@rogerbraun.net>2019-02-11 08:07:39 +0000
commitd53e36bf1e004177277cb5917bb290d512278aa9 (patch)
tree96ae3dd7387dc70db67cd79fb99ee6081cad23ce /lib
parent06c4935c11fc58f5ede18706bc46dcc502e64052 (diff)
downloadpleroma-d53e36bf1e004177277cb5917bb290d512278aa9.tar.gz
Revert "Merge branch 'object-creation' into 'develop'"
This reverts merge request !802
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/object.ex22
-rw-r--r--lib/pleroma/web/activity_pub/utils.ex10
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api.ex12
3 files changed, 19 insertions, 25 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex
index dabb49536..5f1fc801b 100644
--- a/lib/pleroma/object.ex
+++ b/lib/pleroma/object.ex
@@ -20,29 +20,9 @@ defmodule Pleroma.Object do
timestamps()
end
- def insert_or_get(cng) do
- {_, data} = fetch_field(cng, :data)
- id = data["id"] || data[:id]
- key = "object:#{id}"
-
- fetcher = fn _ ->
- with nil <- get_by_ap_id(id),
- {:ok, object} <- Repo.insert(cng) do
- {:commit, object}
- else
- %Object{} = object -> {:commit, object}
- e -> {:ignore, e}
- end
- end
-
- with {state, object} when state in [:commit, :ok] <- Cachex.fetch(:object_cache, key, fetcher) do
- {:ok, object}
- end
- end
-
def create(data) do
Object.change(%Object{}, %{data: data})
- |> insert_or_get()
+ |> Repo.insert()
end
def change(struct, params \\ %{}) do
diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex
index da6cca4dd..964e11c9d 100644
--- a/lib/pleroma/web/activity_pub/utils.ex
+++ b/lib/pleroma/web/activity_pub/utils.ex
@@ -142,8 +142,14 @@ defmodule Pleroma.Web.ActivityPub.Utils do
context = context || generate_id("contexts")
changeset = Object.context_mapping(context)
- with {:ok, object} <- Object.insert_or_get(changeset) do
- object
+ case Repo.insert(changeset) do
+ {:ok, object} ->
+ object
+
+ # 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)
end
end
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index 162beb9be..db521a3ad 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -310,8 +310,16 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
else
_e ->
changeset = Object.context_mapping(context)
- {:ok, object} = Object.insert_or_get(changeset)
- object.id
+
+ case Repo.insert(changeset) do
+ {:ok, %{id: id}} ->
+ id
+
+ # 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).id
+ end
end
end