Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-06-25 20:59:27 +0300
committerShinya Maeda <shinya@gitlab.com>2017-06-29 16:39:01 +0300
commitd24350039549fcb2b962237796a299a9564a81a7 (patch)
tree27b810ca750742d86bf3419cc8876112b6eaf2a9
parentfaece5aaac014c66ac9c340e2e55261da0b82167 (diff)
Implement variables_attributes create/update cases
-rw-r--r--app/services/ci/create_pipeline_schedule_service.rb30
1 files changed, 28 insertions, 2 deletions
diff --git a/app/services/ci/create_pipeline_schedule_service.rb b/app/services/ci/create_pipeline_schedule_service.rb
index cd40deb6187..4c9cb5c66c6 100644
--- a/app/services/ci/create_pipeline_schedule_service.rb
+++ b/app/services/ci/create_pipeline_schedule_service.rb
@@ -1,13 +1,39 @@
module Ci
class CreatePipelineScheduleService < BaseService
def execute
- project.pipeline_schedules.create(pipeline_schedule_params)
+ pipeline_schedule = project.pipeline_schedules.build(pipeline_schedule_params)
+
+ if variable_keys_duplicated?
+ pipeline_schedule.errors.add('variables.key', "keys are duplicated")
+
+ return pipeline_schedule
+ end
+
+ pipeline_schedule.save
+ pipeline_schedule
+ end
+
+ def update(pipeline_schedule)
+ if variable_keys_duplicated?
+ pipeline_schedule.errors.add('variables.key', "keys are duplicated")
+
+ return false
+ end
+
+ pipeline_schedule.update(pipeline_schedule_params)
end
private
def pipeline_schedule_params
- params.merge(owner: current_user)
+ @pipeline_schedule_params ||= params.merge(owner: current_user)
+ end
+
+ def variable_keys_duplicated?
+ attributes = pipeline_schedule_params['variables_attributes']
+ return false unless attributes.is_a?(Array)
+
+ attributes.map { |v| v['key'] }.uniq.length != attributes.length
end
end
end