Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
7 / 7 |
CRAP | |
100.00% |
47 / 47 |
| StoredProcedureMigrator | |
100.00% |
1 / 1 |
|
100.00% |
7 / 7 |
13 | |
100.00% |
47 / 47 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getMigrateProcedureStatementList | |
100.00% |
1 / 1 |
1 | |
100.00% |
8 / 8 |
|||
| addSimpleStoredProcedurStatementList | |
100.00% |
1 / 1 |
1 | |
100.00% |
11 / 11 |
|||
| addCustomStoredProcedureStatementList | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| addCollectionStoredProcedureList | |
100.00% |
1 / 1 |
3 | |
100.00% |
8 / 8 |
|||
| addCollectionManyStoredProcedureList | |
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
|||
| addStatement | |
100.00% |
1 / 1 |
3 | |
100.00% |
6 / 6 |
|||
| <?php | |
| declare(strict_types = 1); | |
| namespace Siesta\Migration; | |
| use Siesta\Database\StoredProcedureDefinition; | |
| use Siesta\Database\StoredProcedureFactory; | |
| use Siesta\Model\DataModel; | |
| use Siesta\Model\Entity; | |
| /** | |
| * @author Gregor Müller | |
| */ | |
| class StoredProcedureMigrator | |
| { | |
| /** | |
| * @var StoredProcedureFactory | |
| */ | |
| protected $factory; | |
| /** | |
| * @var string[] | |
| */ | |
| protected $statementList; | |
| /** | |
| * @var DataModel | |
| */ | |
| protected $dataModel; | |
| /** | |
| * @var Entity | |
| */ | |
| protected $entity; | |
| /** | |
| * StoredProcedureMigrator constructor. | |
| * | |
| * @param StoredProcedureFactory $factory | |
| */ | |
| public function __construct(StoredProcedureFactory $factory) | |
| { | |
| $this->factory = $factory; | |
| } | |
| /** | |
| * @param DataModel $dataModel | |
| * @param Entity $entity | |
| * | |
| * @return string[] | |
| */ | |
| public function getMigrateProcedureStatementList(DataModel $dataModel, Entity $entity) | |
| { | |
| $this->dataModel = $dataModel; | |
| $this->entity = $entity; | |
| $this->statementList = []; | |
| $this->addSimpleStoredProcedurStatementList(); | |
| $this->addCustomStoredProcedureStatementList(); | |
| $this->addCollectionStoredProcedureList(); | |
| $this->addCollectionManyStoredProcedureList(); | |
| return $this->statementList; | |
| } | |
| /** | |
| * | |
| */ | |
| protected function addSimpleStoredProcedurStatementList() | |
| { | |
| $selectDefinition = $this->factory->createSelectByPKStoredProcedure($this->dataModel, $this->entity); | |
| $this->addStatement($selectDefinition); | |
| $insertDefinition = $this->factory->createInsertStoredProcedure($this->dataModel, $this->entity); | |
| $this->addStatement($insertDefinition); | |
| $updateDefinition = $this->factory->createUpdateStoredProcedure($this->dataModel, $this->entity); | |
| $this->addStatement($updateDefinition); | |
| $deleteDefinition = $this->factory->createDeleteByPKStoredProcedure($this->dataModel, $this->entity); | |
| $this->addStatement($deleteDefinition); | |
| $copyToReplication = $this->factory->createCopyToReplicationTableStoredProcedure($this->dataModel, $this->entity); | |
| $this->addStatement($copyToReplication); | |
| } | |
| /** | |
| * | |
| */ | |
| protected function addCustomStoredProcedureStatementList() | |
| { | |
| foreach ($this->entity->getStoredProcedureList() as $storedProcedure) { | |
| $procedureDefinition = $this->factory->createCustomStoredProcedure($this->dataModel, $this->entity, $storedProcedure); | |
| $this->addStatement($procedureDefinition); | |
| } | |
| } | |
| /** | |
| * | |
| */ | |
| protected function addCollectionStoredProcedureList() | |
| { | |
| foreach ($this->entity->getReferenceList() as $reference) { | |
| if (!$reference->doesCollectionRefersTo()) { | |
| continue; | |
| } | |
| $procedureDefiniton = $this->factory->createSelectByReferenceStoredProcedure($this->dataModel, $this->entity, $reference); | |
| $this->addStatement($procedureDefiniton); | |
| $procedureDefiniton = $this->factory->createDeleteByReferenceStoredProcedure($this->dataModel, $this->entity, $reference); | |
| $this->addStatement($procedureDefiniton); | |
| } | |
| } | |
| /** | |
| * | |
| */ | |
| protected function addCollectionManyStoredProcedureList() | |
| { | |
| foreach ($this->entity->getCollectionManyList() as $collectionMany) { | |
| $procedureDefinition = $this->factory->createSelectByCollectionManyStoredProcedure($this->dataModel, $this->entity, $collectionMany); | |
| $this->addStatement($procedureDefinition); | |
| $procedureDefinition = $this->factory->createDeleteByCollectionManyStoredProcedure($this->dataModel, $this->entity, $collectionMany); | |
| $this->addStatement($procedureDefinition); | |
| $procedureDefinition = $this->factory->createDeleteCollectionManyAssignmentStoredProcedure($this->dataModel, $this->entity, $collectionMany); | |
| $this->addStatement($procedureDefinition); | |
| } | |
| } | |
| /** | |
| * @param StoredProcedureDefinition $definition | |
| */ | |
| protected function addStatement(StoredProcedureDefinition $definition) | |
| { | |
| $dropDefinition = $definition->getDropProcedureStatement(); | |
| if ($dropDefinition !== null) { | |
| // at the moment all stored procedures are deleted | |
| //$this->statementList[] = $dropDefinition; | |
| } | |
| $createDefinition = $definition->getCreateProcedureStatement(); | |
| if ($createDefinition !== null) { | |
| $this->statementList[] = $createDefinition; | |
| } | |
| } | |
| } |