diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-12-29 12:23:35 -0600 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-12-29 12:24:58 -0600 |
commit | 51383aa72b1b8773436ba781aa8f7a74f588069c (patch) | |
tree | f993f3c9666c07e8e9ce73a1b03e7e5d5455692a | |
parent | a13da48d3dd178024615d20aa41703b6aab4807c (diff) | |
download | pleroma-51383aa72b1b8773436ba781aa8f7a74f588069c.tar.gz |
Preliminary "ResolveActivityObjectConflicts" migration
-rw-r--r-- | priv/repo/migrations/20211218181640_resolve_activity_object_conflicts.exs | 20 |
1 files 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 |