Skip to content

Commit

Permalink
add contract for repositories with filters.
Browse files Browse the repository at this point in the history
  • Loading branch information
Warxcell committed May 21, 2021
1 parent a10688d commit 45741da
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 14 deletions.
18 changes: 4 additions & 14 deletions src/Filters.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,32 +66,22 @@ public function appendFilter(QueryBuilder $queryBuilder, string $alias, string $
return $queryBuilder->filters[$filterName] = true;
}

/**
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function findOneByFilters(iterable $filterBy)
public function findOneByFilters(iterable $filterBy): ?object
{
return $this->createQueryBuilderByFilters('entity', $filterBy)->getQuery()->getOneOrNullResult();
}

public function findByFilters(iterable $filterBy)
public function findByFilters(iterable $filterBy): array
{
return $this->createQueryBuilderByFilters('entity', $filterBy)->getQuery()->getResult();
}

/**
* @throws \Doctrine\ORM\NoResultException
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function getSingleResultByFilters(iterable $filterBy)
public function getSingleResultByFilters(iterable $filterBy): object
{
return $this->createQueryBuilderByFilters('entity', $filterBy)->getQuery()->getSingleResult();
}

/**
* @throws \Doctrine\ORM\NoResultException
* @throws \Doctrine\ORM\NonUniqueResultException
*/

public function countByFilters(iterable $filterBy): int
{
return (int)$this
Expand Down
33 changes: 33 additions & 0 deletions src/HasFilters.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

declare(strict_types=1);

namespace Arxy\DoctrineORMFilters;

use Doctrine\ORM\QueryBuilder;

interface HasFilters
{
public function createQueryBuilderByFilters(
string $alias,
iterable $filterBy,
string $indexBy = null
): QueryBuilder;

public function appendFilter(QueryBuilder $queryBuilder, string $alias, string $filterName, ...$values): bool;

/**
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function findOneByFilters(iterable $filterBy): ?object;

public function findByFilters(iterable $filterBy): array;

/**
* @throws \Doctrine\ORM\NoResultException
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function getSingleResultByFilters(iterable $filterBy): object;

public function countByFilters(iterable $filterBy): int;
}
21 changes: 21 additions & 0 deletions tests/TestRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace Arxy\DoctrineORMFilters\Tests;

use Arxy\DoctrineORMFilters\Filters;
use Arxy\DoctrineORMFilters\HasFilters;

class TestRepository implements HasFilters
{
use Filters;

public function createQueryBuilder($alias, $indexBy = null)
{

}

public function getFilters(): array
{
return [];
}
}

0 comments on commit 45741da

Please sign in to comment.