Merge branch 'develop' into feature/push-subject-for-dm
[akkoma] / lib / pleroma / object.ex
index 640e068e56ce8cd7da2c43fcc0b9bd78508af55a..d9b41d710cebb6296a3b2d4cb41521feb2c27030 100644 (file)
@@ -42,7 +42,7 @@ defmodule Pleroma.Object do
     %{updated_at: updated_at} = object = get_by_id(id)
 
     if opts[:interval] &&
-         NaiveDateTime.diff(updated_at, NaiveDateTime.utc_now()) > opts[:interval] do
+         NaiveDateTime.diff(NaiveDateTime.utc_now(), updated_at) > opts[:interval] do
       case Fetcher.refetch_object(object) do
         {:ok, %Object{} = object} ->
           object
@@ -181,7 +181,7 @@ defmodule Pleroma.Object do
         data:
           fragment(
             """
-            jsonb_set(?, '{repliesCount}',
+            safe_jsonb_set(?, '{repliesCount}',
               (coalesce((?->>'repliesCount')::int, 0) + 1)::varchar::jsonb, true)
             """,
             o.data,
@@ -204,7 +204,7 @@ defmodule Pleroma.Object do
         data:
           fragment(
             """
-            jsonb_set(?, '{repliesCount}',
+            safe_jsonb_set(?, '{repliesCount}',
               (greatest(0, (?->>'repliesCount')::int - 1))::varchar::jsonb, true)
             """,
             o.data,
@@ -248,4 +248,11 @@ defmodule Pleroma.Object do
       _ -> :noop
     end
   end
+
+  @doc "Updates data field of an object"
+  def update_data(%Object{data: data} = object, attrs \\ %{}) do
+    object
+    |> Object.change(%{data: Map.merge(data || %{}, attrs)})
+    |> Repo.update()
+  end
 end