From c4a7f0cd5ad36966478bfde5cef66250591fa55b Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Sun, 4 Feb 2024 22:00:07 +0100
Subject: [PATCH] fix

---
 .../20240131081040_rename_hal_publications.rb      | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/db/migrate/20240131081040_rename_hal_publications.rb b/db/migrate/20240131081040_rename_hal_publications.rb
index 93e5f2fb3..2ef098867 100644
--- a/db/migrate/20240131081040_rename_hal_publications.rb
+++ b/db/migrate/20240131081040_rename_hal_publications.rb
@@ -5,9 +5,17 @@ class RenameHalPublications < ActiveRecord::Migration[7.1]
     rename_table :research_hal_publications_university_people, :research_publications_university_people
     rename_column :research_publications_university_people, :research_hal_publication_id, :research_publication_id
 
-    # Vieil index problématique
-    # https://stackoverflow.com/questions/32395126/rename-table-relation-table-pkey-does-not-exist
-    execute "ALTER INDEX research_documents_pkey RENAME TO research_hal_publications_pkey;"
+    reversible do |dir|
+      # Vieil index problématique
+      # Pas évident à intégrer dans une migration :
+      # 1. la première fois qu'on migre on répare l'index
+      # 2. mais on ne peut pas reverse la migration, d'où l'usage de reversible
+      # 3. et quand on remet après revert, il ne veut plus passer parce que l'index à réparer est déjà réparé
+      # 4. en ajoutant IF EXISTS, on peut le repasser
+      # Bingo !
+      # https://stackoverflow.com/questions/32395126/rename-table-relation-table-pkey-does-not-exist
+      dir.up { execute "ALTER INDEX IF EXISTS research_documents_pkey RENAME TO research_hal_publications_pkey" }
+    end
     rename_table :research_hal_publications, :research_publications
     rename_column :research_publications, :docid, :hal_docid
     add_column :research_publications, :source, :integer, default: 0
-- 
GitLab