Commit 12f381f1 authored by Benjamin Eberlei's avatar Benjamin Eberlei

Refactor Synchronizers to use an AbstractSchemaSynchronizer

parent 29b26232
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace Doctrine\DBAL\Schema\Synchronizer;
use Doctrine\DBAL\Connection;
/**
* Abstract schema synchronizer with methods for executing batches of SQL.
*/
abstract class AbstractSchemaSynchronizer implements SchemaSynchronizer
{
/**
* @var Connection
*/
protected $conn;
public function __construct(Connection $conn)
{
$this->conn = $conn;
}
protected function processSqlSafely(array $sql)
{
foreach ($sql as $s) {
try {
$this->conn->exec($s);
} catch(\Exception $e) {
}
}
}
protected function processSql(array $sql)
{
foreach ($sql as $s) {
$this->conn->exec($s);
}
}
}
......@@ -28,13 +28,8 @@ use Doctrine\DBAL\Schema\Visitor\DropSchemaSqlCollector;
*
* @author Benjamin Eberlei <kontakt@beberlei.de>
*/
class SingleDatabaseSynchronizer implements SchemaSynchronizer
class SingleDatabaseSynchronizer extends AbstractSchemaSynchronizer
{
/**
* @var Doctrine\DBAL\Connection
*/
private $conn;
/**
* @var Doctrine\DBAL\Platforms\AbstractPlatform
*/
......@@ -42,7 +37,7 @@ class SingleDatabaseSynchronizer implements SchemaSynchronizer
public function __construct(Connection $conn)
{
$this->conn = $conn;
parent::__construct($conn);
$this->platform = $conn->getDatabasePlatform();
}
......@@ -198,23 +193,5 @@ class SingleDatabaseSynchronizer implements SchemaSynchronizer
{
$this->processSql($this->getDropAllSchema());
}
private function processSqlSafely(array $sql)
{
foreach ($sql as $s) {
try {
$this->conn->exec($s);
} catch(\Exception $e) {
}
}
}
private function processSql(array $sql)
{
foreach ($sql as $s) {
$this->conn->exec($s);
}
}
}
......@@ -23,7 +23,7 @@ use Doctrine\DBAL\Schema\Schema;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Types\Type;
use Doctrine\DBAL\Schema\Synchronizer\SchemaSynchronizer;
use Doctrine\DBAL\Schema\Synchronizer\AbstractSchemaSynchronizer;
use Doctrine\DBAL\Sharding\SingleDatabaseSynchronizer;
/**
......@@ -36,15 +36,11 @@ use Doctrine\DBAL\Sharding\SingleDatabaseSynchronizer;
*
* @author Benjamin Eberlei <kontakt@beberlei.de>
*/
class SQLAzureFederationsSynchronizer implements SchemaSynchronizer
class SQLAzureFederationsSynchronizer implements AbstractSchemaSynchronizer
{
const FEDERATION_TABLE_FEDERATED = 'azure.federated';
const FEDERATION_DISTRIBUTION_NAME = 'azure.federatedOnDistributionName';
/**
* @var Connection
*/
private $conn;
/**
* @var SQLAzureShardManager
......@@ -58,7 +54,7 @@ class SQLAzureFederationsSynchronizer implements SchemaSynchronizer
public function __construct(Connection $conn, SQLAzureShardManager $shardManager, SchemaSynchronizer $sync = null)
{
$this->conn = $conn;
parent::__construct($conn);
$this->shardManager = $shardManager;
$this->synchronizer = $sync ?: new SingleDatabaseSynchronizer($conn);
}
......@@ -230,24 +226,6 @@ class SQLAzureFederationsSynchronizer implements SchemaSynchronizer
return $partionedSchema;
}
private function processSqlSafely(array $sql)
{
foreach ($sql as $s) {
try {
$this->conn->exec($s);
} catch(\Exception $e) {
}
}
}
private function processSql(array $sql)
{
foreach ($sql as $s) {
$this->conn->exec($s);
}
}
/**
* Work on the Global/Federation based on currently existing shards and
* perform the given operation on the underyling schema synchronizer given
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment