From 7c4d35cf2814e6c5689ac780cf1fba6a316dd307 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 6 Jan 2011 14:37:59 -0800 Subject: [PATCH] raw import of notifications, failing to pull in unread --- app/models/mongo.rb | 2 +- .../20110105051803_create_import_tables.rb | 12 ++++++++++- db/schema.rb | 14 +++++++++++++ lib/data_conversion/import_to_mysql.rb | 9 +++++++++ .../data_conversion/import_to_mysql_spec.rb | 20 +++++++++++++++++++ 5 files changed, 55 insertions(+), 2 deletions(-) diff --git a/app/models/mongo.rb b/app/models/mongo.rb index 56d702477..8f790f0cb 100644 --- a/app/models/mongo.rb +++ b/app/models/mongo.rb @@ -8,7 +8,7 @@ module Mongo class Comment < ActiveRecord::Base; end class Contact < ActiveRecord::Base; end class Invitation < ActiveRecord::Base; end - #class Notification < ActiveRecord::Base; end + class Notification < ActiveRecord::Base; end class Person < ActiveRecord::Base; end #Photo? #Post? diff --git a/db/migrate/20110105051803_create_import_tables.rb b/db/migrate/20110105051803_create_import_tables.rb index aad94d15a..fe572d003 100644 --- a/db/migrate/20110105051803_create_import_tables.rb +++ b/db/migrate/20110105051803_create_import_tables.rb @@ -62,7 +62,17 @@ class CreateImportTables < ActiveRecord::Migration t.timestamps end add_index :mongo_invitations, :sender_mongo_id - + create_table :mongo_notifications do |t| + t.string :mongo_id + t.string :target_type + t.string :target_mongo_id + t.string :recipient_mongo_id + t.string :actor_mongo_id + t.string :action + t.boolean :unread, :default => true + t.timestamps + end + add_index :mongo_notifications, [:target_type, :target_mongo_id] create_table :mongo_post_visibilities do |t| t.string :aspect_mongo_id t.string :post_mongo_id diff --git a/db/schema.rb b/db/schema.rb index 51bb082bc..76b10bab5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -130,6 +130,20 @@ ActiveRecord::Schema.define(:version => 20110105051803) do add_index "mongo_invitations", ["sender_mongo_id"], :name => "index_mongo_invitations_on_sender_mongo_id" + create_table "mongo_notifications", :force => true do |t| + t.string "mongo_id" + t.string "target_type" + t.string "target_mongo_id" + t.string "recipient_mongo_id" + t.string "actor_mongo_id" + t.string "action" + t.boolean "unread", :default => true + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "mongo_notifications", ["target_type", "target_mongo_id"], :name => "index_mongo_notifications_on_target_type_and_target_mongo_id" + create_table "mongo_people", :force => true do |t| t.string "mongo_id" t.string "guid" diff --git a/lib/data_conversion/import_to_mysql.rb b/lib/data_conversion/import_to_mysql.rb index 13fe9035d..16ee6b178 100644 --- a/lib/data_conversion/import_to_mysql.rb +++ b/lib/data_conversion/import_to_mysql.rb @@ -113,6 +113,15 @@ module DataConversion SQL log "Finished. Imported #{Mongo::Invitation.count} invitations." end + def import_raw_notifications + log "Loading notifications file..." + Mongo::Notification.connection.execute <<-SQL + #{load_string("notifications")} + #{infile_opts} + (mongo_id,target_mongo_id,target_type,unread) + SQL + log "Finished. Imported #{Mongo::Notification.count} notifications." + end def import_raw_people log "Loading people file..." Mongo::Person.connection.execute <<-SQL diff --git a/spec/lib/data_conversion/import_to_mysql_spec.rb b/spec/lib/data_conversion/import_to_mysql_spec.rb index 02c0920ec..eb2fde384 100644 --- a/spec/lib/data_conversion/import_to_mysql_spec.rb +++ b/spec/lib/data_conversion/import_to_mysql_spec.rb @@ -122,6 +122,26 @@ describe DataConversion::ImportToMysql do end end + describe "notifications" do + before do + copy_fixture_for("notifications") + end + + it "imports data into the mongo_notifications table" do + Mongo::Notification.count.should == 0 + @migrator.import_raw_notifications + Mongo::Notification.count.should == 3 + end + + it "imports all the columns" do + @migrator.import_raw_notifications + notification = Mongo::Notification.first + notification.mongo_id.should == "4d26212ccc8cb44df200001c" + notification.target_mongo_id.should == '4d26212ccc8cb44df200001b' + notification.target_type.should == "new_request" + notification.unread.should be_true + end + end describe "people" do