Notification Backfill: Explicitly select the needed fields.
authorlain <lain@soykaf.club>
Fri, 3 Jul 2020 09:25:12 +0000 (11:25 +0200)
committerlain <lain@soykaf.club>
Fri, 3 Jul 2020 09:25:12 +0000 (11:25 +0200)
Prevents a crashing migration when we change user fields.

lib/pleroma/migration_helper/notification_backfill.ex

index b3770307ae01842649e85d5d672e1359f1c82f54..d260e62cacde990436e314027b3d308619013354 100644 (file)
@@ -3,7 +3,6 @@
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.MigrationHelper.NotificationBackfill do
-  alias Pleroma.Notification
   alias Pleroma.Object
   alias Pleroma.Repo
   alias Pleroma.User
@@ -25,18 +24,27 @@ defmodule Pleroma.MigrationHelper.NotificationBackfill do
         |> type_from_activity()
 
       notification
-      |> Notification.changeset(%{type: type})
+      |> Ecto.Changeset.change(%{type: type})
       |> Repo.update()
     end)
   end
 
+  defp get_by_ap_id(ap_id) do
+    q =
+      from(u in User,
+        select: u.id
+      )
+
+    Repo.get_by(q, ap_id: ap_id)
+  end
+
   # This is copied over from Notifications to keep this stable.
   defp type_from_activity(%{data: %{"type" => type}} = activity) do
     case type do
       "Follow" ->
         accepted_function = fn activity ->
-          with %User{} = follower <- User.get_by_ap_id(activity.data["actor"]),
-               %User{} = followed <- User.get_by_ap_id(activity.data["object"]) do
+          with %User{} = follower <- get_by_ap_id(activity.data["actor"]),
+               %User{} = followed <- get_by_ap_id(activity.data["object"]) do
             Pleroma.FollowingRelationship.following?(follower, followed)
           end
         end