summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorfeld <feld@feld.me>2024-03-15 19:32:35 +0000
committerfeld <feld@feld.me>2024-03-15 19:32:35 +0000
commit0b5bba23ce5661c25f813ef36f435e8f4aa333f1 (patch)
tree3c4bdc2d32bea0d348e9a67457b7b2e401dd37bf /lib
parentdf7a8d4efe669c14775dd2bedf4b20dade6d7b66 (diff)
parentbb0b17f4d9a235f79b4b6fabdc5e3dbe472cd259 (diff)
downloadpleroma-0b5bba23ce5661c25f813ef36f435e8f4aa333f1.tar.gz
pleroma-0b5bba23ce5661c25f813ef36f435e8f4aa333f1.zip
Merge branch 'backups' into 'develop'
Include following/followers in backups See merge request pleroma/pleroma!4085
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user/backup.ex21
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/pleroma/user/backup.ex b/lib/pleroma/user/backup.ex
index b7f00bbf7..65e0baccd 100644
--- a/lib/pleroma/user/backup.ex
+++ b/lib/pleroma/user/backup.ex
@@ -196,7 +196,14 @@ defmodule Pleroma.User.Backup do
end
end
- @files ['actor.json', 'outbox.json', 'likes.json', 'bookmarks.json']
+ @files [
+ 'actor.json',
+ 'outbox.json',
+ 'likes.json',
+ 'bookmarks.json',
+ 'followers.json',
+ 'following.json'
+ ]
@spec export(Pleroma.User.Backup.t(), pid()) :: {:ok, String.t()} | :error
def export(%__MODULE__{} = backup, caller_pid) do
backup = Repo.preload(backup, :user)
@@ -207,6 +214,8 @@ defmodule Pleroma.User.Backup do
:ok <- statuses(dir, backup.user, caller_pid),
:ok <- likes(dir, backup.user, caller_pid),
:ok <- bookmarks(dir, backup.user, caller_pid),
+ :ok <- followers(dir, backup.user, caller_pid),
+ :ok <- following(dir, backup.user, caller_pid),
{:ok, zip_path} <- :zip.create(backup.file_name, @files, cwd: dir),
{:ok, _} <- File.rm_rf(dir) do
{:ok, zip_path}
@@ -357,6 +366,16 @@ defmodule Pleroma.User.Backup do
caller_pid
)
end
+
+ defp followers(dir, user, caller_pid) do
+ User.get_followers_query(user)
+ |> write(dir, "followers", fn a -> {:ok, a.ap_id} end, caller_pid)
+ end
+
+ defp following(dir, user, caller_pid) do
+ User.get_friends_query(user)
+ |> write(dir, "following", fn a -> {:ok, a.ap_id} end, caller_pid)
+ end
end
defmodule Pleroma.User.Backup.ProcessorAPI do