refactor: entity move and delete
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -35,6 +35,10 @@ class ResourceIdentifier implements ResourceIdentifierInterface {
|
||||
return $this->provider;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): string {
|
||||
return (string) $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a colon-separated identifier string and return the appropriate level class
|
||||
*
|
||||
|
||||
@@ -9,10 +9,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Resource\Identifier;
|
||||
|
||||
use KTXF\Json\JsonSerializable;
|
||||
|
||||
/**
|
||||
* Top-level identifier for resources (provider level)
|
||||
*/
|
||||
interface ResourceIdentifierInterface extends \Stringable {
|
||||
interface ResourceIdentifierInterface extends JsonSerializable, \Stringable {
|
||||
|
||||
/** The provider segment (e.g. "imap") */
|
||||
public function provider(): string;
|
||||
@@ -23,4 +25,7 @@ interface ResourceIdentifierInterface extends \Stringable {
|
||||
/** Canonical string form: provider[:service[:collection[:entity]]] */
|
||||
public function __toString(): string;
|
||||
|
||||
/** Canonical JSON form: provider[:service[:collection[:entity]]] */
|
||||
public function jsonSerialize(): string;
|
||||
|
||||
}
|
||||
|
||||
@@ -151,4 +151,11 @@ class ResourceIdentifiers implements ResourceIdentifiersInterface {
|
||||
return count($this->identifiers) === 0;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): array {
|
||||
return array_map(
|
||||
static fn (ResourceIdentifierInterface $identifier): string => $identifier->jsonSerialize(),
|
||||
$this->identifiers,
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,10 +9,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace KTXF\Resource\Identifier;
|
||||
|
||||
use KTXF\Json\JsonSerializable;
|
||||
|
||||
/**
|
||||
* A typed collection of resource identifiers with search and filter capabilities
|
||||
*/
|
||||
interface ResourceIdentifiersInterface extends \Countable, \IteratorAggregate {
|
||||
interface ResourceIdentifiersInterface extends JsonSerializable, \Countable, \IteratorAggregate {
|
||||
|
||||
/** Add an identifier to the collection */
|
||||
public function add(ResourceIdentifierInterface $identifier): void;
|
||||
@@ -47,4 +49,7 @@ interface ResourceIdentifiersInterface extends \Countable, \IteratorAggregate {
|
||||
/** Get unique entity names */
|
||||
public function entities(): array;
|
||||
|
||||
/** Serialize as an array of canonical identifier strings */
|
||||
public function jsonSerialize(): array;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user