From a1419b9dc0edf8dbb15f4d3d6fcd39924ca33040 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 6 Jan 2011 14:16:05 -0800 Subject: [PATCH] Person#owner_mongo_id should be null if the csv has an empty string --- app/models/mongo.rb | 2 +- .../20110105051803_create_import_tables.rb | 13 +++++++++++++ db/schema.rb | 15 +++++++++++++++ lib/data_conversion/import_to_mysql.rb | 15 +++++++++++++-- .../data_conversion/import_to_mysql_spec.rb | 19 +++++++++++++++++++ 5 files changed, 61 insertions(+), 3 deletions(-) diff --git a/app/models/mongo.rb b/app/models/mongo.rb index 5d746260c..0050ab5c1 100644 --- a/app/models/mongo.rb +++ b/app/models/mongo.rb @@ -9,7 +9,7 @@ module Mongo class Contact < ActiveRecord::Base; end #class Invitation < ActiveRecord::Base; end #class Notification < ActiveRecord::Base; end - #class Person < ActiveRecord::Base; end + class Person < ActiveRecord::Base; end #Photo? #Post? class PostVisibility < ActiveRecord::Base; end diff --git a/db/migrate/20110105051803_create_import_tables.rb b/db/migrate/20110105051803_create_import_tables.rb index 452569602..775b55e69 100644 --- a/db/migrate/20110105051803_create_import_tables.rb +++ b/db/migrate/20110105051803_create_import_tables.rb @@ -37,8 +37,21 @@ class CreateImportTables < ActiveRecord::Migration t.boolean :pending, :default => true t.timestamps end + add_index :mongo_contacts, [:user_mongo_id, :pending] add_index :mongo_contacts, [:person_mongo_id, :pending] + create_table :mongo_people do |t| + t.string :mongo_id + t.string :guid + t.text :url + t.string :diaspora_handle + t.text :serialized_public_key + t.string :owner_mongo_id + t.timestamps + end + add_index :mongo_people, :guid, :unique => true + add_index :mongo_people, :owner_mongo_id, :unique => true + add_index :mongo_people, :diaspora_handle, :unique => true create_table :mongo_post_visibilities do |t| t.string :aspect_mongo_id diff --git a/db/schema.rb b/db/schema.rb index c833b65ec..5b39be26e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -118,6 +118,21 @@ ActiveRecord::Schema.define(:version => 20110105051803) do add_index "mongo_contacts", ["person_mongo_id", "pending"], :name => "index_mongo_contacts_on_person_mongo_id_and_pending" add_index "mongo_contacts", ["user_mongo_id", "pending"], :name => "index_mongo_contacts_on_user_mongo_id_and_pending" + create_table "mongo_people", :force => true do |t| + t.string "mongo_id" + t.string "guid" + t.text "url" + t.string "diaspora_handle" + t.text "serialized_public_key" + t.string "owner_mongo_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "mongo_people", ["diaspora_handle"], :name => "index_mongo_people_on_diaspora_handle", :unique => true + add_index "mongo_people", ["guid"], :name => "index_mongo_people_on_guid", :unique => true + add_index "mongo_people", ["owner_mongo_id"], :name => "index_mongo_people_on_owner_mongo_id", :unique => true + create_table "mongo_post_visibilities", :force => true do |t| t.string "aspect_mongo_id" t.string "post_mongo_id" diff --git a/lib/data_conversion/import_to_mysql.rb b/lib/data_conversion/import_to_mysql.rb index e4493cf3a..55b65821b 100644 --- a/lib/data_conversion/import_to_mysql.rb +++ b/lib/data_conversion/import_to_mysql.rb @@ -17,9 +17,9 @@ module DataConversion end def process_raw_tables - + end - + def truncate_tables Mongo::User.connection.execute "TRUNCATE TABLE mongo_users" Mongo::Aspect.connection.execute "TRUNCATE TABLE mongo_aspects" @@ -105,6 +105,17 @@ module DataConversion log "Finished. Imported #{Mongo::Request.count} requests." end + def import_raw_people + log "Loading people file..." + Mongo::Aspect.connection.execute <<-SQL + #{load_string("people")} + #{infile_opts} + (created_at,updated_at,serialized_public_key,url,mongo_id,@owner_mongo_id_var,diaspora_handle) + SET owner_mongo_id = @owner_mongo_id_var + SQL + log "Finished. Imported #{Mongo::Person.count} people." + end + def infile_opts <<-OPTS FIELDS TERMINATED BY ',' diff --git a/spec/lib/data_conversion/import_to_mysql_spec.rb b/spec/lib/data_conversion/import_to_mysql_spec.rb index ec7fc5cef..a4af8d53f 100644 --- a/spec/lib/data_conversion/import_to_mysql_spec.rb +++ b/spec/lib/data_conversion/import_to_mysql_spec.rb @@ -100,7 +100,26 @@ describe DataConversion::ImportToMysql do contact.created_at.should be_nil end end + describe "people" do + before do + copy_fixture_for("people") + end + it "imports data into the mongo_people table" do + Mongo::Person.count.should == 0 + @migrator.import_raw_people + Mongo::Person.count.should == 6 + end + + it "imports all the columns" do + @migrator.import_raw_people + person = Mongo::Person.first + pp person + person.owner_mongo_id.should be_nil + person.mongo_id.should == "4d26212bcc8cb44df200000d" + person.created_at.should be_nil + end + end describe "post_visibilities" do before do copy_fixture_for("post_visibilities")