Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
91.67% covered (success)
91.67%
11 / 12
CRAP
84.62% covered (success)
84.62%
11 / 13
MySQLStoredProcedureFactory
0.00% covered (danger)
0.00%
0 / 1
91.67% covered (success)
91.67%
11 / 12
12.52
84.62% covered (success)
84.62%
11 / 13
 createInsertStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createUpdateStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createSelectByPKStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createSelectByReferenceStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createSelectByCollectionManyStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createDeleteByPKStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createDeleteByReferenceStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createDeleteByCollectionManyStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createDeleteCollectionManyAssignmentStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createCopyToReplicationTableStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createCustomStoredProcedure
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 createDropStatementForProcedureName
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
<?php
declare(strict_types = 1);
namespace Siesta\Driver\MySQL;
use Siesta\Database\StoredProcedureDefinition;
use Siesta\Database\StoredProcedureFactory;
use Siesta\Driver\MySQL\StoredProcedure\MySQLCopyToReplicationStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLCustomStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLDeleteByCollectionManyStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLDeleteByPKStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLDeleteByReferenceStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLDeleteCollectionManyAssignmentStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLInsertStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLSelectByCollectionManyStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLSelectByPKStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLSelectByReferenceStoredProcedure;
use Siesta\Driver\MySQL\StoredProcedure\MySQLUpdateStoredProcedure;
use Siesta\Model\CollectionMany;
use Siesta\Model\DataModel;
use Siesta\Model\Entity;
use Siesta\Model\Reference;
use Siesta\Model\StoredProcedure;
class MySQLStoredProcedureFactory implements StoredProcedureFactory
{
    const DROP_PROCEDURE = "DROP PROCEDURE IF EXISTS %s;";
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createInsertStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition
    {
        return new MySQLInsertStoredProcedure($dataModel, $entity);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createUpdateStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition
    {
        return new MySQLUpdateStoredProcedure($dataModel, $entity);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createSelectByPKStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition
    {
        return new MySQLSelectByPKStoredProcedure($dataModel, $entity);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param Reference $reference
     *
     * @return StoredProcedureDefinition
     */
    public function createSelectByReferenceStoredProcedure(DataModel $dataModel, Entity $entity, Reference $reference) : StoredProcedureDefinition
    {
        return new MySQLSelectByReferenceStoredProcedure($dataModel, $entity, $reference);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param CollectionMany $collectionMany
     *
     * @return StoredProcedureDefinition
     */
    public function createSelectByCollectionManyStoredProcedure(DataModel $dataModel, Entity $entity, CollectionMany $collectionMany) : StoredProcedureDefinition
    {
        return new MySQLSelectByCollectionManyStoredProcedure($dataModel, $entity, $collectionMany);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteByPKStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition
    {
        return new MySQLDeleteByPKStoredProcedure($dataModel, $entity);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param Reference $reference
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteByReferenceStoredProcedure(DataModel $dataModel, Entity $entity, Reference $reference) : StoredProcedureDefinition
    {
        return new MySQLDeleteByReferenceStoredProcedure($dataModel, $entity, $reference);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param CollectionMany $collectionMany
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteByCollectionManyStoredProcedure(DataModel $dataModel, Entity $entity, CollectionMany $collectionMany) : StoredProcedureDefinition
    {
        return new MySQLDeleteByCollectionManyStoredProcedure($dataModel, $entity, $collectionMany);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param CollectionMany $collectionMany
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteCollectionManyAssignmentStoredProcedure(DataModel $dataModel, Entity $entity, CollectionMany $collectionMany) : StoredProcedureDefinition
    {
        return new MySQLDeleteCollectionManyAssignmentStoredProcedure($dataModel, $entity, $collectionMany);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createCopyToReplicationTableStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition
    {
        return new MySQLCopyToReplicationStoredProcedure($dataModel, $entity);
    }
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param StoredProcedure $storedProcedure
     *
     * @return StoredProcedureDefinition
     */
    public function createCustomStoredProcedure(DataModel $dataModel, Entity $entity, StoredProcedure $storedProcedure) : StoredProcedureDefinition
    {
        return new MySQLCustomStoredProcedure($dataModel, $entity, $storedProcedure);
    }
    /**
     * @param string $procedureName
     *
     * @return string
     */
    public function createDropStatementForProcedureName(string $procedureName) : string
    {
        $procedureName = MySQLDriver::quote($procedureName);
        return sprintf(self::DROP_PROCEDURE, $procedureName);
    }
}