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