aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--db/migrate/112_add_api_key_to_public_bodies.rb47
1 files changed, 44 insertions, 3 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 24961612d..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,9 +4,50 @@ 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!
+ 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