From 8b72499c199267be0d198d408cecbb44fc6239e3 Mon Sep 17 00:00:00 2001 From: Taras Machyshyn Date: Tue, 2 Jun 2015 15:31:20 +0300 Subject: [PATCH] Databse rebuild fixes --- .../Espo/Core/Utils/Database/Converter.php | 22 ++------------ .../Core/Utils/Database/Orm/Converter.php | 6 ++++ .../Core/Utils/Database/Schema/Converter.php | 29 ++++++++++++++----- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/application/Espo/Core/Utils/Database/Converter.php b/application/Espo/Core/Utils/Database/Converter.php index b80e1cfe3a..1f66e53edd 100644 --- a/application/Espo/Core/Utils/Database/Converter.php +++ b/application/Espo/Core/Utils/Database/Converter.php @@ -33,16 +33,8 @@ class Converter private $schemaConverter; - - private $schemaFromMetadata = null; - /** - * @var array $meta - metadata array - */ - //private $meta; - - public function __construct(\Espo\Core\Utils\Metadata $metadata, \Espo\Core\Utils\File\Manager $fileManager) { $this->metadata = $metadata; @@ -53,7 +45,6 @@ class Converter $this->schemaConverter = new Schema\Converter($this->fileManager); } - protected function getMetadata() { return $this->metadata; @@ -69,13 +60,11 @@ class Converter return $this->schemaConverter; } - public function getSchemaFromMetadata($entityList = null) { $ormMeta = $this->getMetadata()->getOrmMetadata(); - $entityDefs = $this->getMetadata()->get('entityDefs'); - $this->schemaFromMetadata = $this->getSchemaConverter()->process($ormMeta, $entityDefs, $entityList); + $this->schemaFromMetadata = $this->getSchemaConverter()->process($ormMeta, $entityList); return $this->schemaFromMetadata; } @@ -98,11 +87,4 @@ class Converter return $result; } - - - - -} - - -?> \ No newline at end of file +} \ No newline at end of file diff --git a/application/Espo/Core/Utils/Database/Orm/Converter.php b/application/Espo/Core/Utils/Database/Orm/Converter.php index 7e6cbced47..673d3b6efc 100644 --- a/application/Espo/Core/Utils/Database/Orm/Converter.php +++ b/application/Espo/Core/Utils/Database/Orm/Converter.php @@ -131,8 +131,14 @@ class Converter return $this->metadataHelper; } + /** + * Orm metadata convertation process + * + * @return array + */ public function process() { + $this->entityDefs = null; $entityDefs = $this->getEntityDefs(); $ormMeta = array(); diff --git a/application/Espo/Core/Utils/Database/Schema/Converter.php b/application/Espo/Core/Utils/Database/Schema/Converter.php index df4cbc4559..448febb342 100644 --- a/application/Espo/Core/Utils/Database/Schema/Converter.php +++ b/application/Espo/Core/Utils/Database/Schema/Converter.php @@ -47,7 +47,6 @@ class Converter 'unique' => 'unique', ); - //todo: same array in Converters\Orm protected $idParams = array( 'dbType' => 'varchar', @@ -68,8 +67,6 @@ class Converter { $this->fileManager = $fileManager; - $this->dbalSchema = new \Espo\Core\Utils\Database\DBAL\Schema\Schema(); - $this->typeList = array_keys(\Doctrine\DBAL\Types\Type::getTypesMap()); } @@ -78,13 +75,31 @@ class Converter return $this->fileManager; } - protected function getSchema() + /** + * Get schema + * + * @param boolean $reload + * + * @return \Doctrine\DBAL\Schema\Schema + */ + protected function getSchema($reload = false) { + if (!isset($this->dbalSchema) || $reload) { + $this->dbalSchema = new \Espo\Core\Utils\Database\DBAL\Schema\Schema(); + } + return $this->dbalSchema; } - - public function process(array $ormMeta, $entityDefs, $entityList = null) + /** + * Schema convertation process + * + * @param array $ormMeta + * @param array|null $entityList + * + * @return \Doctrine\DBAL\Schema\Schema + */ + public function process(array $ormMeta, $entityList = null) { $GLOBALS['log']->debug('Schema\Converter - Start: building schema'); @@ -106,7 +121,7 @@ class Converter $ormMeta = array_intersect_key($ormMeta, array_flip($dependentEntities)); } - $schema = $this->getSchema(); + $schema = $this->getSchema(true); $tables = array(); foreach ($ormMeta as $entityName => $entityParams) {