From d278da48f837292491aaf81649afef1da3a1eb09 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Wed, 21 Jun 2017 18:25:01 +0900 Subject: pipeline_schedule_variables model/db --- app/models/ci/pipeline_schedule.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 45d8cd34359..31b73248947 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -9,6 +9,7 @@ module Ci belongs_to :owner, class_name: 'User' has_one :last_pipeline, -> { order(id: :desc) }, class_name: 'Ci::Pipeline' has_many :pipelines + has_many :variables, class_name: 'Ci::PipelineScheduleVariable' validates :cron, unless: :importing?, cron: true, presence: { unless: :importing? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } -- cgit v1.2.3 From 58d8b9ae62813cb69821a4e0e41c914aee7e323a Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 23 Jun 2017 03:57:13 +0900 Subject: Controller logic. Delete before modification. Halfway. --- app/models/ci/pipeline_schedule.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 31b73248947..61215b1fb46 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -9,18 +9,30 @@ module Ci belongs_to :owner, class_name: 'User' has_one :last_pipeline, -> { order(id: :desc) }, class_name: 'Ci::Pipeline' has_many :pipelines - has_many :variables, class_name: 'Ci::PipelineScheduleVariable' + has_many :variables, :dependent => :destroy, class_name: 'Ci::PipelineScheduleVariable' validates :cron, unless: :importing?, cron: true, presence: { unless: :importing? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true + validates_associated :variables before_save :set_next_run_at scope :active, -> { where(active: true) } scope :inactive, -> { where(active: false) } + accepts_nested_attributes_for :variables, allow_destroy: true + + before_validation(on: :update) do + # TODO: if validation failed, restore the deleted_obj + deleted_obj = Ci::PipelineScheduleVariable.where(pipeline_schedule_id: self).destroy_all + end + + after_validation(on: :update) do + # TODO: if validation failed, restore the deleted_obj + end + def owned_by?(current_user) owner == current_user end -- cgit v1.2.3 From 3ea04616c38493ae03b31f54c88b6551b6d65b6f Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 26 Jun 2017 02:59:27 +0900 Subject: Implement variables_attributes create/update cases --- app/models/ci/pipeline_schedule.rb | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 61215b1fb46..06b2b981252 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,7 +15,6 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true - validates_associated :variables before_save :set_next_run_at @@ -24,15 +23,6 @@ module Ci accepts_nested_attributes_for :variables, allow_destroy: true - before_validation(on: :update) do - # TODO: if validation failed, restore the deleted_obj - deleted_obj = Ci::PipelineScheduleVariable.where(pipeline_schedule_id: self).destroy_all - end - - after_validation(on: :update) do - # TODO: if validation failed, restore the deleted_obj - end - def owned_by?(current_user) owner == current_user end -- cgit v1.2.3 From a7c4673eb7e67202816e00d76148559d45441184 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 27 Jun 2017 16:24:51 +0900 Subject: Remove dependent => :destroy --- app/models/ci/pipeline_schedule.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 06b2b981252..440d9717fc8 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -9,7 +9,7 @@ module Ci belongs_to :owner, class_name: 'User' has_one :last_pipeline, -> { order(id: :desc) }, class_name: 'Ci::Pipeline' has_many :pipelines - has_many :variables, :dependent => :destroy, class_name: 'Ci::PipelineScheduleVariable' + has_many :variables, class_name: 'Ci::PipelineScheduleVariable' validates :cron, unless: :importing?, cron: true, presence: { unless: :importing? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } -- cgit v1.2.3 From 51730b3a15ce03bd5de83a978647059ad182378c Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 27 Jun 2017 16:55:27 +0900 Subject: zj nice catches --- app/models/ci/pipeline_schedule.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 440d9717fc8..df9df45edb0 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -59,5 +59,9 @@ module Ci Gitlab::Ci::CronParser.new(worker_cron, worker_time_zone) .next_time_from(next_run_at) end + + def job_variables + variables&.map(&:to_runner_variable) || [] + end end end -- cgit v1.2.3 From c99f8e8884d98bacb2d6f157a8265cbc05df73a3 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 3 Jul 2017 16:59:57 +0900 Subject: Implement uniqueness_of_in_memory_validator --- app/models/ci/pipeline_schedule.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index df9df45edb0..ad9f8b89924 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,6 +15,11 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true + validates :variables, uniqueness_of_in_memory: { + :collection => :variables, + :attrs => [:pipeline_schedule_id, :key], + :message => ['variables.key', 'keys are duplicated'] + } before_save :set_next_run_at -- cgit v1.2.3 From 507fedf3c39dbe6d2efff789d98b7b29ff9428a3 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Fri, 23 Jun 2017 03:57:13 +0900 Subject: Controller logic. Delete before modification. Halfway. --- app/models/ci/pipeline_schedule.rb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index ad9f8b89924..61215b1fb46 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -9,17 +9,13 @@ module Ci belongs_to :owner, class_name: 'User' has_one :last_pipeline, -> { order(id: :desc) }, class_name: 'Ci::Pipeline' has_many :pipelines - has_many :variables, class_name: 'Ci::PipelineScheduleVariable' + has_many :variables, :dependent => :destroy, class_name: 'Ci::PipelineScheduleVariable' validates :cron, unless: :importing?, cron: true, presence: { unless: :importing? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true - validates :variables, uniqueness_of_in_memory: { - :collection => :variables, - :attrs => [:pipeline_schedule_id, :key], - :message => ['variables.key', 'keys are duplicated'] - } + validates_associated :variables before_save :set_next_run_at @@ -28,6 +24,15 @@ module Ci accepts_nested_attributes_for :variables, allow_destroy: true + before_validation(on: :update) do + # TODO: if validation failed, restore the deleted_obj + deleted_obj = Ci::PipelineScheduleVariable.where(pipeline_schedule_id: self).destroy_all + end + + after_validation(on: :update) do + # TODO: if validation failed, restore the deleted_obj + end + def owned_by?(current_user) owner == current_user end @@ -64,9 +69,5 @@ module Ci Gitlab::Ci::CronParser.new(worker_cron, worker_time_zone) .next_time_from(next_run_at) end - - def job_variables - variables&.map(&:to_runner_variable) || [] - end end end -- cgit v1.2.3 From e364c118a05e4d11677b997a5e31b2f1aa8a4a92 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 26 Jun 2017 02:59:27 +0900 Subject: Implement variables_attributes create/update cases --- app/models/ci/pipeline_schedule.rb | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 61215b1fb46..06b2b981252 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,7 +15,6 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true - validates_associated :variables before_save :set_next_run_at @@ -24,15 +23,6 @@ module Ci accepts_nested_attributes_for :variables, allow_destroy: true - before_validation(on: :update) do - # TODO: if validation failed, restore the deleted_obj - deleted_obj = Ci::PipelineScheduleVariable.where(pipeline_schedule_id: self).destroy_all - end - - after_validation(on: :update) do - # TODO: if validation failed, restore the deleted_obj - end - def owned_by?(current_user) owner == current_user end -- cgit v1.2.3 From cfd5caa5e7d546436b82d94468defc0638270435 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 27 Jun 2017 16:24:51 +0900 Subject: Remove dependent => :destroy --- app/models/ci/pipeline_schedule.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 06b2b981252..440d9717fc8 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -9,7 +9,7 @@ module Ci belongs_to :owner, class_name: 'User' has_one :last_pipeline, -> { order(id: :desc) }, class_name: 'Ci::Pipeline' has_many :pipelines - has_many :variables, :dependent => :destroy, class_name: 'Ci::PipelineScheduleVariable' + has_many :variables, class_name: 'Ci::PipelineScheduleVariable' validates :cron, unless: :importing?, cron: true, presence: { unless: :importing? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } -- cgit v1.2.3 From d65d66e08bf62491fc4a3da322d36dfb9014eaac Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 27 Jun 2017 16:55:27 +0900 Subject: zj nice catches --- app/models/ci/pipeline_schedule.rb | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index 440d9717fc8..df9df45edb0 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -59,5 +59,9 @@ module Ci Gitlab::Ci::CronParser.new(worker_cron, worker_time_zone) .next_time_from(next_run_at) end + + def job_variables + variables&.map(&:to_runner_variable) || [] + end end end -- cgit v1.2.3 From 621f9307ff261f00c67b04210210a14cd7aac081 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Mon, 3 Jul 2017 16:59:57 +0900 Subject: Implement uniqueness_of_in_memory_validator --- app/models/ci/pipeline_schedule.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index df9df45edb0..ad9f8b89924 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,6 +15,11 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true + validates :variables, uniqueness_of_in_memory: { + :collection => :variables, + :attrs => [:pipeline_schedule_id, :key], + :message => ['variables.key', 'keys are duplicated'] + } before_save :set_next_run_at -- cgit v1.2.3 From 8f0a2b6d780347a5ce258ac1a6a6902ce9695ca1 Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Tue, 4 Jul 2017 19:04:21 +0900 Subject: Implement Ci::NestedUniquenessValidator --- app/models/ci/pipeline_schedule.rb | 5 ----- 1 file changed, 5 deletions(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index ad9f8b89924..df9df45edb0 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,11 +15,6 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true - validates :variables, uniqueness_of_in_memory: { - :collection => :variables, - :attrs => [:pipeline_schedule_id, :key], - :message => ['variables.key', 'keys are duplicated'] - } before_save :set_next_run_at -- cgit v1.2.3 From dafc34179488d54776e80b8604513184720985cd Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 6 Jul 2017 00:23:28 +0900 Subject: Revert "Implement Ci::NestedUniquenessValidator" This reverts commit 8f0a2b6d780347a5ce258ac1a6a6902ce9695ca1. --- app/models/ci/pipeline_schedule.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index df9df45edb0..ad9f8b89924 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,6 +15,11 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true + validates :variables, uniqueness_of_in_memory: { + :collection => :variables, + :attrs => [:pipeline_schedule_id, :key], + :message => ['variables.key', 'keys are duplicated'] + } before_save :set_next_run_at -- cgit v1.2.3 From 1acaf75d9f3afea468bf4116602d9f27ac71dc2d Mon Sep 17 00:00:00 2001 From: Shinya Maeda Date: Thu, 6 Jul 2017 00:45:26 +0900 Subject: Implement ayufan validator --- app/models/ci/pipeline_schedule.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'app/models/ci/pipeline_schedule.rb') diff --git a/app/models/ci/pipeline_schedule.rb b/app/models/ci/pipeline_schedule.rb index ad9f8b89924..e4ae1b35f66 100644 --- a/app/models/ci/pipeline_schedule.rb +++ b/app/models/ci/pipeline_schedule.rb @@ -15,11 +15,7 @@ module Ci validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } validates :description, presence: true - validates :variables, uniqueness_of_in_memory: { - :collection => :variables, - :attrs => [:pipeline_schedule_id, :key], - :message => ['variables.key', 'keys are duplicated'] - } + validates :variables, variable_duplicates: true before_save :set_next_run_at -- cgit v1.2.3