Move the population of the new columns on the collections table to a standalone
[arvados.git] / services / api / db / migrate / 20130118002239_rename_metadata_attributes.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 class RenameMetadataAttributes < ActiveRecord::Migration[4.2]
6   def up
7     rename_column :metadata, :target_kind, :tail_kind
8     rename_column :metadata, :target_uuid, :tail
9     rename_column :metadata, :value, :head
10     rename_column :metadata, :key, :name
11     add_column :metadata, :head_kind, :string
12     add_index :metadata, :head
13     add_index :metadata, :head_kind
14     add_index :metadata, :tail
15     add_index :metadata, :tail_kind
16     begin
17       Metadatum.where('head like ?', 'orvos#%').each do |m|
18         kind_uuid = m.head.match /^(orvos\#.*)\#([-0-9a-z]+)$/
19         if kind_uuid
20           m.update_attributes(head_kind: kind_uuid[1],
21                               head: kind_uuid[2])
22         end
23       end
24     rescue
25     end
26   end
27
28   def down
29     begin
30       Metadatum.where('head_kind is not null and head_kind <> ? and head is not null', '').each do |m|
31         m.update_attributes(head: m.head_kind + '#' + m.head)
32       end
33     rescue
34     end
35     remove_index :metadata, :tail_kind
36     remove_index :metadata, :tail
37     remove_index :metadata, :head_kind
38     remove_index :metadata, :head
39     rename_column :metadata, :name, :key
40     remove_column :metadata, :head_kind
41     rename_column :metadata, :head, :value
42     rename_column :metadata, :tail, :target_uuid
43     rename_column :metadata, :tail_kind, :target_kind
44   end
45 end