From b8cda71c17b3e0d4bf2725f7b4130645815e1498 Mon Sep 17 00:00:00 2001 From: Sebastian Krupinski Date: Sat, 9 May 2026 17:00:00 -0400 Subject: [PATCH] refactor: service interfaces Signed-off-by: Sebastian Krupinski --- .../ServiceCollectionMutableInterface.php | 2 +- .../Service/ServiceConfigurableInterface.php | 7 +-- .../Service/ServiceEntityMutableInterface.php | 55 ++++++++++++------- .../ServiceEntityTransmitInterface.php | 2 +- .../Mail/Service/ServiceMutableInterface.php | 2 +- 5 files changed, 40 insertions(+), 28 deletions(-) diff --git a/shared/lib/Mail/Service/ServiceCollectionMutableInterface.php b/shared/lib/Mail/Service/ServiceCollectionMutableInterface.php index f341196..1eb16dc 100644 --- a/shared/lib/Mail/Service/ServiceCollectionMutableInterface.php +++ b/shared/lib/Mail/Service/ServiceCollectionMutableInterface.php @@ -20,7 +20,7 @@ use KTXF\Mail\Collection\CollectionMutableInterface; * * @since 2025.05.01 */ -interface ServiceCollectionMutableInterface extends ServiceBaseInterface { +interface ServiceCollectionMutableInterface { public const CAPABILITY_COLLECTION_CREATE = 'CollectionCreate'; public const CAPABILITY_COLLECTION_UPDATE = 'CollectionUpdate'; diff --git a/shared/lib/Mail/Service/ServiceConfigurableInterface.php b/shared/lib/Mail/Service/ServiceConfigurableInterface.php index 1c842af..ca0e3c7 100644 --- a/shared/lib/Mail/Service/ServiceConfigurableInterface.php +++ b/shared/lib/Mail/Service/ServiceConfigurableInterface.php @@ -12,15 +12,12 @@ namespace KTXF\Mail\Service; use KTXF\Resource\Provider\ResourceServiceConfigureInterface; /** - * Mail Service Mutable Interface + * Mail Service Configurable Interface * * Extends base service interface with setter methods for mutable properties. * Used for service configuration and updates. * * @since 2025.05.01 */ -interface ServiceConfigurableInterface extends ServiceMutableInterface, ResourceServiceConfigureInterface { - - public const JSON_TYPE = ServiceBaseInterface::JSON_TYPE; - +interface ServiceConfigurableInterface extends ResourceServiceConfigureInterface { } diff --git a/shared/lib/Mail/Service/ServiceEntityMutableInterface.php b/shared/lib/Mail/Service/ServiceEntityMutableInterface.php index 243354a..58fde5a 100644 --- a/shared/lib/Mail/Service/ServiceEntityMutableInterface.php +++ b/shared/lib/Mail/Service/ServiceEntityMutableInterface.php @@ -11,6 +11,7 @@ namespace KTXF\Mail\Service; use KTXF\Mail\Entity\EntityBaseInterface; use KTXF\Mail\Entity\EntityMutableInterface; +use KTXF\Mail\Object\MessagePropertiesMutableInterface; use KTXF\Resource\Identifier\CollectionIdentifier; use KTXF\Resource\Identifier\EntityIdentifier; @@ -22,11 +23,12 @@ use KTXF\Resource\Identifier\EntityIdentifier; * * @since 2025.05.01 */ -interface ServiceEntityMutableInterface extends ServiceBaseInterface { +interface ServiceEntityMutableInterface { public const CAPABILITY_ENTITY_CREATE = 'EntityCreate'; public const CAPABILITY_ENTITY_MODIFY = 'EntityModify'; public const CAPABILITY_ENTITY_DELETE = 'EntityDelete'; + public const CAPABILITY_ENTITY_PATCH = 'EntityPatch'; public const CAPABILITY_ENTITY_COPY = 'EntityCopy'; public const CAPABILITY_ENTITY_MOVE = 'EntityMove'; @@ -44,33 +46,32 @@ interface ServiceEntityMutableInterface extends ServiceBaseInterface { * * @since 2025.05.01 * - * @param string|int $collection collection identifier - * @param EntityMutableInterface $entity Entity data - * @param array $options additional options + * @param CollectionIdentifier $target Target collection identifier + * @param MessagePropertiesMutableInterface $properties Entity properties + * @param array $options Additional options * * @return EntityBaseInterface Created entity */ - public function entityCreate(string|int $collection, EntityMutableInterface $entity, array $options = []): EntityBaseInterface; + public function entityCreate(CollectionIdentifier $target, MessagePropertiesMutableInterface $properties, array $options = []): EntityBaseInterface; /** * Modifies an existing entity * * @since 2025.05.01 * - * @param string|int $collection Collection identifier - * @param string|int $identifier Entity identifier - * @param EntityMutableInterface $entity Entity data + * @param EntityIdentifier $target Target entity identifier + * @param MessagePropertiesMutableInterface $properties Entity properties to update * * @return EntityBaseInterface Modified entity */ - public function entityModify(string|int $collection, string|int $identifier, EntityMutableInterface $entity): EntityBaseInterface; + public function entityModify(EntityIdentifier $target, MessagePropertiesMutableInterface $properties): EntityBaseInterface; /** * Deletes entities * * @since 2026.04.01 * - * @param EntityIdentifier ...$identifiers Source entities to delete + * @param EntityIdentifier ...$targets Source entities to delete * * @return array Results keyed by source entity identifier */ - public function entityDelete(EntityIdentifier ...$identifiers): array; + public function entityDelete(EntityIdentifier ...$targets): array; /** - * Copies entities to another collection + * Patches an existing entity(ies) with partial data * * @since 2025.05.01 * - * @param CollectionIdentifier $target Target collection identifier - * @param EntityIdentifier ...$identifiers Source entities to copy + * @param MessagePropertiesMutableInterface $properties Partial entity properties + * @param EntityIdentifier ...$targets Source entities to patch * * @return array Results keyed by source entity identifier */ - public function entityCopy(CollectionIdentifier $target, EntityIdentifier ...$identifiers): array; + public function entityPatch(MessagePropertiesMutableInterface $properties, EntityIdentifier ...$targets): array; /** * Moves entities to another collection @@ -102,7 +101,7 @@ interface ServiceEntityMutableInterface extends ServiceBaseInterface { * @since 2025.05.01 * * @param CollectionIdentifier $target Target collection identifier - * @param EntityIdentifier ...$identifiers Source entities to move + * @param EntityIdentifier ...$sources Source entities to move * * @return array Results keyed by source entity identifier */ - public function entityMove(CollectionIdentifier $target, EntityIdentifier ...$identifiers): array; + public function entityMove(CollectionIdentifier $target, EntityIdentifier ...$sources): array; + + /** + * Copies entities to another collection + * + * @since 2025.05.01 + * + * @param CollectionIdentifier $target Target collection identifier + * @param EntityIdentifier ...$sources Source entities to copy + * + * @return array Results keyed by source entity identifier + */ + public function entityCopy(CollectionIdentifier $target, EntityIdentifier ...$sources): array; } diff --git a/shared/lib/Mail/Service/ServiceEntityTransmitInterface.php b/shared/lib/Mail/Service/ServiceEntityTransmitInterface.php index cd268d1..23b0158 100644 --- a/shared/lib/Mail/Service/ServiceEntityTransmitInterface.php +++ b/shared/lib/Mail/Service/ServiceEntityTransmitInterface.php @@ -19,7 +19,7 @@ use KTXF\Mail\Exception\SendException; * * @since 2025.05.01 */ -interface ServiceEntityTransmitInterface extends ServiceBaseInterface { +interface ServiceEntityTransmitInterface { public const CAPABILITY_ENTITY_TRANSMIT = 'EntityTransmit'; diff --git a/shared/lib/Mail/Service/ServiceMutableInterface.php b/shared/lib/Mail/Service/ServiceMutableInterface.php index 531c366..701e2c5 100644 --- a/shared/lib/Mail/Service/ServiceMutableInterface.php +++ b/shared/lib/Mail/Service/ServiceMutableInterface.php @@ -20,7 +20,7 @@ use KTXF\Resource\Provider\ResourceServiceMutateInterface; * * @since 2025.05.01 */ -interface ServiceMutableInterface extends ServiceBaseInterface, ResourceServiceMutateInterface { +interface ServiceMutableInterface extends ResourceServiceMutateInterface { /** * Sets the primary mailing address for this service -- 2.39.5