aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/clean_up.rb
diff options
context:
space:
mode:
authorXinhui2016-11-15 16:39:26 +0100
committerXinhui2016-11-15 16:39:30 +0100
commitaa6a6f3aabb621e8697cc91bb9760d086678ca89 (patch)
tree83cd246ce0ed657746f50a5015c71159104e46b3 /app/models/clean_up.rb
parentcddd627eacd1a0bf252494fd7394438f958d53ab (diff)
downloadchouette-core-aa6a6f3aabb621e8697cc91bb9760d086678ca89.tar.bz2
Refactoring CleanUpResult as ActiveRecord model
Refs #1933
Diffstat (limited to 'app/models/clean_up.rb')
-rw-r--r--app/models/clean_up.rb56
1 files changed, 32 insertions, 24 deletions
diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb
index 7b4af2fd6..607362682 100644
--- a/app/models/clean_up.rb
+++ b/app/models/clean_up.rb
@@ -1,6 +1,8 @@
class CleanUp < ActiveRecord::Base
include AASM
belongs_to :referential
+ has_one :clean_up_result
+
validates :expected_date, presence: true
after_commit :perform_cleanup, :on => :create
@@ -8,51 +10,57 @@ class CleanUp < ActiveRecord::Base
CleanUpWorker.perform_async(self.id)
end
+ def clean
+ result = {}
+ tms = Chouette::TimeTable.validity_out_from_on?(expected_date)
+ tms.each.map(&:delete)
+
+ result['time_table_count'] = tms.size
+ result['vehicle_journey_count'] = self.clean_vehicle_journeys
+ result['journey_pattern_count'] = self.clean_journey_patterns
+ result
+ end
+
+ def clean_vehicle_journeys
+ ids = Chouette::VehicleJourney.includes(:time_tables).where(:time_tables => {id: nil}).pluck(:id)
+ Chouette::VehicleJourney.where(id: ids).delete_all
+ end
+
+ def clean_journey_patterns
+ ids = Chouette::JourneyPattern.includes(:vehicle_journeys).where(:vehicle_journeys => {id: nil}).pluck(:id)
+ Chouette::JourneyPattern.where(id: ids).delete_all
+ end
+
aasm column: :status do
state :new, :initial => true
state :pending
state :successful
state :failed
- event :run, after: :update_started_at do
+ event :run, after: :log_pending do
transitions :from => [:new, :failed], :to => :pending
end
- event :successful, after: :update_ended_at do
+ event :successful, after: :log_successful do
transitions :from => [:pending, :failed], :to => :successful
end
- event :failed, after: :update_ended_at do
+ event :failed, after: :log_failed do
transitions :from => :pending, :to => :failed
end
end
- def update_started_at
+ def log_pending
update_attribute(:started_at, Time.now)
end
- def update_ended_at
+ def log_successful message_attributs
update_attribute(:ended_at, Time.now)
+ CleanUpResult.create(clean_up: self, message_key: :successfull, message_attributs: message_attributs)
end
- def clean
- result = CleanUpResult.new
- tms = Chouette::TimeTable.validity_out_from_on?(expected_date)
- result.time_table_count = tms.size
- tms.each.map(&:delete)
-
- result.vehicle_journey_count = self.clean_vehicle_journeys
- result.journey_pattern_count = self.clean_journey_patterns
- result
- end
-
- def clean_vehicle_journeys
- ids = Chouette::VehicleJourney.includes(:time_tables).where(:time_tables => {id: nil}).pluck(:id)
- Chouette::VehicleJourney.where(id: ids).delete_all
- end
-
- def clean_journey_patterns
- ids = Chouette::JourneyPattern.includes(:vehicle_journeys).where(:vehicle_journeys => {id: nil}).pluck(:id)
- Chouette::JourneyPattern.where(id: ids).delete_all
+ def log_failed message_attributs
+ update_attribute(:ended_at, Time.now)
+ # self.clean_up_result.create(message_key: :failed, message_attributs: message_attributs)
end
end