73b5fdfb9e0b595d687ca4c541806bec98b67ed6
[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}', substring(api_token, length(api_token)-4), array_to_string(ARRAY (SELECT substring('0123456789abcdefghijklmnopqrstuvwxyz' FROM (ceil(random()*36))::int FOR 1) FROM generate_series(1, 10)), '')));
15 EOS
16
17     change_column_null :api_client_authorizations, :uuid, false
18   end
19
20   def down
21     if column_exists?(:api_client_authorizations, :uuid)
22       remove_index :api_client_authorizations, :uuid
23       remove_column :api_client_authorizations, :uuid
24     end
25   end
26 end