From 20022e457f3f211f7274ea4f24443ea19c4d5c7f Mon Sep 17 00:00:00 2001 From: Shaun McDonald Date: Tue, 30 Sep 2008 14:29:44 +0000 Subject: [PATCH 1/1] changing the changesets migrations, so that the user id is now the changeset id for the nodes/ways/relations --- db/migrate/020_add_changesets.rb | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/db/migrate/020_add_changesets.rb b/db/migrate/020_add_changesets.rb index 40455ec68..15122957b 100644 --- a/db/migrate/020_add_changesets.rb +++ b/db/migrate/020_add_changesets.rb @@ -1,4 +1,7 @@ class AddChangesets < ActiveRecord::Migration + @@conv_user_tables = ['current_nodes', + 'current_relations', 'current_ways', 'nodes', 'relations', 'ways' ] + def self.up create_table "changesets", innodb_table do |t| t.column "id", :bigint, :limit => 20, :null => false @@ -23,10 +26,26 @@ class AddChangesets < ActiveRecord::Migration end add_index "changeset_tags", ["id"], :name => "changeset_tags_id_idx" + + # + # Initially we will have one changeset for every user containing + # all edits up to the API change, + # all the changesets will have the id of the user that made them. + # We need to generate a changeset for each user in the database + execute "INSERT INTO changesets (id, user_id, created_at, open)" + + "SELECT user_id, user_id, creation_time, 0 from users;" + + @@conv_user_tables.each { |tbl| + rename_column tbl, :user_id, :changeset_id + #foreign keys too + add_foreign_key tbl, :changeset_id, [:id], :users + } end def self.down - drop_table "changesets" - drop_table "changeset_tags" + # It's not easy to generate the user ids from the changesets + raise IrreversibleMigration.new + #drop_table "changesets" + #drop_table "changeset_tags" end end -- 2.43.2