From 983916a13e2fd34d4423075ea394e545348dd82d Mon Sep 17 00:00:00 2001 From: Adam Kadlec Date: Wed, 22 Jun 2022 22:15:12 +0200 Subject: [PATCH] Allow use uuid or metadata entity in states models --- fastybird_devices_module/__init__.py | 2 +- .../States/ChannelPropertiesManager.php | 70 +++++++++++++++---- .../States/ChannelPropertiesRepository.php | 28 +++++++- .../States/ConnectorPropertiesManager.php | 38 +++++++--- .../States/ConnectorPropertiesRepository.php | 21 +++++- src/Models/States/DevicePropertiesManager.php | 70 +++++++++++++++---- .../States/DevicePropertiesRepository.php | 28 +++++++- .../States/IChannelPropertiesManager.php | 11 +-- .../States/IChannelPropertiesRepository.php | 15 +++- .../States/IConnectorPropertiesManager.php | 11 +-- .../States/IConnectorPropertiesRepository.php | 15 +++- .../States/IDevicePropertiesManager.php | 11 +-- .../States/IDevicePropertiesRepository.php | 15 +++- 13 files changed, 274 insertions(+), 61 deletions(-) diff --git a/fastybird_devices_module/__init__.py b/fastybird_devices_module/__init__.py index 52bf165a..6820dc19 100644 --- a/fastybird_devices_module/__init__.py +++ b/fastybird_devices_module/__init__.py @@ -18,4 +18,4 @@ Devices module """ -__version__ = "0.63.0" +__version__ = "0.64.0" diff --git a/src/Models/States/ChannelPropertiesManager.php b/src/Models/States/ChannelPropertiesManager.php index 08f8c100..dc276c9f 100644 --- a/src/Models/States/ChannelPropertiesManager.php +++ b/src/Models/States/ChannelPropertiesManager.php @@ -22,9 +22,12 @@ use FastyBird\DevicesModule\Utilities; use FastyBird\Exchange\Entities as ExchangeEntities; use FastyBird\Exchange\Publisher as ExchangePublisher; +use FastyBird\Metadata\Entities as MetadataEntities; +use FastyBird\Metadata\Exceptions as MetadataExceptions; use FastyBird\Metadata\Types as MetadataTypes; use Nette; use Nette\Utils; +use Ramsey\Uuid; /** * Channel property states manager @@ -48,25 +51,33 @@ final class ChannelPropertiesManager /** @var IChannelPropertiesManager|null */ protected ?IChannelPropertiesManager $manager; + /** @var Models\DataStorage\IChannelPropertiesRepository */ + private Models\DataStorage\IChannelPropertiesRepository $channelPropertiesRepository; + public function __construct( + Models\DataStorage\IChannelPropertiesRepository $channelPropertiesRepository, ExchangeEntities\EntityFactory $entityFactory, ?IChannelPropertiesManager $manager, ?ExchangePublisher\IPublisher $publisher ) { + $this->channelPropertiesRepository = $channelPropertiesRepository; $this->entityFactory = $entityFactory; $this->manager = $manager; $this->publisher = $publisher; } /** - * @param Entities\Channels\Properties\IProperty $property + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * @param Utils\ArrayHash $values * @param bool $publishState * * @return States\IChannelProperty + * + * @throws Utils\JsonException + * @throws MetadataExceptions\FileNotFoundException */ public function create( - Entities\Channels\Properties\IProperty $property, + $property, Utils\ArrayHash $values, bool $publishState = true ): States\IChannelProperty { @@ -78,7 +89,6 @@ public function create( throw new Exceptions\InvalidStateException('Child property can\'t have state'); } - /** @var States\IChannelProperty $createdState */ $createdState = $this->manager->create($property, $values); if ($publishState) { @@ -89,15 +99,18 @@ public function create( } /** - * @param Entities\Channels\Properties\IProperty $property + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * @param States\IChannelProperty $state * @param Utils\ArrayHash $values * @param bool $publishState * * @return States\IChannelProperty + * + * @throws Utils\JsonException + * @throws MetadataExceptions\FileNotFoundException */ public function update( - Entities\Channels\Properties\IProperty $property, + $property, States\IChannelProperty $state, Utils\ArrayHash $values, bool $publishState = true @@ -112,14 +125,24 @@ public function update( $storedState = $state->toArray(); - /** @var States\IChannelProperty $updatedState */ $updatedState = $this->manager->update($property, $state, $values); if ($storedState !== $updatedState->toArray() && $publishState) { $this->publishEntity($property, $updatedState); foreach ($property->getChildren() as $child) { - $this->publishEntity($child, $updatedState); + if ($child instanceof Uuid\UuidInterface) { + $child = $this->channelPropertiesRepository->findById($child); + + if ( + $child instanceof MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity + || $child instanceof MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity + ) { + $this->publishEntity($child, $updatedState); + } + } else { + $this->publishEntity($child, $updatedState); + } } } @@ -127,14 +150,17 @@ public function update( } /** - * @param Entities\Channels\Properties\IProperty $property + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * @param States\IChannelProperty $state * @param bool $publishState * * @return bool + * + * @throws Utils\JsonException + * @throws MetadataExceptions\FileNotFoundException */ public function delete( - Entities\Channels\Properties\IProperty $property, + $property, States\IChannelProperty $state, bool $publishState = true ): bool { @@ -152,15 +178,35 @@ public function delete( $this->publishEntity($property, null); foreach ($property->getChildren() as $child) { - $this->publishEntity($child, null); + if ($child instanceof Uuid\UuidInterface) { + $child = $this->channelPropertiesRepository->findById($child); + + if ( + $child instanceof MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity + || $child instanceof MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity + ) { + $this->publishEntity($child, null); + } + } else { + $this->publishEntity($child, null); + } } } return $result; } + /** + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property + * @param States\IChannelProperty|null $state + * + * @return void + * + * @throws Utils\JsonException + * @throws MetadataExceptions\FileNotFoundException + */ private function publishEntity( - Entities\Channels\Properties\IProperty $property, + $property, ?States\IChannelProperty $state ): void { if ($this->publisher === null) { @@ -171,7 +217,7 @@ private function publishEntity( $expectedValue = $state === null ? null : Utilities\ValueHelper::normalizeValue($property->getDataType(), $state->getExpectedValue(), $property->getFormat(), $property->getInvalid()); $this->publisher->publish( - $property->getSource(), + MetadataTypes\ModuleSourceType::get(MetadataTypes\ModuleSourceType::SOURCE_MODULE_DEVICES), MetadataTypes\RoutingKeyType::get(MetadataTypes\RoutingKeyType::ROUTE_CHANNEL_PROPERTY_ENTITY_REPORTED), $this->entityFactory->create(Utils\Json::encode(array_merge($property->toArray(), [ 'actual_value' => is_scalar($actualValue) || $actualValue === null ? $actualValue : strval($actualValue), diff --git a/src/Models/States/ChannelPropertiesRepository.php b/src/Models/States/ChannelPropertiesRepository.php index 9ad0ac6d..7991c806 100644 --- a/src/Models/States/ChannelPropertiesRepository.php +++ b/src/Models/States/ChannelPropertiesRepository.php @@ -18,7 +18,9 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\Exceptions; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; use Nette; +use Ramsey\Uuid; /** * Channel property repository @@ -43,22 +45,42 @@ public function __construct( } /** - * @param Entities\Channels\Properties\IProperty $property + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * * @return States\IChannelProperty|null */ public function findOne( - Entities\Channels\Properties\IProperty $property + $property ): ?States\IChannelProperty { if ($this->repository === null) { throw new Exceptions\NotImplementedException('Channel properties state repository is not registered'); } if ($property->getParent() !== null) { - return $this->repository->findOne($property->getParent()); + if ($property->getParent() instanceof Entities\Channels\Properties\IProperty) { + return $this->repository->findOne($property->getParent()); + + } else { + return $this->repository->findOneById($property->getParent()); + } } return $this->repository->findOne($property); } + /** + * @param Uuid\UuidInterface $id + * + * @return States\IChannelProperty|null + */ + public function findOneById( + Uuid\UuidInterface $id + ): ?States\IChannelProperty { + if ($this->repository === null) { + throw new Exceptions\NotImplementedException('Channel properties state repository is not registered'); + } + + return $this->repository->findOneById($id); + } + } diff --git a/src/Models/States/ConnectorPropertiesManager.php b/src/Models/States/ConnectorPropertiesManager.php index 9d0014a8..331ded56 100644 --- a/src/Models/States/ConnectorPropertiesManager.php +++ b/src/Models/States/ConnectorPropertiesManager.php @@ -22,6 +22,8 @@ use FastyBird\DevicesModule\Utilities; use FastyBird\Exchange\Entities as ExchangeEntities; use FastyBird\Exchange\Publisher as ExchangePublisher; +use FastyBird\Metadata\Entities as MetadataEntities; +use FastyBird\Metadata\Exceptions as MetadataExceptions; use FastyBird\Metadata\Types as MetadataTypes; use Nette; use Nette\Utils; @@ -59,14 +61,17 @@ public function __construct( } /** - * @param Entities\Connectors\Properties\IProperty $property + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * @param Utils\ArrayHash $values * @param bool $publishState * * @return States\IConnectorProperty + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException */ public function create( - Entities\Connectors\Properties\IProperty $property, + $property, Utils\ArrayHash $values, bool $publishState = true ): States\IConnectorProperty { @@ -74,7 +79,6 @@ public function create( throw new Exceptions\NotImplementedException('Connector properties state manager is not registered'); } - /** @var States\IConnectorProperty $createdState */ $createdState = $this->manager->create($property, $values); if ($publishState) { @@ -85,15 +89,18 @@ public function create( } /** - * @param Entities\Connectors\Properties\IProperty $property + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * @param States\IConnectorProperty $state * @param Utils\ArrayHash $values * @param bool $publishState * * @return States\IConnectorProperty + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException */ public function update( - Entities\Connectors\Properties\IProperty $property, + $property, States\IConnectorProperty $state, Utils\ArrayHash $values, bool $publishState = true @@ -104,7 +111,6 @@ public function update( $storedState = $state->toArray(); - /** @var States\IConnectorProperty $updatedState */ $updatedState = $this->manager->update($property, $state, $values); if ($storedState !== $updatedState->toArray() && $publishState) { @@ -115,14 +121,17 @@ public function update( } /** - * @param Entities\Connectors\Properties\IProperty $property + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * @param States\IConnectorProperty $state * @param bool $publishState * * @return bool + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException */ public function delete( - Entities\Connectors\Properties\IProperty $property, + $property, States\IConnectorProperty $state, bool $publishState = true ): bool { @@ -139,8 +148,17 @@ public function delete( return $result; } + /** + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property + * @param States\IConnectorProperty|null $state + * + * @return void + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException + */ private function publishEntity( - Entities\Connectors\Properties\IProperty $property, + $property, ?States\IConnectorProperty $state ): void { if ($this->publisher === null) { @@ -151,7 +169,7 @@ private function publishEntity( $expectedValue = $state === null ? null : Utilities\ValueHelper::normalizeValue($property->getDataType(), $state->getExpectedValue(), $property->getFormat(), $property->getInvalid()); $this->publisher->publish( - $property->getSource(), + MetadataTypes\ModuleSourceType::get(MetadataTypes\ModuleSourceType::SOURCE_MODULE_DEVICES), MetadataTypes\RoutingKeyType::get(MetadataTypes\RoutingKeyType::ROUTE_CONNECTOR_PROPERTY_ENTITY_REPORTED), $this->entityFactory->create(Utils\Json::encode(array_merge($property->toArray(), [ 'actual_value' => is_scalar($actualValue) || $actualValue === null ? $actualValue : strval($actualValue), diff --git a/src/Models/States/ConnectorPropertiesRepository.php b/src/Models/States/ConnectorPropertiesRepository.php index dd381508..e250bdd9 100644 --- a/src/Models/States/ConnectorPropertiesRepository.php +++ b/src/Models/States/ConnectorPropertiesRepository.php @@ -18,7 +18,9 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\Exceptions; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; use Nette; +use Ramsey\Uuid; /** * Connector property repository @@ -43,12 +45,12 @@ public function __construct( } /** - * @param Entities\Connectors\Properties\IProperty $property + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * * @return States\IConnectorProperty|null */ public function findOne( - Entities\Connectors\Properties\IProperty $property + $property ): ?States\IConnectorProperty { if ($this->repository === null) { throw new Exceptions\NotImplementedException('Connector properties state repository is not registered'); @@ -57,4 +59,19 @@ public function findOne( return $this->repository->findOne($property); } + /** + * @param Uuid\UuidInterface $id + * + * @return States\IConnectorProperty|null + */ + public function findOneById( + Uuid\UuidInterface $id + ): ?States\IConnectorProperty { + if ($this->repository === null) { + throw new Exceptions\NotImplementedException('Connector properties state repository is not registered'); + } + + return $this->repository->findOneById($id); + } + } diff --git a/src/Models/States/DevicePropertiesManager.php b/src/Models/States/DevicePropertiesManager.php index e5ea4bc0..1ea9c3b2 100644 --- a/src/Models/States/DevicePropertiesManager.php +++ b/src/Models/States/DevicePropertiesManager.php @@ -22,9 +22,12 @@ use FastyBird\DevicesModule\Utilities; use FastyBird\Exchange\Entities as ExchangeEntities; use FastyBird\Exchange\Publisher as ExchangePublisher; +use FastyBird\Metadata\Entities as MetadataEntities; +use FastyBird\Metadata\Exceptions as MetadataExceptions; use FastyBird\Metadata\Types as MetadataTypes; use Nette; use Nette\Utils; +use Ramsey\Uuid; /** * Device property states manager @@ -48,25 +51,33 @@ final class DevicePropertiesManager /** @var IDevicePropertiesManager|null */ protected ?IDevicePropertiesManager $manager; + /** @var Models\DataStorage\IDevicePropertiesRepository */ + private Models\DataStorage\IDevicePropertiesRepository $devicePropertiesRepository; + public function __construct( + Models\DataStorage\IDevicePropertiesRepository $devicePropertiesRepository, ExchangeEntities\EntityFactory $entityFactory, ?IDevicePropertiesManager $manager, ?ExchangePublisher\IPublisher $publisher ) { + $this->devicePropertiesRepository = $devicePropertiesRepository; $this->entityFactory = $entityFactory; $this->manager = $manager; $this->publisher = $publisher; } /** - * @param Entities\Devices\Properties\IProperty $property + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * @param Utils\ArrayHash $values * @param bool $publishState * * @return States\IDeviceProperty + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException */ public function create( - Entities\Devices\Properties\IProperty $property, + $property, Utils\ArrayHash $values, bool $publishState = true ): States\IDeviceProperty { @@ -78,7 +89,6 @@ public function create( throw new Exceptions\InvalidStateException('Child property can\'t have state'); } - /** @var States\IDeviceProperty $createdState */ $createdState = $this->manager->create($property, $values); if ($publishState) { @@ -89,15 +99,18 @@ public function create( } /** - * @param Entities\Devices\Properties\IProperty $property + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * @param States\IDeviceProperty $state * @param Utils\ArrayHash $values * @param bool $publishState * * @return States\IDeviceProperty + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException */ public function update( - Entities\Devices\Properties\IProperty $property, + $property, States\IDeviceProperty $state, Utils\ArrayHash $values, bool $publishState = true @@ -112,14 +125,24 @@ public function update( $storedState = $state->toArray(); - /** @var States\IDeviceProperty $updatedState */ $updatedState = $this->manager->update($property, $state, $values); if ($storedState !== $updatedState->toArray() && $publishState) { $this->publishEntity($property, $updatedState); foreach ($property->getChildren() as $child) { - $this->publishEntity($child, $updatedState); + if ($child instanceof Uuid\UuidInterface) { + $child = $this->devicePropertiesRepository->findById($child); + + if ( + $child instanceof MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity + || $child instanceof MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity + ) { + $this->publishEntity($child, $updatedState); + } + } else { + $this->publishEntity($child, $updatedState); + } } } @@ -127,14 +150,17 @@ public function update( } /** - * @param Entities\Devices\Properties\IProperty $property + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * @param States\IDeviceProperty $state * @param bool $publishState * * @return bool + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException */ public function delete( - Entities\Devices\Properties\IProperty $property, + $property, States\IDeviceProperty $state, bool $publishState = true ): bool { @@ -152,15 +178,35 @@ public function delete( $this->publishEntity($property, null); foreach ($property->getChildren() as $child) { - $this->publishEntity($child, null); + if ($child instanceof Uuid\UuidInterface) { + $child = $this->devicePropertiesRepository->findById($child); + + if ( + $child instanceof MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity + || $child instanceof MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity + ) { + $this->publishEntity($child, null); + } + } else { + $this->publishEntity($child, null); + } } } return $result; } + /** + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property + * @param States\IDeviceProperty|null $state + * + * @return void + * + * @throws MetadataExceptions\FileNotFoundException + * @throws Utils\JsonException + */ private function publishEntity( - Entities\Devices\Properties\IProperty $property, + $property, ?States\IDeviceProperty $state ): void { if ($this->publisher === null) { @@ -171,7 +217,7 @@ private function publishEntity( $expectedValue = $state === null ? null : Utilities\ValueHelper::normalizeValue($property->getDataType(), $state->getExpectedValue(), $property->getFormat(), $property->getInvalid()); $this->publisher->publish( - $property->getSource(), + MetadataTypes\ModuleSourceType::get(MetadataTypes\ModuleSourceType::SOURCE_MODULE_DEVICES), MetadataTypes\RoutingKeyType::get(MetadataTypes\RoutingKeyType::ROUTE_DEVICE_PROPERTY_ENTITY_REPORTED), $this->entityFactory->create(Utils\Json::encode(array_merge($property->toArray(), [ 'actual_value' => is_scalar($actualValue) || $actualValue === null ? $actualValue : strval($actualValue), diff --git a/src/Models/States/DevicePropertiesRepository.php b/src/Models/States/DevicePropertiesRepository.php index 722fa715..1036baa4 100644 --- a/src/Models/States/DevicePropertiesRepository.php +++ b/src/Models/States/DevicePropertiesRepository.php @@ -18,7 +18,9 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\Exceptions; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; use Nette; +use Ramsey\Uuid; /** * Device property repository @@ -43,22 +45,42 @@ public function __construct( } /** - * @param Entities\Devices\Properties\IProperty $property + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * * @return States\IDeviceProperty|null */ public function findOne( - Entities\Devices\Properties\IProperty $property + $property ): ?States\IDeviceProperty { if ($this->repository === null) { throw new Exceptions\NotImplementedException('Device properties state repository is not registered'); } if ($property->getParent() !== null) { - return $this->repository->findOne($property->getParent()); + if ($property->getParent() instanceof Entities\Devices\Properties\IProperty) { + return $this->repository->findOne($property->getParent()); + + } else { + return $this->repository->findOneById($property->getParent()); + } } return $this->repository->findOne($property); } + /** + * @param Uuid\UuidInterface $id + * + * @return States\IDeviceProperty|null + */ + public function findOneById( + Uuid\UuidInterface $id + ): ?States\IDeviceProperty { + if ($this->repository === null) { + throw new Exceptions\NotImplementedException('Device properties state repository is not registered'); + } + + return $this->repository->findOneById($id); + } + } diff --git a/src/Models/States/IChannelPropertiesManager.php b/src/Models/States/IChannelPropertiesManager.php index 28c1e527..29131524 100644 --- a/src/Models/States/IChannelPropertiesManager.php +++ b/src/Models/States/IChannelPropertiesManager.php @@ -17,6 +17,7 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; use Nette\Utils; /** @@ -31,35 +32,37 @@ interface IChannelPropertiesManager extends IPropertiesManager { /** - * @param Entities\Channels\Properties\IProperty $property + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * @param Utils\ArrayHash $values * * @return States\IChannelProperty */ public function create( - Entities\Channels\Properties\IProperty $property, + $property, Utils\ArrayHash $values ): States\IChannelProperty; /** + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * @param States\IChannelProperty $state * @param Utils\ArrayHash $values * * @return States\IChannelProperty */ public function update( - Entities\Channels\Properties\IProperty $property, + $property, States\IChannelProperty $state, Utils\ArrayHash $values ): States\IChannelProperty; /** + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * @param States\IChannelProperty $state * * @return bool */ public function delete( - Entities\Channels\Properties\IProperty $property, + $property, States\IChannelProperty $state ): bool; diff --git a/src/Models/States/IChannelPropertiesRepository.php b/src/Models/States/IChannelPropertiesRepository.php index ec320360..ac96d9e7 100644 --- a/src/Models/States/IChannelPropertiesRepository.php +++ b/src/Models/States/IChannelPropertiesRepository.php @@ -17,6 +17,8 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; +use Ramsey\Uuid; /** * Channel property repository interface @@ -30,12 +32,21 @@ interface IChannelPropertiesRepository extends IPropertiesRepository { /** - * @param Entities\Channels\Properties\IProperty $property + * @param Entities\Channels\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IChannelDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IChannelMappedPropertyEntity $property * * @return States\IChannelProperty|null */ public function findOne( - Entities\Channels\Properties\IProperty $property + $property + ): ?States\IChannelProperty; + + /** + * @param Uuid\UuidInterface $id + * + * @return States\IChannelProperty|null + */ + public function findOneById( + Uuid\UuidInterface $id ): ?States\IChannelProperty; } diff --git a/src/Models/States/IConnectorPropertiesManager.php b/src/Models/States/IConnectorPropertiesManager.php index c8521f06..f40f1f4b 100644 --- a/src/Models/States/IConnectorPropertiesManager.php +++ b/src/Models/States/IConnectorPropertiesManager.php @@ -17,6 +17,7 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; use Nette\Utils; /** @@ -31,35 +32,37 @@ interface IConnectorPropertiesManager extends IPropertiesManager { /** - * @param Entities\Connectors\Properties\IProperty $property + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * @param Utils\ArrayHash $values * * @return States\IConnectorProperty */ public function create( - Entities\Connectors\Properties\IProperty $property, + $property, Utils\ArrayHash $values ): States\IConnectorProperty; /** + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * @param States\IConnectorProperty $state * @param Utils\ArrayHash $values * * @return States\IConnectorProperty */ public function update( - Entities\Connectors\Properties\IProperty $property, + $property, States\IConnectorProperty $state, Utils\ArrayHash $values ): States\IConnectorProperty; /** + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * @param States\IConnectorProperty $state * * @return bool */ public function delete( - Entities\Connectors\Properties\IProperty $property, + $property, States\IConnectorProperty $state ): bool; diff --git a/src/Models/States/IConnectorPropertiesRepository.php b/src/Models/States/IConnectorPropertiesRepository.php index 0145e85f..609132fb 100644 --- a/src/Models/States/IConnectorPropertiesRepository.php +++ b/src/Models/States/IConnectorPropertiesRepository.php @@ -17,6 +17,8 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; +use Ramsey\Uuid; /** * Connector property repository interface @@ -30,12 +32,21 @@ interface IConnectorPropertiesRepository extends IPropertiesRepository { /** - * @param Entities\Connectors\Properties\IProperty $property + * @param Entities\Connectors\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IConnectorDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IConnectorMappedPropertyEntity $property * * @return States\IConnectorProperty|null */ public function findOne( - Entities\Connectors\Properties\IProperty $property + $property + ): ?States\IConnectorProperty; + + /** + * @param Uuid\UuidInterface $id + * + * @return States\IConnectorProperty|null + */ + public function findOneById( + Uuid\UuidInterface $id ): ?States\IConnectorProperty; } diff --git a/src/Models/States/IDevicePropertiesManager.php b/src/Models/States/IDevicePropertiesManager.php index c9cac4a3..739387a6 100644 --- a/src/Models/States/IDevicePropertiesManager.php +++ b/src/Models/States/IDevicePropertiesManager.php @@ -17,6 +17,7 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; use Nette\Utils; /** @@ -31,35 +32,37 @@ interface IDevicePropertiesManager extends IPropertiesManager { /** - * @param Entities\Devices\Properties\IProperty $property + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * @param Utils\ArrayHash $values * * @return States\IDeviceProperty */ public function create( - Entities\Devices\Properties\IProperty $property, + $property, Utils\ArrayHash $values ): States\IDeviceProperty; /** + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * @param States\IDeviceProperty $state * @param Utils\ArrayHash $values * * @return States\IDeviceProperty */ public function update( - Entities\Devices\Properties\IProperty $property, + $property, States\IDeviceProperty $state, Utils\ArrayHash $values ): States\IDeviceProperty; /** + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * @param States\IDeviceProperty $state * * @return bool */ public function delete( - Entities\Devices\Properties\IProperty $property, + $property, States\IDeviceProperty $state ): bool; diff --git a/src/Models/States/IDevicePropertiesRepository.php b/src/Models/States/IDevicePropertiesRepository.php index 841c86ee..e3a51674 100644 --- a/src/Models/States/IDevicePropertiesRepository.php +++ b/src/Models/States/IDevicePropertiesRepository.php @@ -17,6 +17,8 @@ use FastyBird\DevicesModule\Entities; use FastyBird\DevicesModule\States; +use FastyBird\Metadata\Entities as MetadataEntities; +use Ramsey\Uuid; /** * Device property repository interface @@ -30,12 +32,21 @@ interface IDevicePropertiesRepository extends IPropertiesRepository { /** - * @param Entities\Devices\Properties\IProperty $property + * @param Entities\Devices\Properties\IProperty|MetadataEntities\Modules\DevicesModule\IDeviceDynamicPropertyEntity|MetadataEntities\Modules\DevicesModule\IDeviceMappedPropertyEntity $property * * @return States\IDeviceProperty|null */ public function findOne( - Entities\Devices\Properties\IProperty $property + $property + ): ?States\IDeviceProperty; + + /** + * @param Uuid\UuidInterface $id + * + * @return States\IDeviceProperty|null + */ + public function findOneById( + Uuid\UuidInterface $id ): ?States\IDeviceProperty; }