3 class TileNodes < ActiveRecord::Migration
4 def self.upgrade_table(from_table, to_table, model)
7 INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile)
8 SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000),
9 user_id, visible, tags, timestamp,
10 tile_for_point(CAST(ROUND(latitude * 10000000) AS INTEGER),
11 CAST(ROUND(longitude * 10000000) AS INTEGER))
14 rescue ActiveRecord::StatementInvalid => ex
16 INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile)
17 SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000),
18 user_id, visible, tags, timestamp, 0
22 model.find(:all).each do |n|
28 def self.downgrade_table(from_table, to_table)
30 INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp)
31 SELECT id, latitude / 10000000, longitude / 10000000,
32 user_id, visible, tags, timestamp
38 remove_index "current_nodes", :name => "current_nodes_timestamp_idx"
40 rename_table "current_nodes", "current_nodes_v5"
42 create_table "current_nodes", innodb_table do |t|
43 t.column "id", :bigint_pk_64, :null => false
44 t.column "latitude", :integer, :null => false
45 t.column "longitude", :integer, :null => false
46 t.column "user_id", :bigint, :limit => 20, :null => false
47 t.column "visible", :boolean, :null => false
48 t.column "tags", :text, :default => "", :null => false
49 t.column "timestamp", :datetime, :null => false
50 t.column "tile", :integer, :null => false
53 add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
54 add_index "current_nodes", ["tile"], :name => "current_nodes_tile_idx"
56 change_column "current_nodes", "tile", :four_byte_unsigned
58 upgrade_table "current_nodes_v5", "current_nodes", Node
60 drop_table "current_nodes_v5"
62 remove_index "nodes", :name=> "nodes_uid_idx"
63 remove_index "nodes", :name=> "nodes_timestamp_idx"
64 rename_table "nodes", "nodes_v5"
66 create_table "nodes", myisam_table do |t|
67 t.column "id", :bigint, :limit => 64, :null => false
68 t.column "latitude", :integer, :null => false
69 t.column "longitude", :integer, :null => false
70 t.column "user_id", :bigint, :limit => 20, :null => false
71 t.column "visible", :boolean, :null => false
72 t.column "tags", :text, :default => "", :null => false
73 t.column "timestamp", :datetime, :null => false
74 t.column "tile", :integer, :null => false
77 add_index "nodes", ["id"], :name => "nodes_uid_idx"
78 add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
79 add_index "nodes", ["tile"], :name => "nodes_tile_idx"
81 change_column "nodes", "tile", :four_byte_unsigned
83 upgrade_table "nodes_v5", "nodes", OldNode
89 rename_table "current_nodes", "current_nodes_v6"
91 create_table "current_nodes", innodb_table do |t|
92 t.column "id", :bigint_pk_64, :null => false
93 t.column "latitude", :double, :null => false
94 t.column "longitude", :double, :null => false
95 t.column "user_id", :bigint, :limit => 20, :null => false
96 t.column "visible", :boolean, :null => false
97 t.column "tags", :text, :default => "", :null => false
98 t.column "timestamp", :datetime, :null => false
101 add_index "current_nodes", ["latitude", "longitude"], :name => "current_nodes_lat_lon_idx"
102 add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
104 downgrade_table "current_nodes_v6", "current_nodes"
106 drop_table "current_nodes_v6"
108 rename_table "nodes", "nodes_v6"
110 create_table "nodes", myisam_table do |t|
111 t.column "id", :bigint, :limit => 64, :null => false
112 t.column "latitude", :double, :null => false
113 t.column "longitude", :double, :null => false
114 t.column "user_id", :bigint, :limit => 20, :null => false
115 t.column "visible", :boolean, :null => false
116 t.column "tags", :text, :default => "", :null => false
117 t.column "timestamp", :datetime, :null => false
120 add_index "nodes", ["id"], :name => "nodes_uid_idx"
121 add_index "nodes", ["latitude", "longitude"], :name => "nodes_latlon_idx"
122 add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
124 downgrade_table "nodes_v6", "nodes"
126 drop_table "nodes_v6"