diff options
author | Robin Appelman <icewind@owncloud.com> | 2013-08-06 15:43:58 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2013-08-06 15:43:58 +0200 |
commit | 95a959b10b7c9dc7b0529fbb7b05c11685f19e8b (patch) | |
tree | f283b4980f39ec4c998fc3a4d8a6a3d241109d6a /lib/db | |
parent | ed054e67d60e8ad8074b38842935e5dff927350c (diff) | |
parent | 057d7aa108f9b24c12b97f5f78008eb17a6d3bee (diff) | |
download | nextcloud-server-95a959b10b7c9dc7b0529fbb7b05c11685f19e8b.tar.gz nextcloud-server-95a959b10b7c9dc7b0529fbb7b05c11685f19e8b.zip |
merge master into doctrine-object
Diffstat (limited to 'lib/db')
-rw-r--r-- | lib/db/connection.php | 3 | ||||
-rw-r--r-- | lib/db/mdb2schemamanager.php (renamed from lib/db/schema.php) | 90 |
2 files changed, 46 insertions, 47 deletions
diff --git a/lib/db/connection.php b/lib/db/connection.php index 920fe144a8a..7f207ff76ec 100644 --- a/lib/db/connection.php +++ b/lib/db/connection.php @@ -76,13 +76,12 @@ class Connection extends \Doctrine\DBAL\Connection { return $this->preparedQueries[$statement]; } } - $rawQuery = $statement; if(\OC_Config::getValue( "log_query", false)) { \OC_Log::write('core', 'DB prepare : '.$statement, \OC_Log::DEBUG); } $result = parent::prepare($statement); if (is_null($limit) && $this->cachingQueryStatementEnabled) { - $this->preparedQueries[$rawQuery] = $result; + $this->preparedQueries[$statement] = $result; } return $result; } diff --git a/lib/db/schema.php b/lib/db/mdb2schemamanager.php index bc82249609d..8e76f46c78f 100644 --- a/lib/db/schema.php +++ b/lib/db/mdb2schemamanager.php @@ -6,47 +6,58 @@ * See the COPYING-README file. */ -class OC_DB_Schema { +namespace OC\DB; + +class MDB2SchemaManager { + /** + * @var \OC\DB\Connection $conn + */ + protected $conn; + + /** + * @param \OC\DB\Connection $conn + */ + public function __construct($conn) { + $this->conn = $conn; + } + /** * @brief saves database scheme to xml file - * @param \Doctrine\DBAL\Connection $conn * @param string $file name of file * @param int|string $mode * @return bool * * TODO: write more documentation */ - public static function getDbStructure( $conn, $file, $mode=MDB2_SCHEMA_DUMP_STRUCTURE) { - $sm = $conn->getSchemaManager(); + public function getDbStructure( $file, $mode = MDB2_SCHEMA_DUMP_STRUCTURE) { + $sm = $this->conn->getSchemaManager(); - return OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm); + return \OC_DB_MDB2SchemaWriter::saveSchemaToFile($file, $sm); } /** * @brief Creates tables from XML file - * @param \Doctrine\DBAL\Connection $conn * @param string $file file to read structure from * @return bool * * TODO: write more documentation */ - public static function createDbFromStructure( $conn, $file ) { - $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $conn->getDatabasePlatform()); + public function createDbFromStructure( $file ) { + $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform()); $toSchema = $schemaReader->loadSchemaFromFile($file); - return self::executeSchemaChange($conn, $toSchema); + return $this->executeSchemaChange($toSchema); } /** * @brief update the database scheme - * @param \Doctrine\DBAL\Connection $conn * @param string $file file to read structure from * @return bool */ - public static function updateDbFromStructure($conn, $file) { - $sm = $conn->getSchemaManager(); + public function updateDbFromStructure($file) { + $sm = $this->conn->getSchemaManager(); $fromSchema = $sm->createSchema(); - $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $conn->getDatabasePlatform()); + $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform()); $toSchema = $schemaReader->loadSchemaFromFile($file); // remove tables we don't know about @@ -65,43 +76,34 @@ class OC_DB_Schema { $comparator = new \Doctrine\DBAL\Schema\Comparator(); $schemaDiff = $comparator->compare($fromSchema, $toSchema); - $platform = $conn->getDatabasePlatform(); + $platform = $this->conn->getDatabasePlatform(); $tables = $schemaDiff->newTables + $schemaDiff->changedTables + $schemaDiff->removedTables; foreach($tables as $tableDiff) { $tableDiff->name = $platform->quoteIdentifier($tableDiff->name); } - - //$from = $fromSchema->toSql($conn->getDatabasePlatform()); - //$to = $toSchema->toSql($conn->getDatabasePlatform()); - //echo($from[9]); - //echo '<br>'; - //echo($to[9]); - //var_dump($from, $to); - return self::executeSchemaChange($conn, $schemaDiff); + return $this->executeSchemaChange($schemaDiff); } /** * @brief drop a table - * @param \Doctrine\DBAL\Connection $conn * @param string $tableName the table to drop */ - public static function dropTable($conn, $tableName) { - $sm = $conn->getSchemaManager(); + public function dropTable($tableName) { + $sm = $this->conn->getSchemaManager(); $fromSchema = $sm->createSchema(); $toSchema = clone $fromSchema; $toSchema->dropTable($tableName); - $sql = $fromSchema->getMigrateToSql($toSchema, $conn->getDatabasePlatform()); - $conn->execute($sql); + $sql = $fromSchema->getMigrateToSql($toSchema, $this->conn->getDatabasePlatform()); + $this->conn->executeQuery($sql); } /** * remove all tables defined in a database structure xml file - * @param \Doctrine\DBAL\Connection $conn * @param string $file the xml file describing the tables */ - public static function removeDBStructure($conn, $file) { - $schemaReader = new \OC\DB\MDB2SchemaReader(\OC_Config::getObject(), $conn->getDatabasePlatform()); + public function removeDBStructure($file) { + $schemaReader = new MDB2SchemaReader(\OC_Config::getObject(), $this->conn->getDatabasePlatform()); $fromSchema = $schemaReader->loadSchemaFromFile($file); $toSchema = clone $fromSchema; foreach($toSchema->getTables() as $table) { @@ -109,42 +111,40 @@ class OC_DB_Schema { } $comparator = new \Doctrine\DBAL\Schema\Comparator(); $schemaDiff = $comparator->compare($fromSchema, $toSchema); - self::executeSchemaChange($conn, $schemaDiff); + $this->executeSchemaChange($schemaDiff); } /** * @brief replaces the ownCloud tables with a new set - * @param \Doctrine\DBAL\Connection $conn * @param $file string path to the MDB2 xml db export file */ - public static function replaceDB( $conn, $file ) { - $apps = OC_App::getAllApps(); - self::beginTransaction(); + public function replaceDB( $file ) { + $apps = \OC_App::getAllApps(); + $this->conn->beginTransaction(); // Delete the old tables - self::removeDBStructure( $conn, OC::$SERVERROOT . '/db_structure.xml' ); + $this->removeDBStructure( \OC::$SERVERROOT . '/db_structure.xml' ); foreach($apps as $app) { - $path = OC_App::getAppPath($app).'/appinfo/database.xml'; + $path = \OC_App::getAppPath($app).'/appinfo/database.xml'; if(file_exists($path)) { - self::removeDBStructure( $conn, $path ); + $this->removeDBStructure( $path ); } } // Create new tables - self::commit(); + $this->conn->commit(); } /** - * @param \Doctrine\DBAL\Connection $conn * @param \Doctrine\DBAL\Schema\Schema $schema * @return bool */ - private static function executeSchemaChange($conn, $schema) { - $conn->beginTransaction(); - foreach($schema->toSql($conn->getDatabasePlatform()) as $sql) { - $conn->query($sql); + private function executeSchemaChange($schema) { + $this->conn->beginTransaction(); + foreach($schema->toSql($this->conn->getDatabasePlatform()) as $sql) { + $this->conn->query($sql); } - $conn->commit(); + $this->conn->commit(); return true; } } |