diff --git a/app/models/mongo.rb b/app/models/mongo.rb index 5a1b6a1a5d6dc5faf851658391110f13ad429620..f04aceca26aaaee3d70feda0e8a562c2f82ab7c3 100644 --- a/app/models/mongo.rb +++ b/app/models/mongo.rb @@ -6,4 +6,6 @@ module Mongo class User < ActiveRecord::Base; end class Aspect < ActiveRecord::Base; end class AspectMembership < ActiveRecord::Base; end + class Comment < ActiveRecord::Base; end + class Contact < ActiveRecord::Base; end end diff --git a/db/migrate/20110105051803_create_import_tables.rb b/db/migrate/20110105051803_create_import_tables.rb index 8b7c4939e4e4e35cf842b8e7ceb084dd1b53ad55..652ee1557c6cbfff512a231f916a800cd9563af2 100644 --- a/db/migrate/20110105051803_create_import_tables.rb +++ b/db/migrate/20110105051803_create_import_tables.rb @@ -16,6 +16,30 @@ class CreateImportTables < ActiveRecord::Migration add_index :mongo_aspect_memberships, :aspect_mongo_id add_index :mongo_aspect_memberships, :contact_mongo_id + create_table :mongo_comments do |t| + t.text :text + t.string :mongo_id + t.string :post_mongo_id + t.string :person_mongo_id + t.string :guid + t.text :creator_signature + t.text :post_creator_signature + t.text :youtube_titles + t.timestamps + end + add_index :mongo_comments, :guid, :unique => true + add_index :mongo_comments, :post_mongo_id + + create_table :mongo_contacts do |t| + t.string :mongo_id + t.string :user_mongo_id + t.string :person_mongo_id + 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_users do |t| t.string :mongo_id t.string :username diff --git a/db/schema.rb b/db/schema.rb index 4feea90d6d4c5b750a2bf52865e7408239110e02..5702d6524896f56f6990d65dbf2f32c8affea539 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -90,6 +90,34 @@ ActiveRecord::Schema.define(:version => 20110105051803) do add_index "mongo_aspects", ["user_mongo_id"], :name => "index_mongo_aspects_on_user_mongo_id" + create_table "mongo_comments", :force => true do |t| + t.text "text" + t.string "mongo_id" + t.string "post_mongo_id" + t.string "person_mongo_id" + t.string "guid" + t.text "creator_signature" + t.text "post_creator_signature" + t.text "youtube_titles" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "mongo_comments", ["guid"], :name => "index_mongo_comments_on_guid", :unique => true + add_index "mongo_comments", ["post_mongo_id"], :name => "index_mongo_comments_on_post_mongo_id" + + create_table "mongo_contacts", :force => true do |t| + t.string "mongo_id" + t.string "user_mongo_id" + t.string "person_mongo_id" + t.boolean "pending", :default => true + t.datetime "created_at" + t.datetime "updated_at" + end + + 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_users", :force => true do |t| t.string "mongo_id" t.string "username" diff --git a/lib/data_conversion/import_to_mysql.rb b/lib/data_conversion/import_to_mysql.rb index 3f68dcd7dc5365246913d1a8e7f84a29bb19802a..d3f808cae55ac6d5f812de02e4bfeabcddc059e0 100644 --- a/lib/data_conversion/import_to_mysql.rb +++ b/lib/data_conversion/import_to_mysql.rb @@ -39,6 +39,21 @@ OPTS (contact_mongo_id, aspect_mongo_id) SQL end + def import_raw_comments + Mongo::Aspect.connection.execute <<-SQL + #{load_string("comments")} + #{infile_opts} + (mongo_id, post_mongo_id, person_mongo_id, @diaspora_handle, text, youtube_titles) + SET guid = mongo_id; + SQL + end + def import_raw_contacts + Mongo::Aspect.connection.execute <<-SQL + #{load_string("contacts")} + #{infile_opts} + (mongo_id, user_mongo_id, person_mongo_id, pending, created_at, updated_at) + SQL + end end end diff --git a/spec/lib/data_conversion/import_to_mysql_spec.rb b/spec/lib/data_conversion/import_to_mysql_spec.rb index 782ecafef54b4a923c09a7f9f57b252402ec6984..85ee444c676dcf894a0b86643168d7edc1753020 100644 --- a/spec/lib/data_conversion/import_to_mysql_spec.rb +++ b/spec/lib/data_conversion/import_to_mysql_spec.rb @@ -44,7 +44,7 @@ describe DataConversion::ImportToMysql do copy_fixture_for("aspect_memberships") end - it "imports data into the mongo_aspects table" do + it "imports data into the mongo_aspect_memberships table" do Mongo::AspectMembership.count.should == 0 @migrator.import_raw_aspect_memberships Mongo::AspectMembership.count.should == 17 @@ -57,6 +57,47 @@ describe DataConversion::ImportToMysql do aspectm.aspect_mongo_id.should =="4d0916c2cc8cb40e93000004" end end + + describe "comments" do + before do + copy_fixture_for("comments") + end + + it "imports data into the mongo_comments table" do + Mongo::Comment.count.should == 0 + @migrator.import_raw_comments + Mongo::Comment.count.should == 5 + end + + it "imports all the columns" do + @migrator.import_raw_comments + comment = Mongo::Comment.first + comment.text.should_not be_nil + comment.person_mongo_id.should_not be_nil + comment.post_mongo_id.should_not be_nil + end + end + describe "contacts" do + before do + copy_fixture_for("contacts") + end + + it "imports data into the mongo_contacts table" do + Mongo::Contact.count.should == 0 + @migrator.import_raw_contacts + Mongo::Contact.count.should == 16 + end + + it "imports all the columns" do + @migrator.import_raw_contacts + contact = Mongo::Contact.first + contact.mongo_id.should == "4d0916c4cc8cb40e9300000a" + contact.user_mongo_id.should =="4d0916c1cc8cb40e93000002" + contact.person_mongo_id.should == "4d0916c3cc8cb40e93000007" + contact.pending.should be_false + contact.created_at.should be_nil + end + end describe "users" do before do copy_fixture_for("users")