mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
Merge pull request #2988 from aignatov-bio/ai-sci-5260-add-direction-condition-for-status-consequences
Add direction condition for status consequences [SCI-5260]
This commit is contained in:
commit
a27c78e445
|
@ -3,11 +3,11 @@
|
|||
class MyModuleStatusConsequencesJob < ApplicationJob
|
||||
queue_as :high_priority
|
||||
|
||||
def perform(my_module, my_module_status_consequences)
|
||||
def perform(my_module, my_module_status_consequences, status_changing_direction)
|
||||
error_raised = false
|
||||
my_module.transaction do
|
||||
my_module_status_consequences.each do |consequence|
|
||||
consequence.call(my_module)
|
||||
consequence.public_send(status_changing_direction, my_module)
|
||||
end
|
||||
my_module.update!(status_changing: false)
|
||||
rescue StandardError => e
|
||||
|
|
|
@ -506,13 +506,19 @@ class MyModule < ApplicationRecord
|
|||
self.changing_from_my_module_status_id = my_module_status_id_was if my_module_status_id_was.present?
|
||||
self.status_changing = true
|
||||
|
||||
status_changing_direction = my_module_status.previous_status_id == my_module_status_id_was ? :forward : :backward
|
||||
|
||||
yield
|
||||
|
||||
if my_module_status.my_module_status_consequences.any?(&:runs_in_background?)
|
||||
MyModuleStatusConsequencesJob.perform_later(self, my_module_status.my_module_status_consequences.to_a)
|
||||
MyModuleStatusConsequencesJob.perform_later(
|
||||
self,
|
||||
my_module_status.my_module_status_consequences.to_a,
|
||||
status_changing_direction
|
||||
)
|
||||
else
|
||||
my_module_status.my_module_status_consequences.each do |consequence|
|
||||
consequence.call(self)
|
||||
consequence.public_send(status_changing_direction, self)
|
||||
end
|
||||
update!(status_changing: false)
|
||||
end
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
class MyModuleStatusConsequence < ApplicationRecord
|
||||
belongs_to :my_module_status
|
||||
|
||||
def forward(my_module); end
|
||||
|
||||
def backward(my_module); end
|
||||
|
||||
def runs_in_background?
|
||||
false
|
||||
end
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Just an example, to be replaced with an actual implementation
|
||||
module MyModuleStatusConsequences
|
||||
class Completion < MyModuleStatusConsequence
|
||||
def call(my_module)
|
||||
def forward(my_module)
|
||||
my_module.state = 'completed'
|
||||
my_module.completed_on = DateTime.now
|
||||
my_module.save!
|
||||
|
|
|
@ -6,7 +6,7 @@ module MyModuleStatusConsequences
|
|||
true
|
||||
end
|
||||
|
||||
def call(my_module)
|
||||
def forward(my_module)
|
||||
my_module.assigned_repositories.each do |repository|
|
||||
repository_snapshot = ::RepositorySnapshot.create_preliminary(repository, my_module)
|
||||
service = Repositories::SnapshotProvisioningService.call(repository_snapshot: repository_snapshot)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Just an example, to be replaced with an actual implementation
|
||||
module MyModuleStatusConsequences
|
||||
class Uncompletion < MyModuleStatusConsequence
|
||||
def call(my_module)
|
||||
def backward(my_module)
|
||||
return unless my_module.state == 'completed'
|
||||
|
||||
my_module.state = 'uncompleted'
|
||||
|
|
Loading…
Reference in a new issue