diff PostgreSQL/Plugins/PostgreSQLIndex.cpp @ 366:cd9521e04249 attach-custom-data

DatabaseBackendAdapterV4: added support for customData + revision when not already done
author Alain Mazy <am@osimis.io>
date Thu, 15 Sep 2022 18:12:34 +0200
parents c0c12b3974b2
children
line wrap: on
line diff
--- a/PostgreSQL/Plugins/PostgreSQLIndex.cpp	Tue Jul 05 08:44:26 2022 +0200
+++ b/PostgreSQL/Plugins/PostgreSQLIndex.cpp	Thu Sep 15 18:12:34 2022 +0200
@@ -294,6 +294,49 @@
           t.GetDatabaseTransaction().ExecuteMultiLines("ALTER TABLE AttachedFiles ADD COLUMN revision INTEGER");
         }
 
+        // new in v 4.X
+        if (!db.DoesColumnExist("DeletedFiles", "revision"))
+        {
+          t.GetDatabaseTransaction().ExecuteMultiLines("ALTER TABLE DeletedFiles ADD COLUMN revision INTEGER");
+        }
+
+        if (!db.DoesColumnExist("AttachedFiles", "customData"))
+        {
+          t.GetDatabaseTransaction().ExecuteMultiLines("ALTER TABLE AttachedFiles ADD COLUMN customData TEXT");
+        }
+
+        if (!db.DoesColumnExist("DeletedFiles", "customData"))
+        {
+          // add the column and modify the trigger
+          t.GetDatabaseTransaction().ExecuteMultiLines("ALTER TABLE DeletedFiles ADD COLUMN customData TEXT");
+
+          t.GetDatabaseTransaction().ExecuteMultiLines(
+            "DROP TRIGGER AttachedFileDeleted ON AttachedFiles");
+
+          t.GetDatabaseTransaction().ExecuteMultiLines(
+            "DROP FUNCTION AttachedFileDeletedFunc");
+
+          t.GetDatabaseTransaction().ExecuteMultiLines(
+            "CREATE FUNCTION AttachedFileDeletedFunc() "
+            "RETURNS TRIGGER AS $body$"
+            "BEGIN"
+            "  INSERT INTO DeletedFiles VALUES"
+            "    (old.uuid, old.filetype, old.compressedSize,"
+            "     old.uncompressedSize, old.compressionType,"
+            "     old.uncompressedHash, old.compressedHash,"
+            "     old.revision, old.customData);"
+            "  RETURN NULL;"
+            "END;"
+            "$body$ LANGUAGE plpgsql;");
+
+          t.GetDatabaseTransaction().ExecuteMultiLines(
+            "CREATE TRIGGER AttachedFileDeleted "
+            "AFTER DELETE ON AttachedFiles "
+            "FOR EACH ROW "
+            "EXECUTE PROCEDURE AttachedFileDeletedFunc();"
+          );
+        }
+
         t.Commit();
       }
     }