From 51383aa72b1b8773436ba781aa8f7a74f588069c Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 29 Dec 2021 12:23:35 -0600 Subject: Preliminary "ResolveActivityObjectConflicts" migration --- ...11218181640_resolve_activity_object_conflicts.exs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/priv/repo/migrations/20211218181640_resolve_activity_object_conflicts.exs b/priv/repo/migrations/20211218181640_resolve_activity_object_conflicts.exs index 6ed5fab2a..52b9d06e7 100644 --- a/priv/repo/migrations/20211218181640_resolve_activity_object_conflicts.exs +++ b/priv/repo/migrations/20211218181640_resolve_activity_object_conflicts.exs @@ -12,13 +12,21 @@ defmodule Pleroma.Repo.Migrations.ResolveActivityObjectConflicts do import Ecto.Query def up do - Object - |> join(:inner, [o], a in "activities", on: a.id == o.id) + activity_conflict_query() |> Repo.stream() - |> Stream.each(fn object -> - # TODO - :error - end) + |> Stream.each(&update_object/1) + |> Stream.run() + end + + # Get only objects with a conflicting activity ID. + defp activity_conflict_query() do + join(Object, :inner, [o], a in "activities", on: a.id == o.id) + end + + # Update the object and its relations with a newly-generated ID. + defp update_object(object) do + new_id = ObjectId.flake_from_time(object.inserted_at) + ObjectId.change_id(object, new_id) end def down do -- cgit v1.2.3