diff options
author | Shinya Maeda <shinya@gitlab.com> | 2017-06-26 02:59:27 +0900 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2017-07-05 18:38:28 +0900 |
commit | 251a7c416cb8fdc3cb1722dab6194df7a9bde9e5 (patch) | |
tree | 958f875ecaf79dfac95d939477304951045f18ee | |
parent | d5daf1742a29f95753ed21c1d79268144e4b8e75 (diff) | |
download | gitlab-ce-251a7c416cb8fdc3cb1722dab6194df7a9bde9e5.tar.gz |
Implement variables_attributes create/update cases
-rw-r--r-- | app/services/ci/create_pipeline_schedule_service.rb | 30 |
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 |