14819: Merge branch 'master' into 14819-arvados-jobs-on-stretch
[arvados.git] / services / api / db / migrate / 20150216193428_collection_name_owner_unique_only_non_expired.rb
index 1124d5efb3ad3eb79b0600bfdfc6c4c17368d2c8..6e581883c5709569ad0bd0411f6c61ca3bd43d77 100644 (file)
@@ -1,6 +1,18 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 class CollectionNameOwnerUniqueOnlyNonExpired < ActiveRecord::Migration
+  def find_index
+    indexes = ActiveRecord::Base.connection.indexes('collections')
+    name_owner_index = indexes.select do |index|
+      index.name == 'collection_owner_uuid_name_unique'
+    end
+    name_owner_index
+  end
+
   def up
-    remove_index :collections, :name => 'collection_owner_uuid_name_unique'
+    remove_index :collections, :name => 'collection_owner_uuid_name_unique' if !find_index.empty?
     add_index(:collections, [:owner_uuid, :name], unique: true,
               where: 'expires_at is null',
               name: 'collection_owner_uuid_name_unique')
@@ -8,7 +20,7 @@ class CollectionNameOwnerUniqueOnlyNonExpired < ActiveRecord::Migration
 
   def down
     # it failed during up. is it going to pass now? should we do nothing?
-    remove_index :collections, :name => 'collection_owner_uuid_name_unique'
+    remove_index :collections, :name => 'collection_owner_uuid_name_unique' if !find_index.empty?
     add_index(:collections, [:owner_uuid, :name], unique: true,
               name: 'collection_owner_uuid_name_unique')
   end