Update the RoundcubeDb plugin for v0.7.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 14 Jan 2012 20:43:24 +0000 (15:43 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 14 Jan 2012 20:43:24 +0000 (15:43 -0500)
src/plugins/roundcube_db.rb

index 94fe14a3c31b325d0ae1cba83338d87c52f4d512..cb2e055f44f9b720ca436a510e6f7c0fb85bfadf 100644 (file)
@@ -39,12 +39,27 @@ class RoundcubeDb
     # belonging to it.
     user_id = self.get_user_id(account)
 
+    # This is mostly unnecessary when using Postgres. The Roundcube
+    # developers were nice enough to include DBMS-specific install and
+    # upgrade scripts, so Postgres can take advantage of ON DELETE
+    # triggers. Here's an example:
+    #
+    #  ...
+    #  user_id integer NOT NULL
+    #    REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE
+    #
     sql_queries = ['DELETE FROM cache WHERE user_id = $1::int;']
+    sql_queries << 'DELETE FROM cache_index WHERE user_id = $1::int;'
+    sql_queries << 'DELETE FROM cache_messages WHERE user_id = $1::int;'
+    sql_queries << 'DELETE FROM cache_thread WHERE user_id = $1::int;'
     sql_queries << 'DELETE FROM contactgroupmembers WHERE contactgroup_id IN (SELECT contactgroup_id FROM contactgroups WHERE user_id = $1::int);'
     sql_queries << 'DELETE FROM contactgroups WHERE user_id = $1::int;'
     sql_queries << 'DELETE FROM contacts WHERE user_id = $1::int;'
     sql_queries << 'DELETE FROM identities WHERE user_id = $1::int;'
-    sql_queries << 'DELETE FROM messages WHERE user_id = $1::int;'
+    sql_queries << 'DELETE FROM dictionary WHERE user_id = $1::int;'
+    sql_queries << 'DELETE FROM searches WHERE user_id = $1::int;'
+
+    # This one is of course necessary with any DBMS.
     sql_queries << 'DELETE FROM users WHERE user_id = $1::int;'
 
     begin