Skip to content

Commit

Permalink
Merge pull request #16 from Jeckel-Lab/feature/query-bus
Browse files Browse the repository at this point in the history
Add interfaces for a Query Bus
  • Loading branch information
jeckel committed Nov 8, 2021
2 parents 9be094f + de9ef0c commit 698480e
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/Core/QueryDispatcher/Exception/InvalidQueryException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

/**
* @author: Julien Mercier-Rojas <julien@jeckel-lab.fr>
* Created at: 08/11/2021
*/

declare(strict_types=1);

namespace JeckelLab\Contract\Core\QueryDispatcher\Exception;

use JeckelLab\Contract\Core\Exception\RuntimeException;

/**
* Class InvalidQueryException
* @package JeckelLab\Contract\Core\QueryDispatcher\Exception
* @psalm-immutable
*/
class InvalidQueryException extends RuntimeException implements QueryDispatcherException
{

}
20 changes: 20 additions & 0 deletions src/Core/QueryDispatcher/Exception/QueryDispatcherException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

/**
* @author: Julien Mercier-Rojas <julien@jeckel-lab.fr>
* Created at: 08/11/2021
*/

declare(strict_types=1);

namespace JeckelLab\Contract\Core\QueryDispatcher\Exception;

use JeckelLab\Contract\Core\Exception\CoreException;

/**
* @psalm-immutable
*/
interface QueryDispatcherException extends CoreException
{

}
18 changes: 18 additions & 0 deletions src/Core/QueryDispatcher/Query/Query.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

/**
* @author: Julien Mercier-Rojas <julien@jeckel-lab.fr>
* Created at: 08/11/2021
*/

declare(strict_types=1);

namespace JeckelLab\Contract\Core\QueryDispatcher\Query;

/**
* @psalm-immutable
*/
interface Query
{

}
20 changes: 20 additions & 0 deletions src/Core/QueryDispatcher/QueryBus/QueryBus.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

/**
* @author: Julien Mercier-Rojas <julien@jeckel-lab.fr>
* Created at: 08/11/2021
*/

namespace JeckelLab\Contract\Core\QueryDispatcher\QueryBus;

use JeckelLab\Contract\Core\QueryDispatcher\Query\Query;
use JeckelLab\Contract\Presentation\ViewModel\ViewModel;

interface QueryBus
{
/**
* @param Query $query
* @return ViewModel
*/
public function dispatch(Query $query): ViewModel;
}
28 changes: 28 additions & 0 deletions src/Core/QueryDispatcher/QueryHandler/QueryHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

/**
* @author: Julien Mercier-Rojas <julien@jeckel-lab.fr>
* Created at: 08/11/2021
*/

namespace JeckelLab\Contract\Core\QueryDispatcher\QueryHandler;

use JeckelLab\Contract\Core\QueryDispatcher\Exception\InvalidQueryException;
use JeckelLab\Contract\Core\QueryDispatcher\Query\Query;
use JeckelLab\Contract\Presentation\ViewModel\ViewModel;

interface QueryHandler
{
/**
* @return array<class-string<Query>>
* @psalm-mutation-free
*/
public static function getHandledQueries(): array;

/**
* @param Query $query
* @return ViewModel
* @throws InvalidQueryException
*/
public function __invoke(Query $query): ViewModel;
}

0 comments on commit 698480e

Please sign in to comment.