3147: PySDK tests use mock>=1.0 and easier mock side_effect.
[arvados.git] / services / api / db / migrate / 20130118002239_rename_metadata_attributes.rb
1 class RenameMetadataAttributes < ActiveRecord::Migration
2   def up
3     rename_column :metadata, :target_kind, :tail_kind
4     rename_column :metadata, :target_uuid, :tail
5     rename_column :metadata, :value, :head
6     rename_column :metadata, :key, :name
7     add_column :metadata, :head_kind, :string
8     add_index :metadata, :head
9     add_index :metadata, :head_kind
10     add_index :metadata, :tail
11     add_index :metadata, :tail_kind
12     begin
13       Metadatum.where('head like ?', 'orvos#%').each do |m|
14         kind_uuid = m.head.match /^(orvos\#.*)\#([-0-9a-z]+)$/
15         if kind_uuid
16           m.update_attributes(head_kind: kind_uuid[1],
17                               head: kind_uuid[2])
18         end
19       end
20     rescue
21     end
22   end
23
24   def down
25     begin
26       Metadatum.where('head_kind is not null and head_kind <> ? and head is not null', '').each do |m|
27         m.update_attributes(head: m.head_kind + '#' + m.head)
28       end
29     rescue
30     end
31     remove_index :metadata, :tail_kind
32     remove_index :metadata, :tail
33     remove_index :metadata, :head_kind
34     remove_index :metadata, :head
35     rename_column :metadata, :name, :key
36     remove_column :metadata, :head_kind
37     rename_column :metadata, :head, :value
38     rename_column :metadata, :tail, :target_uuid
39     rename_column :metadata, :tail_kind, :target_kind
40   end
41 end