aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/clean_up.rb
diff options
context:
space:
mode:
authorXinhui2017-06-07 17:03:37 +0200
committerXinhui2017-06-08 15:41:21 +0200
commit0683fa11937480734ac1da5db993442b8481d674 (patch)
tree2d0650c27d88e52cde44195b2010e772a37648b7 /app/models/clean_up.rb
parent62e45a99b39529fd478235c081f77e7511903438 (diff)
downloadchouette-core-0683fa11937480734ac1da5db993442b8481d674.tar.bz2
Wip Cleanup time_tables time_table_dates time_table_periods
Diffstat (limited to 'app/models/clean_up.rb')
-rw-r--r--app/models/clean_up.rb62
1 files changed, 47 insertions, 15 deletions
diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb
index 457e90b65..b14067b73 100644
--- a/app/models/clean_up.rb
+++ b/app/models/clean_up.rb
@@ -15,25 +15,57 @@ class CleanUp < ActiveRecord::Base
end
def clean
- result = {}
- result['time_table_count'] = self.clean_time_tables
- result['vehicle_journey_count'] = self.clean_vehicle_journeys
- result['journey_pattern_count'] = self.clean_journey_patterns
- result
+ {}.tap do |result|
+ result['time_table'] = send("destroy_time_tables_#{self.date_type}").try(:count)
+ result['time_table_date'] = send("destroy_time_tables_dates_#{self.date_type}").try(:count)
+ result['time_table_period'] = send("destroy_time_tables_periods_#{self.date_type}").try(:count)
+ end
+ end
+
+ def destroy_time_tables_between
+ time_tables = Chouette::TimeTable.where('end_date <= ? AND start_date >= ?', self.end_date, self.begin_date)
+ self.destroy_time_tables(time_tables)
+ end
+
+ def destroy_time_tables_before
+ time_tables = Chouette::TimeTable.where('end_date <= ?', self.begin_date)
+ self.destroy_time_tables(time_tables)
+ end
+
+ def destroy_time_tables_after
+ time_tables = Chouette::TimeTable.where('start_date >= ?', self.begin_date)
+ self.destroy_time_tables(time_tables)
+ end
+
+ def destroy_time_table_dates_before
+ Chouette::TimeTableDate.in_dates.where('date <= ?', self.begin_date).destroy_all
+ end
+
+ def destroy_time_tables_dates_after
+ Chouette::TimeTableDate.in_dates.where('date >= ?', self.begin_date).destroy_all
+ end
+
+ def destroy_time_tables_dates_between
+ Chouette::TimeTableDate.in_dates.where('date >= ? AND date <= ?', self.begin_date, self.end_date).destroy_all
+ end
+
+ def destroy_time_tables_periods_before
+ Chouette::TimeTablePeriod.where('period_end <= ?', self.begin_date).destroy_all
end
- def clean_time_tables
- Chouette::TimeTable.validity_out_between?(begin_date, end_date).delete_all
+ def destroy_time_tables_periods_after
+ Chouette::TimeTablePeriod.where('period_start >= ?', self.begin_date).destroy_all
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
+ def destroy_time_tables_periods_between
+ Chouette::TimeTablePeriod.where('period_start >= ? AND period_end <= ?', self.begin_date, self.end_date).destroy_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 destroy_time_tables(time_tables)
+ time_tables.each do |time_table|
+ time_table.vehicle_journeys.map(&:destroy)
+ end
+ time_tables.destroy_all
end
aasm column: :status do
@@ -61,11 +93,11 @@ class CleanUp < ActiveRecord::Base
def log_successful message_attributs
update_attribute(:ended_at, Time.now)
- CleanUpResult.create(clean_up: self, message_key: :successfull, message_attributs: message_attributs)
+ CleanUpResult.create(destroy_up: self, message_key: :successfull, message_attributs: message_attributs)
end
def log_failed message_attributs
update_attribute(:ended_at, Time.now)
- CleanUpResult.create(clean_up: self, message_key: :failed, message_attributs: message_attributs)
+ CleanUpResult.create(destroy_up: self, message_key: :failed, message_attributs: message_attributs)
end
end