Fix objects.

This commit is contained in:
lain 2019-01-27 21:03:15 +01:00
parent aa8ddfdbe2
commit 2e277dd4ad
2 changed files with 27 additions and 0 deletions

View file

@ -5,6 +5,7 @@
alias Pleroma.Repo
alias Pleroma.User
alias Pleroma.Activity
alias Pleroma.Object
import Ecto.Query
defmodule Pleroma.SpcFixes do
@ -87,6 +88,26 @@ def upgrade_users do
)
Repo.update_all(query, [])
# Fix objects
query =
from(a in Object,
where: fragment("?->>'actor' = ?", a.data, ^mapping[user.ap_id]),
update: [
set: [
data:
fragment(
"jsonb_set(jsonb_set(?, '{actor}', ?), '{to}', (?->'to')::jsonb || ?)",
a.data,
^user.ap_id,
a.data,
^[user.follower_address]
)
]
]
)
Repo.update_all(query, [])
end)
end
end

View file

@ -11,6 +11,7 @@ defmodule Pleroma.SpcFixesTest do
alias Pleroma.User
alias Pleroma.Activity
alias Pleroma.Repo
alias Pleroma.Object
import Pleroma.Factory
@ -62,5 +63,10 @@ test "resets the ap_id and follower_address of old spc users" do
assert activity.data["actor"] == user.ap_id
assert user.follower_address in activity.recipients
assert user.follower_address in activity.data["to"]
object = Object.get_by_ap_id(activity.data["object"]["id"])
assert object.data["actor"] == user.ap_id
assert user.follower_address in object.data["to"]
end
end