Modernise use of find and update_all in database migrations
[rails.git] / db / migrate / 005_tile_tracepoints.rb
1 require 'migrate'
2
3 class TileTracepoints < ActiveRecord::Migration
4   def self.up
5     add_column "gps_points", "tile", :four_byte_unsigned
6     add_index "gps_points", ["tile"], :name => "points_tile_idx"
7     remove_index "gps_points", :name => "points_idx"
8
9     if ENV["USE_DB_FUNCTIONS"]
10       Tracepoint.update_all("latitude = latitude * 10, longitude = longitude * 10, tile = tile_for_point(latitude * 10, longitude * 10)")
11     else
12       Tracepoint.all.each do |tp|
13         tp.latitude = tp.latitude * 10
14         tp.longitude = tp.longitude * 10
15         tp.save!
16       end
17     end
18   end
19
20   def self.down
21     Tracepoint.update_all("latitude = latitude / 10, longitude = longitude / 10")
22
23     add_index "gps_points", ["latitude", "longitude"], :name => "points_idx"
24     remove_index "gps_points", :name => "points_tile_idx"
25     remove_column "gps_points", "tile"
26   end
27 end