14873: Adjusts latest API Server changes to be rails5 worthy.
[arvados.git] / services / api / db / migrate / 20140501165548_add_unique_name_index_to_links.rb
index 0195cf00dd815e68ddfc9a8fa5904f22f08be658..9c177f788ab2f6d5b340f6a1788d77c8a581f52b 100644 (file)
@@ -1,6 +1,17 @@
-class AddUniqueNameIndexToLinks < ActiveRecord::Migration
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
+class AddUniqueNameIndexToLinks < ActiveRecord::Migration[4.2]
   def change
-    # todo: add "check (link_class is not 'name' or name is not null)"
-    add_index :links, [:tail_uuid, :name], where: "link_class='name'", unique: true
+    # Make sure PgPower is here. Otherwise the "where" will be ignored
+    # and we'll end up with a far too restrictive unique
+    # constraint. (Rails4 should work without PgPower, but that isn't
+    # tested.)
+    if not PgPower then raise "No partial column support" end
+
+    add_index(:links, [:tail_uuid, :name], unique: true,
+              where: "link_class='name'",
+              name: 'links_tail_name_unique_if_link_class_name')
   end
 end