class TileUsers < ActiveRecord::Migration[5.1]
  def up
    add_column :users, :home_tile, :bigint
    add_index :users, [:home_tile], :name => "users_home_idx"

    if ENV["USE_DB_FUNCTIONS"]
      User.update_all("home_tile = tile_for_point(cast(round(home_lat * #{GeoRecord::SCALE}) as integer), cast(round(home_lon * #{GeoRecord::SCALE}) as integer))")
    else
      User.all.each(&:save!)
    end
  end

  def down
    remove_index :users, :name => "users_home_idx"
    remove_column :users, :home_tile
  end
end
