diff --git a/src/Application/Security/Ports/Directories/ClientDirectory.php b/src/Application/Security/Ports/Directories/ClientDirectory.php deleted file mode 100644 index 68119cf..0000000 --- a/src/Application/Security/Ports/Directories/ClientDirectory.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ -interface ClientDirectory extends Directory -{ - public function find(ClientId $id): ?Client; - - /** @return Paginated */ - public function search(string $query, Pagination $pagination): Paginated; - - /** @return Paginated */ - public function findAll(Pagination $pagination): Paginated; -} diff --git a/src/Application/Security/Ports/Repositories/ClientRepository.php b/src/Application/Security/Ports/Repositories/ClientRepository.php index eaf67bb..687ebeb 100644 --- a/src/Application/Security/Ports/Repositories/ClientRepository.php +++ b/src/Application/Security/Ports/Repositories/ClientRepository.php @@ -9,6 +9,8 @@ use Application\Security\Models\ValueObjects\ClientIdentifier; use Application\Security\Models\ValueObjects\ClientName; use Application\Security\Models\ValueObjects\Entities\ClientId; use Shared\DDD\Port\Repository; +use Shared\Paginated; +use Shared\Pagination; /** * @extends Repository @@ -21,6 +23,12 @@ interface ClientRepository extends Repository public function existsByName(ClientName $name): bool; + /** @return Paginated */ + public function search(string $query, Pagination $pagination): Paginated; + + /** @return Paginated */ + public function findAll(Pagination $pagination): Paginated; + public function persist(Client $client): void; /** diff --git a/src/Application/Security/Usecases/FindAllClients/FindAllClients.php b/src/Application/Security/Usecases/FindAllClients/FindAllClients.php index 0525364..d72517c 100644 --- a/src/Application/Security/Usecases/FindAllClients/FindAllClients.php +++ b/src/Application/Security/Usecases/FindAllClients/FindAllClients.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace Application\Security\Usecases\FindAllClients; use Application\Security\Models\Entities\Client; -use Application\Security\Ports\Directories\ClientDirectory; +use Application\Security\Ports\Repositories\ClientRepository; use Shared\DDD\Usecase\Input as BaseInput; use Shared\DDD\Usecase\Usecase; use Shared\Paginated; @@ -15,7 +15,7 @@ use Webmozart\Assert\Assert; final readonly class FindAllClients implements Usecase { public function __construct( - private ClientDirectory $directory, + private ClientRepository $repository, ) { } @@ -24,7 +24,7 @@ final readonly class FindAllClients implements Usecase { Assert::isInstanceOf($input, Input::class); - $page = $this->directory->findAll($input->pagination); + $page = $this->repository->findAll($input->pagination); return $this->toOutput($page); } diff --git a/src/Application/Security/Usecases/FindClient/FindClient.php b/src/Application/Security/Usecases/FindClient/FindClient.php index b8d3610..50f74ed 100644 --- a/src/Application/Security/Usecases/FindClient/FindClient.php +++ b/src/Application/Security/Usecases/FindClient/FindClient.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace Application\Security\Usecases\FindClient; -use Application\Security\Ports\Directories\ClientDirectory; +use Application\Security\Ports\Repositories\ClientRepository; use Shared\DDD\Usecase\Input as BaseInput; use Shared\DDD\Usecase\Usecase; use Shared\Pagination; @@ -14,7 +14,7 @@ use Webmozart\Assert\Assert; final readonly class FindClient implements Usecase { public function __construct( - private ClientDirectory $clientDirectory, + private ClientRepository $clientRepository, ) { } @@ -24,7 +24,7 @@ final readonly class FindClient implements Usecase Assert::isInstanceOf($input, Input::class); $pagination = $input->pagination ?? Pagination::ofOffsetAndLimit(0, 20); - $paginated = $this->clientDirectory->search($input->query, $pagination); + $paginated = $this->clientRepository->search($input->query, $pagination); return new Output($paginated); } diff --git a/src/Infra/Adapters/Repositories/ApiClientRepository.php b/src/Infra/Adapters/Repositories/ApiClientRepository.php index a9aae56..f01aadf 100644 --- a/src/Infra/Adapters/Repositories/ApiClientRepository.php +++ b/src/Infra/Adapters/Repositories/ApiClientRepository.php @@ -9,14 +9,13 @@ use Application\Security\Models\Entities\Client; use Application\Security\Models\ValueObjects\ClientIdentifier; use Application\Security\Models\ValueObjects\ClientName; use Application\Security\Models\ValueObjects\Entities\ClientId; -use Application\Security\Ports\Directories\ClientDirectory; use Application\Security\Ports\Repositories\ClientRepository; use Illuminate\Support\Str; use Infra\Database\Models\ApiClient; use Shared\Paginated; use Shared\Pagination; -final class ApiClientRepository implements ClientDirectory, ClientRepository +final class ApiClientRepository implements ClientRepository { #[\Override] public function persist(Client $client): void diff --git a/src/Infra/Adapters/Repositories/InMemoryClientRepository.php b/src/Infra/Adapters/Repositories/InMemoryClientRepository.php index 5402218..f4d5a25 100644 --- a/src/Infra/Adapters/Repositories/InMemoryClientRepository.php +++ b/src/Infra/Adapters/Repositories/InMemoryClientRepository.php @@ -9,13 +9,12 @@ use Application\Security\Models\Entities\Client; use Application\Security\Models\ValueObjects\ClientIdentifier; use Application\Security\Models\ValueObjects\ClientName; use Application\Security\Models\ValueObjects\Entities\ClientId; -use Application\Security\Ports\Directories\ClientDirectory; use Application\Security\Ports\Repositories\ClientRepository; use Illuminate\Support\Str; use Shared\Paginated; use Shared\Pagination; -final class InMemoryClientRepository implements ClientDirectory, ClientRepository +final class InMemoryClientRepository implements ClientRepository { /** @var array */ private array $clients = []; diff --git a/src/Infra/Providers/SecurityServiceProvider.php b/src/Infra/Providers/SecurityServiceProvider.php index ff43d1b..2601ae8 100644 --- a/src/Infra/Providers/SecurityServiceProvider.php +++ b/src/Infra/Providers/SecurityServiceProvider.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Infra\Providers; use Application\Arcadia\Config\AppConfig; -use Application\Security\Ports\Directories\ClientDirectory; use Application\Security\Ports\Repositories\ClientRepository; use Application\Security\Ports\Services\ClientCredentialGenerator; use Application\Security\Ports\Services\HmacSignatureValidator; @@ -35,7 +34,6 @@ final class SecurityServiceProvider extends ServiceProvider { $this->app->bind(ClientCredentialGenerator::class, ClientCredentialGeneratorImpl::class); $this->app->bind(ClientRepository::class, ApiClientRepository::class); - $this->app->bind(ClientDirectory::class, ApiClientRepository::class); $this->app->bind(HmacSignatureValidator::class, HmacSignatureValidatorImpl::class); $this->app->bind(NonceValidator::class, function (Application $app): CachedNonceValidator { diff --git a/src/Presentation/Console/Services/ClientConsoleResolver.php b/src/Presentation/Console/Services/ClientConsoleResolver.php index be6e41a..0d5cd79 100644 --- a/src/Presentation/Console/Services/ClientConsoleResolver.php +++ b/src/Presentation/Console/Services/ClientConsoleResolver.php @@ -7,7 +7,6 @@ namespace Presentation\Console\Services; use Application\Security\Models\Entities\Client; use Application\Security\Models\ValueObjects\ClientIdentifier; use Application\Security\Models\ValueObjects\Entities\ClientId; -use Application\Security\Ports\Directories\ClientDirectory; use Application\Security\Ports\Repositories\ClientRepository; use Application\Security\Usecases\FindClient\FindClient; use Application\Security\Usecases\FindClient\Input as FindClientInput; @@ -23,7 +22,6 @@ final readonly class ClientConsoleResolver { public function __construct( private ClientRepository $clientRepository, - private ClientDirectory $clientDirectory, private FindClient $findClient, private UsecaseExecutor $executor, ) { @@ -34,7 +32,7 @@ final readonly class ClientConsoleResolver */ public function complete(CompletionSuggestions $suggestions): void { - $clients = $this->clientDirectory->findAll(Pagination::ofOffsetAndLimit(0, 100)); + $clients = $this->clientRepository->findAll(Pagination::ofOffsetAndLimit(0, 100)); /** @var list $items */ $items = array_map( @@ -58,7 +56,7 @@ final readonly class ClientConsoleResolver $trimmed = trim($value); if ($trimmed === '') { - $clients = $this->clientDirectory->findAll(Pagination::ofOffsetAndLimit(0, 10)); + $clients = $this->clientRepository->findAll(Pagination::ofOffsetAndLimit(0, 10)); $options = []; foreach ($clients->getItems() as $client) { $options[$client->identifier->value] = sprintf( diff --git a/tests/Unit/Presentation/Console/Services/ClientConsoleResolverTest.php b/tests/Unit/Presentation/Console/Services/ClientConsoleResolverTest.php index afe43de..fb31b5a 100644 --- a/tests/Unit/Presentation/Console/Services/ClientConsoleResolverTest.php +++ b/tests/Unit/Presentation/Console/Services/ClientConsoleResolverTest.php @@ -60,7 +60,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client1, $client2); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); $suggestions = new CompletionSuggestions(); // WHEN @@ -87,7 +87,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN $options = $resolver->searchOptions(' '); @@ -109,7 +109,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN $options = $resolver->searchOptions('beta'); @@ -130,7 +130,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { } }; - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $failingExecutor); + $resolver = new ClientConsoleResolver($repository, $findClient, $failingExecutor); // WHEN $options = $resolver->searchOptions('broken'); @@ -152,7 +152,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN $found = $resolver->find("Selected: {$identifier} (Active)"); @@ -175,7 +175,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN $found = $resolver->find($uuid7->toString()); @@ -197,7 +197,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN $found = $resolver->find('Unique App'); @@ -227,7 +227,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { ); $repository->add($client1, $client2); - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN $found = $resolver->find('Payment Service'); @@ -239,7 +239,7 @@ describe('ClientConsoleResolver Unit Tests', function (): void { it('returns null when input is empty or client not found', function () use ($repository, $findClient, $executor): void { // GIVEN - $resolver = new ClientConsoleResolver($repository, $repository, $findClient, $executor); + $resolver = new ClientConsoleResolver($repository, $findClient, $executor); // WHEN & THEN expect($resolver->find(''))->toBeNull()