From 2132902218e7409eb7c4a02600c864048dd91a98 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Thu, 6 Jul 2023 15:48:41 +0200
Subject: [PATCH] Website rebuild
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Pierre-André Boissinot <pierreandre.boissinot@noesya.coop>
Co-authored-by: Sébastien Gaya <sebastien.gaya@gmail.com>
---
 app/jobs/migrate_website_connections_job.rb      | 16 ----------------
 .../website/with_connected_objects.rb            | 12 ++++++++++++
 lib/tasks/auto.rake                              |  2 +-
 3 files changed, 13 insertions(+), 17 deletions(-)
 delete mode 100644 app/jobs/migrate_website_connections_job.rb

diff --git a/app/jobs/migrate_website_connections_job.rb b/app/jobs/migrate_website_connections_job.rb
deleted file mode 100644
index f292284e9..000000000
--- a/app/jobs/migrate_website_connections_job.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-class MigrateWebsiteConnectionsJob < ApplicationJob
-  queue_as :default
-
-  def perform(website_id)
-    website = Communication::Website.find(website_id)
-    website.pages.find_each(&:connect_dependencies)
-    website.posts.find_each(&:connect_dependencies)
-    website.categories.find_each(&:connect_dependencies)
-    website.menus.find_each(&:connect_dependencies)
-    website.connect(website.about, website) if website.about.present?
-
-    website.destroy_obsolete_connections
-    website.sync_with_git
-    website.destroy_obsolete_git_files
-  end
-end
diff --git a/app/models/communication/website/with_connected_objects.rb b/app/models/communication/website/with_connected_objects.rb
index 92da5f081..1972448df 100644
--- a/app/models/communication/website/with_connected_objects.rb
+++ b/app/models/communication/website/with_connected_objects.rb
@@ -7,6 +7,18 @@ module Communication::Website::WithConnectedObjects
     after_save :connect_about, if: :saved_change_to_about_id?
   end
 
+  def rebuild_connections_and_git_files
+    pages.find_each(&:connect_dependencies)
+    posts.find_each(&:connect_dependencies)
+    categories.find_each(&:connect_dependencies)
+    menus.find_each(&:connect_dependencies)
+    connect(about, self) if about.present?
+    destroy_obsolete_connections
+    sync_with_git
+    destroy_obsolete_git_files
+  end
+  handle_asynchronously :rebuild_connections_and_git_files, queue: :low_priority
+
   # Appelé
   # - par un objet avec des connexions lorsqu'il est destroyed
   # - par le website lui-même au changement du about
diff --git a/lib/tasks/auto.rake b/lib/tasks/auto.rake
index 4ae4ca6a5..c65badf7e 100644
--- a/lib/tasks/auto.rake
+++ b/lib/tasks/auto.rake
@@ -8,7 +8,7 @@ namespace :auto do
   desc 'Resave every website to enable publications in the future'
   task save_and_sync_websites: :environment do
     Communication::Website.find_each do |website|
-      website.save_and_sync
+      website.rebuild_connections_and_git_files
     end
   end
 
-- 
GitLab