]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add a repair step to delete old tables
authorJoas Schilling <nickvergessen@owncloud.com>
Mon, 2 Mar 2015 11:02:14 +0000 (12:02 +0100)
committerJoas Schilling <nickvergessen@owncloud.com>
Mon, 2 Mar 2015 11:02:14 +0000 (12:02 +0100)
lib/private/repair.php
lib/repair/dropoldtables.php [new file with mode: 0644]

index d9fd99707e8f2c5a59de352c6b52f29c82317b03..101af66e3046471a54f057e3222abe8dbef1e077 100644 (file)
@@ -13,6 +13,7 @@ use OC\Hooks\Emitter;
 use OC\Repair\AssetCache;
 use OC\Repair\CleanTags;
 use OC\Repair\Collation;
+use OC\Repair\DropOldTables;
 use OC\Repair\FillETags;
 use OC\Repair\InnoDB;
 use OC\Repair\RepairConfig;
@@ -84,6 +85,7 @@ class Repair extends BasicEmitter {
                        new AssetCache(),
                        new FillETags(\OC_DB::getConnection()),
                        new CleanTags(\OC_DB::getConnection()),
+                       new DropOldTables(\OC_DB::getConnection()),
                );
        }
 
diff --git a/lib/repair/dropoldtables.php b/lib/repair/dropoldtables.php
new file mode 100644 (file)
index 0000000..00d2a1b
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Joas Schilling
+ * @copyright 2015 Joas Schilling nickvergessen@owncloud.com
+ *
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+namespace OC\Repair;
+
+
+use OC\DB\Connection;
+use OC\Hooks\BasicEmitter;
+use OC\RepairStep;
+
+class DropOldTables extends BasicEmitter implements RepairStep {
+
+       /** @var Connection */
+       protected $connection;
+
+       /**
+        * @param Connection $connection
+        */
+       public function __construct(Connection $connection) {
+               $this->connection = $connection;
+       }
+
+       /**
+        * Returns the step's name
+        *
+        * @return string
+        */
+       public function getName() {
+               return 'Drop old database tables';
+       }
+
+       /**
+        * Run repair step.
+        * Must throw exception on error.
+        *
+        * @throws \Exception in case of failure
+        */
+       public function run() {
+               foreach ($this->oldDatabaseTables() as $tableName) {
+                       if ($this->connection->tableExists($tableName)){
+                               $this->emit('\OC\Repair', 'info', [
+                                       sprintf('Table %s has been deleted', $tableName)
+                               ]);
+                               $this->connection->dropTable($tableName);
+                       }
+               }
+       }
+
+       /**
+        * Returns a list of outdated tables which are not used anymore
+        * @return array
+        */
+       protected function oldDatabaseTables() {
+               return [
+                       'calendar_calendars',
+                       'calendar_objects',
+                       'calendar_share_calendar',
+                       'calendar_share_event',
+                       'foldersize',
+                       'fscache',
+                       'locks',
+                       'log',
+                       'media_albums',
+                       'media_artists',
+                       'media_sessions',
+                       'media_songs',
+                       'media_users',
+                       'permissions',
+                       'pictures_images_cache',
+                       'queuedtasks',
+                       'sharing',
+               ];
+       }
+}