diff options
author | James Lopez <james@jameslopez.es> | 2016-03-22 11:32:15 +0100 |
---|---|---|
committer | James Lopez <james@jameslopez.es> | 2016-03-22 11:32:15 +0100 |
commit | 1b8d995492baca8984bde950e0449dad6342befc (patch) | |
tree | 060ce03fdb84571841d01b7cd3308c6440421d09 /db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb | |
parent | 8a26f836882112657db4e616066e70722677f049 (diff) | |
download | gitlab-ce-1b8d995492baca8984bde950e0449dad6342befc.tar.gz |
refactoring migration to add bitbucket stuff
Diffstat (limited to 'db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb')
-rw-r--r-- | db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb index cf6b983323e..8ba68e61c74 100644 --- a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb +++ b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb @@ -10,23 +10,52 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration end def up + process_projects_with_wrong_url + process_bitbucket_projects + end + + def process_projects_with_wrong_url projects_with_wrong_import_url do |project| import_url = Gitlab::ImportUrl.new(project["import_url"]) ActiveRecord::Base.transaction do - execute("UPDATE projects SET import_url = #{quote(import_url.sanitized_url)} WHERE id = #{project['id']}") - fake_import_data = FakeProjectImportData.new - fake_import_data.credentials = import_url.credentials - project_import_data = project_import_data(project['id']) - if project_import_data - execute(update_import_data_sql(project_import_data['id'], fake_import_data)) - else - execute(insert_import_data_sql(project['id'], fake_import_data)) - end + update_import_url(import_url, project) + update_import_data(import_url, project) + end + end + end + + def process_bitbucket_projects + bitbucket_projects_with_wrong_import_url do |bitbucket_data| + data = bitbucket_data['data'] + data_hash = YAML::load(data) + if data_hash && data_hash['bb_session'] + update_import_data_for_bitbucket(data_hash, bitbucket_data['id']) end end end + def update_import_data(import_url, project) + fake_import_data = FakeProjectImportData.new + fake_import_data.credentials = import_url.credentials + project_import_data = project_import_data(project['id']) + if project_import_data + execute(update_import_data_sql(project_import_data['id'], fake_import_data)) + else + execute(insert_import_data_sql(project['id'], fake_import_data)) + end + end + + def update_import_data_for_bitbucket(data_hash, import_data_id) + fake_import_data = FakeProjectImportData.new + fake_import_data.credentials = data_hash + execute(update_import_data_sql(import_data_id, fake_import_data)) + end + + def update_import_url(import_url, project) + execute("UPDATE projects SET import_url = #{quote(import_url.sanitized_url)} WHERE id = #{project['id']}") + end + def insert_import_data_sql(project_id, fake_import_data) %( INSERT into project_import_data (encrypted_credentials, project_id, encrypted_credentials_iv, encrypted_credentials_salt) VALUES ( #{quote(fake_import_data.encrypted_credentials)}, '#{project_id}', #{quote(fake_import_data.encrypted_credentials_iv)}, #{quote(fake_import_data.encrypted_credentials_salt)})) end @@ -35,8 +64,14 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration %( UPDATE project_import_data SET encrypted_credentials = #{quote(fake_import_data.encrypted_credentials)}, encrypted_credentials_iv = #{quote(fake_import_data.encrypted_credentials_iv)}, encrypted_credentials_salt = #{quote(fake_import_data.encrypted_credentials_salt)} WHERE id = '#{id}') end + #Github projects with token, and any user:password@ based URL def projects_with_wrong_import_url - select_all("SELECT p.id, p.import_url FROM projects p WHERE p.import_url IS NOT NULL AND p.import_type = 'github' AND p.import_url LIKE '%//%:%@%'") + select_all("SELECT p.id, p.import_url FROM projects p WHERE p.import_url IS NOT NULL AND (p.import_url LIKE '%//%:%@%' OR p.import_url LIKE 'https___#{"_"*40}@github.com%')") + end + + # All bitbucket imports + def bitbucket_projects_with_wrong_import_url + select_all("SELECT p.id, p.import_urlselect_all("SELECT i.id, p.import_url, i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_type = 'bitbucket' "), i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_type = 'bitbucket' ") end def project_import_data(project_id) |