From 1ba4ece23c9f5d73d8e9d28c6fe98148e8b8b6e4 Mon Sep 17 00:00:00 2001
From: Raphael Sofaer <raphael@joindiaspora.com>
Date: Wed, 30 Mar 2011 16:12:38 -0700
Subject: [PATCH] Foreign keys on pms

---
 db/migrate/20110330230206_pm_foreign_keys.rb | 21 ++++++++++++++++++++
 db/schema.rb                                 | 13 +++++++++++-
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 db/migrate/20110330230206_pm_foreign_keys.rb

diff --git a/db/migrate/20110330230206_pm_foreign_keys.rb b/db/migrate/20110330230206_pm_foreign_keys.rb
new file mode 100644
index 0000000000..0b63c72a5c
--- /dev/null
+++ b/db/migrate/20110330230206_pm_foreign_keys.rb
@@ -0,0 +1,21 @@
+class PmForeignKeys < ActiveRecord::Migration
+  def self.up
+    add_foreign_key :conversation_visibilities, :conversations, :dependent => :delete
+    add_foreign_key :conversation_visibilities, :people, :dependent => :delete
+
+    add_foreign_key :messages, :conversations, :dependent => :delete
+    add_foreign_key :messages, :people, :column => :author_id, :dependent => :delete
+
+    add_foreign_key :conversations, :people, :column => :author_id, :dependent => :delete
+  end
+
+  def self.down
+    remove_foreign_key :conversation_visibilities, :conversations
+    remove_foreign_key :conversation_visibilities, :people
+
+    remove_foreign_key :messages, :conversations
+    remove_foreign_key :messages, :people, :column => :author_id
+
+    remove_foreign_key :conversations, :people, :column => :author_id
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 578cee0b6e..e484b8f481 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20110330175950) do
+ActiveRecord::Schema.define(:version => 20110330230206) do
 
   create_table "aspect_memberships", :force => true do |t|
     t.integer  "aspect_id",  :null => false
@@ -101,6 +101,8 @@ ActiveRecord::Schema.define(:version => 20110330175950) do
     t.datetime "updated_at"
   end
 
+  add_index "conversations", ["author_id"], :name => "conversations_author_id_fk"
+
   create_table "invitations", :force => true do |t|
     t.text     "message"
     t.integer  "sender_id",    :null => false
@@ -152,6 +154,7 @@ ActiveRecord::Schema.define(:version => 20110330175950) do
   end
 
   add_index "messages", ["author_id"], :name => "index_messages_on_author_id"
+  add_index "messages", ["conversation_id"], :name => "messages_conversation_id_fk"
 
   create_table "mongo_notifications", :force => true do |t|
     t.string   "mongo_id"
@@ -386,12 +389,20 @@ ActiveRecord::Schema.define(:version => 20110330175950) do
 
   add_foreign_key "contacts", "people", :name => "contacts_person_id_fk", :dependent => :delete
 
+  add_foreign_key "conversation_visibilities", "conversations", :name => "conversation_visibilities_conversation_id_fk", :dependent => :delete
+  add_foreign_key "conversation_visibilities", "people", :name => "conversation_visibilities_person_id_fk", :dependent => :delete
+
+  add_foreign_key "conversations", "people", :name => "conversations_author_id_fk", :column => "author_id", :dependent => :delete
+
   add_foreign_key "invitations", "users", :name => "invitations_recipient_id_fk", :column => "recipient_id", :dependent => :delete
   add_foreign_key "invitations", "users", :name => "invitations_sender_id_fk", :column => "sender_id", :dependent => :delete
 
   add_foreign_key "likes", "people", :name => "likes_author_id_fk", :column => "author_id"
   add_foreign_key "likes", "posts", :name => "likes_post_id_fk"
 
+  add_foreign_key "messages", "conversations", :name => "messages_conversation_id_fk", :dependent => :delete
+  add_foreign_key "messages", "people", :name => "messages_author_id_fk", :column => "author_id", :dependent => :delete
+
   add_foreign_key "notification_actors", "notifications", :name => "notification_actors_notification_id_fk", :dependent => :delete
 
   add_foreign_key "post_visibilities", "contacts", :name => "post_visibilities_contact_id_fk", :dependent => :delete
-- 
GitLab