8784: Fix test for latest firefox.
[arvados.git] / services / api / db / migrate / 20160208210629_add_uuid_to_api_client_authorization.rb
1 require 'has_uuid'
2
3 class AddUuidToApiClientAuthorization < ActiveRecord::Migration
4   extend HasUuid::ClassMethods
5
6   def up
7     add_column :api_client_authorizations, :uuid, :string
8     add_index :api_client_authorizations, :uuid, :unique => true
9
10     prefix = Server::Application.config.uuid_prefix + '-' +
11              Digest::MD5.hexdigest('ApiClientAuthorization'.to_s).to_i(16).to_s(36)[-5..-1] + '-'
12
13     update_sql <<-EOS
14 update api_client_authorizations set uuid = (select concat('#{prefix}',
15 array_to_string(ARRAY (SELECT substring(api_token FROM (ceil(random()*36))::int FOR 1) FROM generate_series(1, 15)), '')
16 ));
17 EOS
18
19     change_column_null :api_client_authorizations, :uuid, false
20   end
21
22   def down
23     if column_exists?(:api_client_authorizations, :uuid)
24       remove_index :api_client_authorizations, :uuid
25       remove_column :api_client_authorizations, :uuid
26     end
27   end
28 end