Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
0 / 0
100.00% covered (success)
100.00%
0 / 0
CRAP
100.00% covered (success)
100.00%
0 / 0
<?php
declare(strict_types = 1);
namespace Siesta\Database;
use Siesta\Model\CollectionMany;
use Siesta\Model\DataModel;
use Siesta\Model\Entity;
use Siesta\Model\Reference;
use Siesta\Model\StoredProcedure;
/**
 * @author Gregor Müller
 */
interface StoredProcedureFactory
{
    /**
     * @param string $procedureName
     *
     * @return string
     */
    public function createDropStatementForProcedureName(string $procedureName) : string;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createInsertStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createUpdateStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createSelectByPKStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param Reference $reference
     *
     * @return StoredProcedureDefinition
     */
    public function createSelectByReferenceStoredProcedure(DataModel $dataModel, Entity $entity, Reference $reference) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param CollectionMany $collectionMany
     *
     * @return StoredProcedureDefinition
     */
    public function createSelectByCollectionManyStoredProcedure(DataModel $dataModel, Entity $entity, CollectionMany $collectionMany) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteByPKStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param Reference $reference
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteByReferenceStoredProcedure(DataModel $dataModel, Entity $entity, Reference $reference) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param CollectionMany $collectionMany
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteByCollectionManyStoredProcedure(DataModel $dataModel, Entity $entity, CollectionMany $collectionMany) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param CollectionMany $collectionMany
     *
     * @return StoredProcedureDefinition
     */
    public function createDeleteCollectionManyAssignmentStoredProcedure(DataModel $dataModel, Entity $entity, CollectionMany $collectionMany) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     *
     * @return StoredProcedureDefinition
     */
    public function createCopyToReplicationTableStoredProcedure(DataModel $dataModel, Entity $entity) : StoredProcedureDefinition;
    /**
     * @param DataModel $dataModel
     * @param Entity $entity
     * @param StoredProcedure $storedProcedure
     *
     * @return StoredProcedureDefinition
     */
    public function createCustomStoredProcedure(DataModel $dataModel, Entity $entity, StoredProcedure $storedProcedure) : StoredProcedureDefinition;
}