Skip to content

Commit

Permalink
Use configuration instead of entity (#236)
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Jan 10, 2024
1 parent 5384676 commit 9549880
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 40 deletions.
38 changes: 7 additions & 31 deletions src/Connector/Connector.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -64,14 +62,13 @@ final class Connector implements DevicesConnectors\Connector
* @param array<Clients\ClientFactory> $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,
)
Expand All @@ -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',
Expand All @@ -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);
Expand All @@ -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);
}
}

Expand All @@ -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(
Expand All @@ -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',
Expand Down
4 changes: 2 additions & 2 deletions src/Connector/ConnectorFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -31,7 +31,7 @@ interface ConnectorFactory extends DevicesConnectors\ConnectorFactory
{

public function create(
DevicesEntities\Connectors\Connector $connector,
MetadataDocuments\DevicesModule\Connector $connector,
): Connector\Connector;

}
17 changes: 10 additions & 7 deletions tests/cases/unit/Connector/ConnectorFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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());
}

}

0 comments on commit 9549880

Please sign in to comment.