From 9549880fb7b23e221d84d9f29df01453f6898c43 Mon Sep 17 00:00:00 2001 From: GitHub Date: Wed, 10 Jan 2024 23:00:38 +0000 Subject: [PATCH] Use configuration instead of entity (#236) --- src/Connector/Connector.php | 38 ++++--------------- src/Connector/ConnectorFactory.php | 4 +- .../unit/Connector/ConnectorFactoryTest.php | 17 +++++---- 3 files changed, 19 insertions(+), 40 deletions(-) diff --git a/src/Connector/Connector.php b/src/Connector/Connector.php index 9cd3d67..8ef0be1 100644 --- a/src/Connector/Connector.php +++ b/src/Connector/Connector.php @@ -22,14 +22,12 @@ use FastyBird\Connector\FbMqtt\Helpers; use FastyBird\Connector\FbMqtt\Queue; use FastyBird\Connector\FbMqtt\Writers; +use FastyBird\Library\Metadata\Documents as MetadataDocuments; use FastyBird\Library\Metadata\Exceptions as MetadataExceptions; use FastyBird\Library\Metadata\Types as MetadataTypes; use FastyBird\Module\Devices\Connectors as DevicesConnectors; -use FastyBird\Module\Devices\Entities as DevicesEntities; use FastyBird\Module\Devices\Events as DevicesEvents; use FastyBird\Module\Devices\Exceptions as DevicesExceptions; -use FastyBird\Module\Devices\Models as DevicesModels; -use FastyBird\Module\Devices\Queries as DevicesQueries; use InvalidArgumentException; use Nette; use Psr\EventDispatcher as PsrEventDispatcher; @@ -64,14 +62,13 @@ final class Connector implements DevicesConnectors\Connector * @param array $clientsFactories */ public function __construct( - private readonly DevicesEntities\Connectors\Connector $connector, + private readonly MetadataDocuments\DevicesModule\Connector $connector, private readonly array $clientsFactories, private readonly Helpers\Connector $connectorHelper, private readonly Writers\WriterFactory $writerFactory, private readonly Queue\Queue $queue, private readonly Queue\Consumers $consumers, private readonly FbMqtt\Logger $logger, - private readonly DevicesModels\Configuration\Connectors\Repository $connectorsConfigurationRepository, private readonly EventLoop\LoopInterface $eventLoop, private readonly PsrEventDispatcher\EventDispatcherInterface|null $dispatcher = null, ) @@ -87,7 +84,7 @@ public function __construct( */ public function execute(): void { - assert($this->connector instanceof Entities\FbMqttConnector); + assert($this->connector->getType() === Entities\FbMqttConnector::TYPE); $this->logger->info( 'Starting FB MQTT connector service', @@ -100,28 +97,7 @@ public function execute(): void ], ); - $findConnector = new DevicesQueries\Configuration\FindConnectors(); - $findConnector->byId($this->connector->getId()); - $findConnector->byType(Entities\FbMqttConnector::TYPE); - - $connector = $this->connectorsConfigurationRepository->findOneBy($findConnector); - - if ($connector === null) { - $this->logger->error( - 'Connector could not be loaded', - [ - 'source' => MetadataTypes\ConnectorSource::SOURCE_CONNECTOR_FB_MQTT, - 'type' => 'connector', - 'connector' => [ - 'id' => $this->connector->getId()->toString(), - ], - ], - ); - - return; - } - - $version = $this->connectorHelper->getProtocolVersion($connector); + $version = $this->connectorHelper->getProtocolVersion($this->connector); foreach ($this->clientsFactories as $clientFactory) { $rc = new ReflectionClass($clientFactory); @@ -132,7 +108,7 @@ public function execute(): void array_key_exists(Clients\ClientFactory::VERSION_CONSTANT_NAME, $constants) && $version->equalsValue($constants[Clients\ClientFactory::VERSION_CONSTANT_NAME]) ) { - $this->client = $clientFactory->create($connector); + $this->client = $clientFactory->create($this->connector); } } @@ -149,7 +125,7 @@ public function execute(): void $this->client->connect(); - $this->writer = $this->writerFactory->create($connector); + $this->writer = $this->writerFactory->create($this->connector); $this->writer->connect(); $this->consumersTimer = $this->eventLoop->addPeriodicTimer( @@ -173,7 +149,7 @@ public function execute(): void public function discover(): void { - assert($this->connector instanceof Entities\FbMqttConnector); + assert($this->connector->getType() === Entities\FbMqttConnector::TYPE); $this->logger->error( 'Devices discovery is not allowed for FB MQTT connector type', diff --git a/src/Connector/ConnectorFactory.php b/src/Connector/ConnectorFactory.php index 9cc9507..f47ba64 100644 --- a/src/Connector/ConnectorFactory.php +++ b/src/Connector/ConnectorFactory.php @@ -16,8 +16,8 @@ namespace FastyBird\Connector\FbMqtt\Connector; use FastyBird\Connector\FbMqtt\Connector; +use FastyBird\Library\Metadata\Documents as MetadataDocuments; use FastyBird\Module\Devices\Connectors as DevicesConnectors; -use FastyBird\Module\Devices\Entities as DevicesEntities; /** * Connector service executor factory @@ -31,7 +31,7 @@ interface ConnectorFactory extends DevicesConnectors\ConnectorFactory { public function create( - DevicesEntities\Connectors\Connector $connector, + MetadataDocuments\DevicesModule\Connector $connector, ): Connector\Connector; } diff --git a/tests/cases/unit/Connector/ConnectorFactoryTest.php b/tests/cases/unit/Connector/ConnectorFactoryTest.php index 23680cc..cba58c8 100644 --- a/tests/cases/unit/Connector/ConnectorFactoryTest.php +++ b/tests/cases/unit/Connector/ConnectorFactoryTest.php @@ -8,6 +8,7 @@ use FastyBird\Connector\FbMqtt\Exceptions; use FastyBird\Connector\FbMqtt\Tests\Cases\Unit\DbTestCase; use FastyBird\Library\Bootstrap\Exceptions as BootstrapExceptions; +use FastyBird\Library\Metadata\Documents as MetadataDocuments; use FastyBird\Module\Devices\Models as DevicesModels; use Nette; use Ramsey\Uuid; @@ -26,21 +27,23 @@ final class ConnectorFactoryTest extends DbTestCase */ public function testCreateConnector(): void { - $connectorsRepository = $this->getContainer()->getByType( - DevicesModels\Entities\Connectors\ConnectorsRepository::class, + $connectorsConfigurationRepository = $this->getContainer()->getByType( + DevicesModels\Configuration\Connectors\Repository::class, ); $factory = $this->getContainer()->getByType(Connector\ConnectorFactory::class); - $connector = $connectorsRepository->find( + $connector = $connectorsConfigurationRepository->find( Uuid\Uuid::fromString('37b86cdc-376b-4d4c-9683-aa4f41daa13a'), - Entities\FbMqttConnector::class, ); - assert($connector instanceof Entities\FbMqttConnector); + assert($connector instanceof MetadataDocuments\DevicesModule\Connector); - $factory->create($connector); + self::assertSame(Entities\FbMqttConnector::TYPE, $connector->getType()); + self::assertSame('37b86cdc-376b-4d4c-9683-aa4f41daa13a', $connector->getId()->toString()); - $this->expectNotToPerformAssertions(); + $connector = $factory->create($connector); + + self::assertFalse($connector->hasUnfinishedTasks()); } }