refactor: use unified service provider desing
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -9,16 +9,21 @@ declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Chrono\Service;
|
||||
|
||||
use Generator;
|
||||
use KTXF\Chrono\Collection\CollectionBaseInterface;
|
||||
use KTXF\Chrono\Entity\EntityBaseInterface;
|
||||
use KTXF\Resource\Delta\Delta;
|
||||
use KTXF\Resource\Filter\IFilter;
|
||||
use KTXF\Resource\Identifier\EntityIdentifierInterface;
|
||||
use KTXF\Resource\Provider\ResourceServiceBaseInterface;
|
||||
use KTXF\Resource\Range\IRange;
|
||||
use KTXF\Resource\Range\RangeType;
|
||||
use KTXF\Resource\Sort\ISort;
|
||||
|
||||
/**
|
||||
* Chrono Service Base Interface
|
||||
* Service Base Interface
|
||||
*
|
||||
* Minimum interface for a service, providing read-only access to collections and entities.
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*/
|
||||
@@ -70,7 +75,7 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
||||
* @param IFilter|null $filter Optional filter criteria
|
||||
* @param ISort|null $sort Optional sort order
|
||||
*
|
||||
* @return array<string|int,CollectionBaseInterface> Collections indexed by ID
|
||||
* @return array<string|int,CollectionBaseInterface> Collections indexed by identifier
|
||||
*/
|
||||
public function collectionList(string|int $location, ?IFilter $filter = null, ?ISort $sort = null): array;
|
||||
|
||||
@@ -97,9 +102,9 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int ...$identifiers Collection IDs to check
|
||||
* @param string|int ...$identifiers Collection identifiers to check
|
||||
*
|
||||
* @return array<string|int,bool> Map of ID => exists
|
||||
* @return array<string|int,bool> Map of identifier => exists
|
||||
*/
|
||||
public function collectionExtant(string|int $location, string|int ...$identifiers): array;
|
||||
|
||||
@@ -108,29 +113,44 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int $identifier Collection ID
|
||||
* @param string|int $identifier Collection identifier
|
||||
*
|
||||
* @return CollectionBaseInterface|null Collection or null if not found
|
||||
*/
|
||||
public function collectionFetch(string|int $identifier): ?CollectionBaseInterface;
|
||||
|
||||
/**
|
||||
* Lists messages in a collection
|
||||
* Lists entities in a collection
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int $collection Collection ID
|
||||
* @param string|int $collection Collection identifier
|
||||
* @param IFilter|null $filter Optional filter criteria
|
||||
* @param ISort|null $sort Optional sort order
|
||||
* @param IRange|null $range Optional pagination
|
||||
* @param array|null $properties Optional message properties to fetch
|
||||
* @param array|null $properties Optional entity properties to fetch
|
||||
*
|
||||
* @return array<string|int,EntityBaseInterface> Messages indexed by ID
|
||||
* @return array<string,EntityBaseInterface> Entities indexed by Urn
|
||||
*/
|
||||
public function entityList(string|int $collection, ?IFilter $filter = null, ?ISort $sort = null, ?IRange $range = null, ?array $properties = null): array;
|
||||
public function entityListBulk(string|int $collection, ?IFilter $filter = null, ?ISort $sort = null, ?IRange $range = null, ?array $properties = null): array;
|
||||
|
||||
/**
|
||||
* Creates a filter builder for messages
|
||||
* Lists entities in a collection
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int $collection Collection identifier
|
||||
* @param IFilter|null $filter Optional filter criteria
|
||||
* @param ISort|null $sort Optional sort order
|
||||
* @param IRange|null $range Optional pagination
|
||||
* @param array|null $properties Optional entity properties to fetch
|
||||
*
|
||||
* @return Generator Yields entities one by one as EntityBaseInterface
|
||||
*/
|
||||
public function entityListStream(string|int $collection, ?IFilter $filter = null, ?ISort $sort = null, ?IRange $range = null, ?array $properties = null): Generator;
|
||||
|
||||
/**
|
||||
* Creates a filter builder for entities
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
@@ -139,7 +159,7 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
||||
public function entityListFilter(): IFilter;
|
||||
|
||||
/**
|
||||
* Creates a sort builder for messages
|
||||
* Creates a sort builder for entities
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
@@ -148,7 +168,7 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
||||
public function entityListSort(): ISort;
|
||||
|
||||
/**
|
||||
* Creates a range builder for messages
|
||||
* Creates a range builder for entities
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
@@ -159,40 +179,49 @@ interface ServiceBaseInterface extends ResourceServiceBaseInterface {
|
||||
public function entityListRange(RangeType $type): IRange;
|
||||
|
||||
/**
|
||||
* Gets incremental changes since last sync
|
||||
* Gets incremental changes since last signature
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int $collection Collection ID
|
||||
* @param string $signature Sync token from previous sync
|
||||
* @param string $detail Detail level: 'ids', 'minimal', 'full'
|
||||
* @param string|int $collection Collection identifier
|
||||
* @param string $signature Token from previous delta
|
||||
*
|
||||
* @return array ['signature' => string, 'added' => array, 'modified' => array, 'removed' => array]
|
||||
*/
|
||||
public function entityDelta(string|int $collection, string $signature, string $detail = 'ids'): Delta;
|
||||
public function entityDelta(string|int $collection, string $signature): Delta;
|
||||
|
||||
/**
|
||||
* Checks if messages exist
|
||||
* Checks if entities exist
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int $collection Collection ID
|
||||
* @param string|int ...$identifiers Message IDs to check
|
||||
* @param string|int $collection Collection identifier
|
||||
* @param string|int ...$identifiers Entity identifiers to check
|
||||
*
|
||||
* @return array<string|int,bool> Map of ID => exists
|
||||
* @return array<string|int,bool> Map of identifier => exists
|
||||
*/
|
||||
public function entityExtant(string|int $collection, string|int ...$identifiers): array;
|
||||
|
||||
/**
|
||||
* Fetches one or more entities
|
||||
* Fetches one or more entities as an array
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param string|int $collection Collection ID
|
||||
* @param string|int ...$identifiers Message IDs to fetch
|
||||
* @param EntityIdentifierInterface ...$identifiers Entity identifiers to fetch
|
||||
*
|
||||
* @return array<string|int,EntityBaseInterface> Messages indexed by ID
|
||||
* @return array<string,EntityBaseInterface> Entities indexed by Urn
|
||||
*/
|
||||
public function entityFetch(string|int $collection, string|int ...$identifiers): array;
|
||||
public function entityFetchBulk(EntityIdentifierInterface ...$identifiers): array;
|
||||
|
||||
/**
|
||||
* Fetches one or more entities as a stream
|
||||
*
|
||||
* @since 2025.05.01
|
||||
*
|
||||
* @param EntityIdentifierInterface ...$identifiers Entity identifiers to fetch
|
||||
*
|
||||
* @return Generator<string,EntityBaseInterface> Yields entities one by one
|
||||
*/
|
||||
public function entityFetchStream(EntityIdentifierInterface ...$identifiers): Generator;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user