]> git.openstreetmap.org Git - rails.git/commitdiff
rake task to populate node_tags and current_node_tags tables with values from the...
authorNick Black <nickb@svn.openstreetmap.org>
Wed, 23 Jan 2008 11:44:34 +0000 (11:44 +0000)
committerNick Black <nickb@svn.openstreetmap.org>
Wed, 23 Jan 2008 11:44:34 +0000 (11:44 +0000)
lib/tasks/populate_node_tags.rake [new file with mode: 0644]

diff --git a/lib/tasks/populate_node_tags.rake b/lib/tasks/populate_node_tags.rake
new file mode 100644 (file)
index 0000000..186b44e
--- /dev/null
@@ -0,0 +1,40 @@
+namespace 'db' do
+  desc 'Populate the node_tags table'
+  task :node_tags  do
+    require File.dirname(__FILE__) + '/../../config/environment'
+
+    #"created_by=YahooApplet 1.0;highway=traffic_signals"
+    node_count = Node.count
+    for n in (0..node_count)
+      Node.find(:all, :limit => 1, :offset => n).each do |node|
+        seq_id = 1
+        node.tags.split(';').each do |tag|
+          nt = NodeTag.new
+          nt.id = node.id
+          nt.k = tag.split('=')[0]
+          nt.v = tag.split('=')[1]
+          nt.sequence_id = seq_id 
+          nt.save! || raise
+          seq_id += 1
+        end
+
+        version = 1 #version refers to one set of histories
+        node.old_nodes.find(:all, :order => 'timestamp asc').each do |old_node|
+        sequence_id = 1 #sequence_id refers to the sequence of node tags within a history
+        old_node.tags.split(';').each do |tag|
+          ont = OldNodeTag.new
+          ont.id = node.id #the id of the node tag
+          ont.k = tag.split('=')[0]
+          ont.v = tag.split('=')[1]
+          ont.version = version
+          ont.sequence_id = sequence_id
+          ont.save! || raise
+          sequence_id += 1
+          end     
+        version += 1
+        end
+      end
+    end
+  end
+end