This removes both the pl/pgsql version and the shared library version of the `tile_for_point` SQL function. This function was only used in some old migrations, and is not required for production usage. Removing this function simplifies the installation and configuration for new developers. These SQL functions are separate from the `tile_for_point` ruby/C function which is part of the quad_tile gem. This function is still used when creating and updating database records. Fixes #3110.
121 lines
4.3 KiB
Ruby
121 lines
4.3 KiB
Ruby
class TileNodes < ActiveRecord::Migration[4.2]
|
|
class Node < ApplicationRecord
|
|
self.table_name = "current_nodes"
|
|
end
|
|
|
|
class OldNode < ApplicationRecord
|
|
self.table_name = "nodes"
|
|
end
|
|
|
|
def self.upgrade_table(from_table, to_table, model)
|
|
execute <<-SQL.squish
|
|
INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp, tile)
|
|
SELECT id, ROUND(latitude * 10000000), ROUND(longitude * 10000000),
|
|
user_id, visible, tags, timestamp, 0
|
|
FROM #{from_table}
|
|
SQL
|
|
|
|
model.all.each(&:save!)
|
|
end
|
|
|
|
def self.downgrade_table(from_table, to_table)
|
|
execute <<-SQL.squish
|
|
INSERT INTO #{to_table} (id, latitude, longitude, user_id, visible, tags, timestamp)
|
|
SELECT id, latitude / 10000000, longitude / 10000000,
|
|
user_id, visible, tags, timestamp
|
|
FROM #{from_table}
|
|
SQL
|
|
end
|
|
|
|
def self.up
|
|
remove_index "current_nodes", :name => "current_nodes_timestamp_idx"
|
|
|
|
rename_table "current_nodes", "current_nodes_v5"
|
|
|
|
create_table "current_nodes", :id => false do |t|
|
|
t.column "id", :bigserial, :primary_key => true, :null => false
|
|
t.column "latitude", :integer, :null => false
|
|
t.column "longitude", :integer, :null => false
|
|
t.column "user_id", :bigint, :null => false
|
|
t.column "visible", :boolean, :null => false
|
|
t.column "tags", :text, :default => "", :null => false
|
|
t.column "timestamp", :datetime, :null => false
|
|
t.column "tile", :integer, :null => false
|
|
end
|
|
|
|
add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
|
|
add_index "current_nodes", ["tile"], :name => "current_nodes_tile_idx"
|
|
|
|
change_column "current_nodes", "tile", :bigint
|
|
|
|
upgrade_table "current_nodes_v5", "current_nodes", Node
|
|
|
|
drop_table "current_nodes_v5"
|
|
|
|
remove_index "nodes", :name => "nodes_uid_idx"
|
|
remove_index "nodes", :name => "nodes_timestamp_idx"
|
|
rename_table "nodes", "nodes_v5"
|
|
|
|
create_table "nodes", :id => false do |t|
|
|
t.column "id", :bigint, :null => false
|
|
t.column "latitude", :integer, :null => false
|
|
t.column "longitude", :integer, :null => false
|
|
t.column "user_id", :bigint, :null => false
|
|
t.column "visible", :boolean, :null => false
|
|
t.column "tags", :text, :default => "", :null => false
|
|
t.column "timestamp", :datetime, :null => false
|
|
t.column "tile", :integer, :null => false
|
|
end
|
|
|
|
add_index "nodes", ["id"], :name => "nodes_uid_idx"
|
|
add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
|
|
add_index "nodes", ["tile"], :name => "nodes_tile_idx"
|
|
|
|
change_column "nodes", "tile", :bigint
|
|
|
|
upgrade_table "nodes_v5", "nodes", OldNode
|
|
|
|
drop_table "nodes_v5"
|
|
end
|
|
|
|
def self.down
|
|
rename_table "current_nodes", "current_nodes_v6"
|
|
|
|
create_table "current_nodes", :id => false do |t|
|
|
t.column "id", :bigserial, :primary_key => true, :null => false
|
|
t.column "latitude", :float, :limit => 53, :null => false
|
|
t.column "longitude", :float, :limit => 53, :null => false
|
|
t.column "user_id", :bigint, :null => false
|
|
t.column "visible", :boolean, :null => false
|
|
t.column "tags", :text, :default => "", :null => false
|
|
t.column "timestamp", :datetime, :null => false
|
|
end
|
|
|
|
add_index "current_nodes", %w[latitude longitude], :name => "current_nodes_lat_lon_idx"
|
|
add_index "current_nodes", ["timestamp"], :name => "current_nodes_timestamp_idx"
|
|
|
|
downgrade_table "current_nodes_v6", "current_nodes"
|
|
|
|
drop_table "current_nodes_v6"
|
|
|
|
rename_table "nodes", "nodes_v6"
|
|
|
|
create_table "nodes", :id => false do |t|
|
|
t.column "id", :bigint, :null => false
|
|
t.column "latitude", :float, :limit => 53, :null => false
|
|
t.column "longitude", :float, :limit => 53, :null => false
|
|
t.column "user_id", :bigint, :null => false
|
|
t.column "visible", :boolean, :null => false
|
|
t.column "tags", :text, :default => "", :null => false
|
|
t.column "timestamp", :datetime, :null => false
|
|
end
|
|
|
|
add_index "nodes", ["id"], :name => "nodes_uid_idx"
|
|
add_index "nodes", %w[latitude longitude], :name => "nodes_latlon_idx"
|
|
add_index "nodes", ["timestamp"], :name => "nodes_timestamp_idx"
|
|
|
|
downgrade_table "nodes_v6", "nodes"
|
|
|
|
drop_table "nodes_v6"
|
|
end
|
|
end
|