namespace "db" do
  desc "Adds a version number to the nodes table"
  task :node_version do
    require File.dirname(__FILE__) + "/../../config/environment"

    increment = 1000
    offset = 0
    id_max = OldNode.find(:first, :order => "id desc").id

    while offset < (id_max + increment)
      hash = {}

      # should be offsetting not selecting
      OldNode.find(:all, :limit => increment, :offset => offset, :order => "timestamp").each do |node|
        hash[node.id] ||= []
        hash[node.id] << node
      end

      hash.each_value do |node_array|
        n = 1
        node_array.each do |node|
          temp_old_node = TempOldNode.new
          temp_old_node.id = node.id
          temp_old_node.latitude = node.latitude
          temp_old_node.longitude = node.longitude
          temp_old_node.user_id = node.user_id
          temp_old_node.visible = node.visible
          temp_old_node.timestamp = node.timestamp
          temp_old_node.tile = node.tile
          temp_old_node.version = n
          temp_old_node.save! || raise
          n += 1
        end
      end
      offset += increment
    end
  end
end