diff options
| author | Xinhui | 2016-11-15 16:39:26 +0100 | 
|---|---|---|
| committer | Xinhui | 2016-11-15 16:39:30 +0100 | 
| commit | aa6a6f3aabb621e8697cc91bb9760d086678ca89 (patch) | |
| tree | 83cd246ce0ed657746f50a5015c71159104e46b3 /app/models/clean_up.rb | |
| parent | cddd627eacd1a0bf252494fd7394438f958d53ab (diff) | |
| download | chouette-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.rb | 56 | 
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 | 
