Fix objects.
This commit is contained in:
		
							parent
							
								
									aa8ddfdbe2
								
							
						
					
					
						commit
						2e277dd4ad
					
				
					 2 changed files with 27 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue