3 class TileNodes < ActiveRecord::Migration[4.2]
4 class Node < ApplicationRecord
5 self.table_name = "current_nodes"
8 class OldNode < ApplicationRecord
9 self.table_name = "nodes"
12 def self.upgrade_table(from_table, to_table, model)
13 if ENV["USE_DB_FUNCTIONS"]
15 INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile)
16 SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000),
17 user_id, visible, tags, timestamp,
18 tile_for_point(CAST(ROUND(latitude * 10000000) AS INTEGER),
19 CAST(ROUND(longitude * 10000000) AS INTEGER))
24 INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile)
25 SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000),
26 user_id, visible, tags, timestamp, 0
30 model.all.each(&:save!)
34 def self.downgrade_table(from_table, to_table)
36 INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp)
37 SELECT id, latitude / 10000000, longitude / 10000000,
38 user_id, visible, tags, timestamp
44 remove_index "current_nodes", :name => "current_nodes_timestamp_idx"
46 rename_table "current_nodes", "current_nodes_v5"
48 create_table "current_nodes", :id => false do |t|
49 t.column "id", :bigserial, :primary_key => true, :null => false
50 t.column "latitude", :integer, :null => false
51 t.column "longitude", :integer, :null => false
52 t.column "user_id", :bigint, :null => false
53 t.column "visible", :boolean, :null => false
54 t.column "tags", :text, :default => "", :null => false
55 t.column "timestamp", :datetime, :null => false
56 t.column "tile", :integer, :null => false
59 add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
60 add_index "current_nodes", ["tile"], :name => "current_nodes_tile_idx"
62 change_column "current_nodes", "tile", :bigint
64 upgrade_table "current_nodes_v5", "current_nodes", Node
66 drop_table "current_nodes_v5"
68 remove_index "nodes", :name => "nodes_uid_idx"
69 remove_index "nodes", :name => "nodes_timestamp_idx"
70 rename_table "nodes", "nodes_v5"
72 create_table "nodes", :id => false do |t|
73 t.column "id", :bigint, :null => false
74 t.column "latitude", :integer, :null => false
75 t.column "longitude", :integer, :null => false
76 t.column "user_id", :bigint, :null => false
77 t.column "visible", :boolean, :null => false
78 t.column "tags", :text, :default => "", :null => false
79 t.column "timestamp", :datetime, :null => false
80 t.column "tile", :integer, :null => false
83 add_index "nodes", ["id"], :name => "nodes_uid_idx"
84 add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
85 add_index "nodes", ["tile"], :name => "nodes_tile_idx"
87 change_column "nodes", "tile", :bigint
89 upgrade_table "nodes_v5", "nodes", OldNode
95 rename_table "current_nodes", "current_nodes_v6"
97 create_table "current_nodes", :id => false do |t|
98 t.column "id", :bigserial, :primary_key => true, :null => false
99 t.column "latitude", :float, :limit => 53, :null => false
100 t.column "longitude", :float, :limit => 53, :null => false
101 t.column "user_id", :bigint, :null => false
102 t.column "visible", :boolean, :null => false
103 t.column "tags", :text, :default => "", :null => false
104 t.column "timestamp", :datetime, :null => false
107 add_index "current_nodes", %w[latitude longitude], :name => "current_nodes_lat_lon_idx"
108 add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
110 downgrade_table "current_nodes_v6", "current_nodes"
112 drop_table "current_nodes_v6"
114 rename_table "nodes", "nodes_v6"
116 create_table "nodes", :id => false do |t|
117 t.column "id", :bigint, :null => false
118 t.column "latitude", :float, :limit => 53, :null => false
119 t.column "longitude", :float, :limit => 53, :null => false
120 t.column "user_id", :bigint, :null => false
121 t.column "visible", :boolean, :null => false
122 t.column "tags", :text, :default => "", :null => false
123 t.column "timestamp", :datetime, :null => false
126 add_index "nodes", ["id"], :name => "nodes_uid_idx"
127 add_index "nodes", %w[latitude longitude], :name => "nodes_latlon_idx"
128 add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
130 downgrade_table "nodes_v6", "nodes"
132 drop_table "nodes_v6"