From 6e1881dbe42dbd7f3c7c2afdc446fe6fc5d46e87 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Thu, 17 Oct 2013 12:51:30 +0200 Subject: new console command to generate sql migration scripts --- lib/private/db/mdb2schemamanager.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'lib/private/db') diff --git a/lib/private/db/mdb2schemamanager.php b/lib/private/db/mdb2schemamanager.php index 8e76f46c78f..fc13e881bff 100644 --- a/lib/private/db/mdb2schemamanager.php +++ b/lib/private/db/mdb2schemamanager.php @@ -53,7 +53,7 @@ class MDB2SchemaManager { * @param string $file file to read structure from * @return bool */ - public function updateDbFromStructure($file) { + public function updateDbFromStructure($file, $generateSql = false) { $sm = $this->conn->getSchemaManager(); $fromSchema = $sm->createSchema(); @@ -82,6 +82,10 @@ class MDB2SchemaManager { $tableDiff->name = $platform->quoteIdentifier($tableDiff->name); } + if ($generateSql) { + return $this->generateChangeScript($schemaDiff); + } + return $this->executeSchemaChange($schemaDiff); } @@ -147,4 +151,20 @@ class MDB2SchemaManager { $this->conn->commit(); return true; } + + /** + * @param \Doctrine\DBAL\Schema\Schema $schema + * @return string + */ + public function generateChangeScript($schema) { + + $script = ''; + $sqls = $schema->toSql($this->conn->getDatabasePlatform()); + foreach($sqls as $sql) { + $script .= $sql . ';'; + $script .= PHP_EOL; + } + + return $script; + } } -- cgit v1.2.3