diff options
author | Robin Houston <robin.houston@gmail.com> | 2012-07-02 14:43:35 +0100 |
---|---|---|
committer | Robin Houston <robin.houston@gmail.com> | 2012-07-02 14:43:35 +0100 |
commit | b25e9084f46787a495891257236fd26fbd2ff36a (patch) | |
tree | 72b1d8e50fc25e94257f5c4011a30a9d6efa8515 | |
parent | cef2b1074811567561f01f20fbffebb6baaee4f2 (diff) |
Set the API key in a much more efficient way
If we are using PostgreSQL, populate the api_key column in a more
efficient fashion.
-rw-r--r-- | db/migrate/112_add_api_key_to_public_bodies.rb | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/db/migrate/112_add_api_key_to_public_bodies.rb b/db/migrate/112_add_api_key_to_public_bodies.rb index 1a01b3d78..43dccb198 100644 --- a/db/migrate/112_add_api_key_to_public_bodies.rb +++ b/db/migrate/112_add_api_key_to_public_bodies.rb @@ -4,12 +4,53 @@ class AddApiKeyToPublicBodies < ActiveRecord::Migration def self.up add_column :public_bodies, :api_key, :string - # PublicBody.find_each do |pb| - # pb.api_key = SecureRandom.base64(32) - # pb.save! - # end - # - # change_column_null :public_bodies, :api_key, false + if ActiveRecord::Base.connection.adapter_name == "PostgreSQL" + execute <<-SQL + update public_bodies + set api_key = encode(decode( + lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + ||lpad(to_hex(floor(random()*256) :: integer), 2, '0') + , 'hex'), 'base64') + SQL + else + PublicBody.find_each do |pb| + pb.api_key = SecureRandom.base64(33) + pb.save! + end + end + + change_column_null :public_bodies, :api_key, false end def self.down |