]> gitweb.michael.orlitzky.com - mailshears.git/blobdiff - lib/mailshears/plugins/roundcube_db.rb
Factor out common code that can be used to mv (rename) accounts.
[mailshears.git] / lib / mailshears / plugins / roundcube_db.rb
index 111e360809e25242f81f00bda3bb91be0652ece0..a930189e7d48dd87b2663ae79db2c1387b5a801b 100644 (file)
@@ -1,8 +1,12 @@
 require 'pg'
 
+require 'common/plugin'
+require 'mailshears/rm_plugin'
+
 class RoundcubeDb
 
   include Plugin
+  include RmPlugin
 
   def initialize()
     cfg = Configuration.new()
@@ -40,28 +44,16 @@ 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:
+    # 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 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;'
+    # This query is of course necessary with any DBMS:
+    sql_queries = ['DELETE FROM users WHERE user_id = $1::int;']
 
     begin
       connection = PGconn.connect(@db_host,
@@ -93,7 +85,7 @@ class RoundcubeDb
 
 
   def get_leftover_accounts(db_accounts)
-    # Given a list of all users who have logged in to Roundcube.
+    # Get a list of all users who have logged in to Roundcube.
     rc_accounts = self.get_roundcube_usernames()
     return rc_accounts - db_accounts
   end