X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/d9e070e06956801aba2378c1b79b4d9f13ae12ee..9e1946b2837abe146777773177f4c48ffde8c06f:/db/migrate/020_add_changesets.rb diff --git a/db/migrate/020_add_changesets.rb b/db/migrate/020_add_changesets.rb index 40455ec68..75a909e80 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 id, 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], :changesets, [:id] + } 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