diff options
Diffstat (limited to 'db')
8 files changed, 164 insertions, 31 deletions
diff --git a/db/migrate/20161117114805_remove_undeleted_groups.rb b/db/migrate/20161117114805_remove_undeleted_groups.rb index 696914f8e4d..29040583aa2 100644 --- a/db/migrate/20161117114805_remove_undeleted_groups.rb +++ b/db/migrate/20161117114805_remove_undeleted_groups.rb @@ -5,47 +5,87 @@ class RemoveUndeletedGroups < ActiveRecord::Migration DOWNTIME = false def up + is_ee = defined?(Gitlab::License) + + if is_ee + execute <<-EOF.strip_heredoc + DELETE FROM path_locks + WHERE project_id IN ( + SELECT project_id + FROM projects + WHERE namespace_id IN (#{namespaces_pending_removal}) + ); + EOF + + execute <<-EOF.strip_heredoc + DELETE FROM remote_mirrors + WHERE project_id IN ( + SELECT project_id + FROM projects + WHERE namespace_id IN (#{namespaces_pending_removal}) + ); + EOF + end + execute <<-EOF.strip_heredoc - DELETE FROM projects - WHERE namespace_id IN ( - SELECT id FROM ( - SELECT id - FROM namespaces - WHERE deleted_at IS NOT NULL - ) namespace_ids + DELETE FROM lists + WHERE label_id IN ( + SELECT id + FROM labels + WHERE group_id IN (#{namespaces_pending_removal}) + ); + EOF + + execute <<-EOF.strip_heredoc + DELETE FROM lists + WHERE board_id IN ( + SELECT id + FROM boards + WHERE project_id IN ( + SELECT project_id + FROM projects + WHERE namespace_id IN (#{namespaces_pending_removal}) + ) ); EOF - if defined?(Gitlab::License) + execute <<-EOF.strip_heredoc + DELETE FROM labels + WHERE group_id IN (#{namespaces_pending_removal}); + EOF + + execute <<-EOF.strip_heredoc + DELETE FROM boards + WHERE project_id IN ( + SELECT project_id + FROM projects + WHERE namespace_id IN (#{namespaces_pending_removal}) + ) + EOF + + execute <<-EOF.strip_heredoc + DELETE FROM projects + WHERE namespace_id IN (#{namespaces_pending_removal}); + EOF + + if is_ee # EE adds these columns but we have to make sure this data is cleaned up # here before we run the DELETE below. An alternative would be patching # this migration in EE but this will only result in a mess and confusing # migrations. execute <<-EOF.strip_heredoc DELETE FROM protected_branch_push_access_levels - WHERE group_id IN ( - SELECT id FROM ( - SELECT id - FROM namespaces - WHERE deleted_at IS NOT NULL - ) namespace_ids - ); + WHERE group_id IN (#{namespaces_pending_removal}); EOF execute <<-EOF.strip_heredoc DELETE FROM protected_branch_merge_access_levels - WHERE group_id IN ( - SELECT id FROM ( - SELECT id - FROM namespaces - WHERE deleted_at IS NOT NULL - ) namespace_ids - ); + WHERE group_id IN (#{namespaces_pending_removal}); EOF end - # This removes namespaces that were supposed to be soft deleted but still - # reside in the database. + # This removes namespaces that were supposed to be deleted but still reside + # in the database. execute "DELETE FROM namespaces WHERE deleted_at IS NOT NULL;" end @@ -54,4 +94,12 @@ class RemoveUndeletedGroups < ActiveRecord::Migration # If someone is trying to rollback for other reasons, we should not throw an Exception. # raise ActiveRecord::IrreversibleMigration end + + def namespaces_pending_removal + "SELECT id FROM ( + SELECT id + FROM namespaces + WHERE deleted_at IS NOT NULL + ) namespace_ids" + end end diff --git a/db/migrate/20161201001911_add_plant_uml_url_to_application_settings.rb b/db/migrate/20161201001911_add_plant_uml_url_to_application_settings.rb new file mode 100644 index 00000000000..b8d8742ae40 --- /dev/null +++ b/db/migrate/20161201001911_add_plant_uml_url_to_application_settings.rb @@ -0,0 +1,12 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddPlantUmlUrlToApplicationSettings < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :application_settings, :plantuml_url, :string + end +end diff --git a/db/migrate/20161206003819_add_plant_uml_enabled_to_application_settings.rb b/db/migrate/20161206003819_add_plant_uml_enabled_to_application_settings.rb new file mode 100644 index 00000000000..3677f978cc2 --- /dev/null +++ b/db/migrate/20161206003819_add_plant_uml_enabled_to_application_settings.rb @@ -0,0 +1,12 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddPlantUmlEnabledToApplicationSettings < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :application_settings, :plantuml_enabled, :boolean + end +end diff --git a/db/migrate/20161221152132_add_last_used_at_to_key.rb b/db/migrate/20161221152132_add_last_used_at_to_key.rb new file mode 100644 index 00000000000..fb2b15817de --- /dev/null +++ b/db/migrate/20161221152132_add_last_used_at_to_key.rb @@ -0,0 +1,9 @@ +class AddLastUsedAtToKey < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + add_column :keys, :last_used_at, :datetime + end +end diff --git a/db/migrate/20161226122833_remove_dot_git_from_usernames.rb b/db/migrate/20161226122833_remove_dot_git_from_usernames.rb index 809b09feb84..7d97339581f 100644 --- a/db/migrate/20161226122833_remove_dot_git_from_usernames.rb +++ b/db/migrate/20161226122833_remove_dot_git_from_usernames.rb @@ -14,9 +14,8 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration namespace_id = user['namespace_id'] path_was = user['username'] path_was_wildcard = quote_string("#{path_was}/%") - path = quote_string(rename_path(path_was)) - move_namespace(namespace_id, path_was, path) + path = move_namespace(namespace_id, path_was, path) execute "UPDATE routes SET path = '#{path}' WHERE source_type = 'Namespace' AND source_id = #{namespace_id}" execute "UPDATE namespaces SET path = '#{path}' WHERE id = #{namespace_id}" @@ -45,9 +44,13 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration select_all("SELECT id, path FROM routes WHERE path = '#{quote_string(path)}'").present? end + def path_exists?(repository_storage_path, path) + gitlab_shell.exists?(repository_storage_path, path) + end + # Accepts invalid path like test.git and returns test_git or # test_git1 if test_git already taken - def rename_path(path) + def rename_path(repository_storage_path, path) # To stay closer with original name and reduce risk of duplicates # we rename suffix instead of removing it path = path.sub(/\.git\z/, '_git') @@ -55,7 +58,7 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration counter = 0 base = path - while route_exists?(path) + while route_exists?(path) || path_exists?(repository_storage_path, path) counter += 1 path = "#{base}#{counter}" end @@ -73,6 +76,8 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration # Ensure old directory exists before moving it gitlab_shell.add_namespace(repository_storage_path, path_was) + path = quote_string(rename_path(repository_storage_path, path_was)) + unless gitlab_shell.mv_namespace(repository_storage_path, path_was, path) Rails.logger.error "Exception moving path #{repository_storage_path} from #{path_was} to #{path}" @@ -83,5 +88,7 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration end Gitlab::UploadsTransfer.new.rename_namespace(path_was, path) + + path end end diff --git a/db/post_migrate/20170106142508_fill_authorized_projects.rb b/db/post_migrate/20170106142508_fill_authorized_projects.rb new file mode 100644 index 00000000000..314c8440c8b --- /dev/null +++ b/db/post_migrate/20170106142508_fill_authorized_projects.rb @@ -0,0 +1,30 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class FillAuthorizedProjects < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + class User < ActiveRecord::Base + self.table_name = 'users' + end + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + # We're not inserting any data so we don't need to start a transaction. + disable_ddl_transaction! + + def up + relation = User.select(:id). + where('authorized_projects_populated IS NOT TRUE') + + relation.find_in_batches(batch_size: 1_000) do |rows| + args = rows.map { |row| [row.id] } + + Sidekiq::Client.push_bulk('class' => 'AuthorizedProjectsWorker', 'args' => args) + end + end + + def down + end +end diff --git a/db/post_migrate/20170106172224_remove_project_authorizations_id_column.rb b/db/post_migrate/20170106172224_remove_project_authorizations_id_column.rb new file mode 100644 index 00000000000..7c788160022 --- /dev/null +++ b/db/post_migrate/20170106172224_remove_project_authorizations_id_column.rb @@ -0,0 +1,12 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class RemoveProjectAuthorizationsIdColumn < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + def change + remove_column :project_authorizations, :id, :primary_key + end +end diff --git a/db/schema.rb b/db/schema.rb index 923ece86edb..c58a886b0fa 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20161227192806) do +ActiveRecord::Schema.define(version: 20170106172224) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -107,6 +107,8 @@ ActiveRecord::Schema.define(version: 20161227192806) do t.integer "housekeeping_full_repack_period", default: 50, null: false t.integer "housekeeping_gc_period", default: 200, null: false t.boolean "html_emails_enabled", default: true + t.string "plantuml_url" + t.boolean "plantuml_enabled" end create_table "audit_events", force: :cascade do |t| @@ -528,6 +530,7 @@ ActiveRecord::Schema.define(version: 20161227192806) do t.string "fingerprint" t.boolean "public", default: false, null: false t.boolean "can_push", default: false, null: false + t.datetime "last_used_at" end add_index "keys", ["fingerprint"], name: "index_keys_on_fingerprint", unique: true, using: :btree @@ -861,7 +864,7 @@ ActiveRecord::Schema.define(version: 20161227192806) do add_index "personal_access_tokens", ["token"], name: "index_personal_access_tokens_on_token", unique: true, using: :btree add_index "personal_access_tokens", ["user_id"], name: "index_personal_access_tokens_on_user_id", using: :btree - create_table "project_authorizations", force: :cascade do |t| + create_table "project_authorizations", id: false, force: :cascade do |t| t.integer "user_id" t.integer "project_id" t.integer "access_level" @@ -1306,4 +1309,4 @@ ActiveRecord::Schema.define(version: 20161227192806) do add_foreign_key "subscriptions", "projects", on_delete: :cascade add_foreign_key "trending_projects", "projects", on_delete: :cascade add_foreign_key "u2f_registrations", "users" -end
\ No newline at end of file +end |