Add RegroupmentRepositoryInterface and integrate it

Created a new `RegroupmentRepositoryInterface` to define repository methods for Regroupment entities. Updated `RegroupmentRepository` to implement this interface, and replaced its usage in `ExportConfigNormalizer` for better abstraction and testability.
This commit is contained in:
Julien Fastré 2025-04-08 15:24:18 +02:00
parent ee65c46d2a
commit 2b88593e64
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
3 changed files with 28 additions and 2 deletions

View File

@ -18,6 +18,7 @@ use Chill\MainBundle\Form\Type\Export\ExportType;
use Chill\MainBundle\Form\Type\Export\FilterType; use Chill\MainBundle\Form\Type\Export\FilterType;
use Chill\MainBundle\Repository\CenterRepositoryInterface; use Chill\MainBundle\Repository\CenterRepositoryInterface;
use Chill\MainBundle\Repository\RegroupmentRepository; use Chill\MainBundle\Repository\RegroupmentRepository;
use Chill\MainBundle\Repository\RegroupmentRepositoryInterface;
/** /**
* @phpstan-type NormalizedData array{centers: array{centers: list<int>, regroupments: list<int>}, export: array{form: array<string, mixed>, version: int}, filters: array<string, array{enabled: boolean, form: array<string, mixed>, version: int}>, aggregators: array<string, array{enabled: boolean, form: array<string, mixed>, version: int}>, pick_formatter: string, formatter: array{form: array<string, mixed>, version: int}} * @phpstan-type NormalizedData array{centers: array{centers: list<int>, regroupments: list<int>}, export: array{form: array<string, mixed>, version: int}, filters: array<string, array{enabled: boolean, form: array<string, mixed>, version: int}>, aggregators: array<string, array{enabled: boolean, form: array<string, mixed>, version: int}>, pick_formatter: string, formatter: array{form: array<string, mixed>, version: int}}
@ -27,7 +28,7 @@ class ExportConfigNormalizer
public function __construct( public function __construct(
private readonly ExportManager $exportManager, private readonly ExportManager $exportManager,
private readonly CenterRepositoryInterface $centerRepository, private readonly CenterRepositoryInterface $centerRepository,
private readonly RegroupmentRepository $regroupmentRepository, private readonly RegroupmentRepositoryInterface $regroupmentRepository,
) {} ) {}
/** /**

View File

@ -18,7 +18,7 @@ use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\NoResultException; use Doctrine\ORM\NoResultException;
use Doctrine\Persistence\ObjectRepository; use Doctrine\Persistence\ObjectRepository;
final readonly class RegroupmentRepository implements ObjectRepository final readonly class RegroupmentRepository implements RegroupmentRepositoryInterface
{ {
private EntityRepository $repository; private EntityRepository $repository;

View File

@ -0,0 +1,25 @@
<?php
namespace Chill\MainBundle\Repository;
use Chill\MainBundle\Entity\Regroupment;
use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\NoResultException;
use Doctrine\Persistence\ObjectRepository;
/**
* @template-extends ObjectRepository<Regroupment>
*/
interface RegroupmentRepositoryInterface extends ObjectRepository
{
/**
* @throws NonUniqueResultException
* @throws NoResultException
*/
public function findOneByName(string $name): ?Regroupment;
/**
* @return array<Regroupment>
*/
public function findRegroupmentAssociatedToNoCenter(): array;
}