summaryrefslogtreecommitdiff
path: root/app/services/projects/move_lfs_objects_projects_service.rb
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2018-05-04 14:58:47 +0100
committerFilipa Lacerda <filipa@gitlab.com>2018-05-04 14:58:47 +0100
commit1983356d647290fe38ca21bbbca43fe2d6292913 (patch)
treed07fba5693e239993dfc6d1f724b2103f90a3fa6 /app/services/projects/move_lfs_objects_projects_service.rb
parent703f45632292e7fc45359d0144cd616725bf9b0d (diff)
parent4bf47cd76fd69a26b7b2b4ac029f088ec5493712 (diff)
downloadgitlab-ce-1983356d647290fe38ca21bbbca43fe2d6292913.tar.gz
Merge branch 'master' into 44427-state-management-with-vuext
* master: (1063 commits) Replace commits spinach tests with RSpec analog Update repository.rb Add note about rebase/squash duplication in Gitaly Resolve "Reconcile project templates with Auto DevOps" Move import project pane to a separate partial Inform the user when there are no project import options available Clarify location of Vue templates Make add_index_to_namespaces_runners_token migration reversible Fix lambda arguments in Grape entities Update grape-entity 0.6.0 -> 0.7.1 Fix constants in backfill_runner_type_for_ci_runners_post_migrate.rb Use limited_counter_with_delimiter in the admin user list tabs Remove a warning from spec/features/admin/admin_users_spec.rb Use smallint for runner_type since its an enum Dont remove duplicates in Runner.owned_or_shared since its not necessary Change the docs license to CC BY-SA Remove unnecessary disable transaction in add_ci_runner_namespaces Split migration to add and index namespaces.runners_token Output some useful information when running the rails console Revert "Use factory in specs for ProjectCiCdSettings" ...
Diffstat (limited to 'app/services/projects/move_lfs_objects_projects_service.rb')
-rw-r--r--app/services/projects/move_lfs_objects_projects_service.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/app/services/projects/move_lfs_objects_projects_service.rb b/app/services/projects/move_lfs_objects_projects_service.rb
new file mode 100644
index 00000000000..298da5f1a82
--- /dev/null
+++ b/app/services/projects/move_lfs_objects_projects_service.rb
@@ -0,0 +1,29 @@
+module Projects
+ class MoveLfsObjectsProjectsService < BaseMoveRelationsService
+ def execute(source_project, remove_remaining_elements: true)
+ return unless super
+
+ Project.transaction(requires_new: true) do
+ move_lfs_objects_projects
+ remove_remaining_lfs_objects_project if remove_remaining_elements
+
+ success
+ end
+ end
+
+ private
+
+ def move_lfs_objects_projects
+ prepare_relation(non_existent_lfs_objects_projects)
+ .update_all(project_id: @project.lfs_storage_project.id)
+ end
+
+ def remove_remaining_lfs_objects_project
+ source_project.lfs_objects_projects.destroy_all
+ end
+
+ def non_existent_lfs_objects_projects
+ source_project.lfs_objects_projects.where.not(lfs_object: @project.lfs_objects)
+ end
+ end
+end