Skip to content

Commit

Permalink
Fixing repositories finders
Browse files Browse the repository at this point in the history
  • Loading branch information
akadlec committed Jul 24, 2022
1 parent 908cbfb commit 1eff976
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 22 deletions.
2 changes: 1 addition & 1 deletion src/Commands/ConnectorCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ protected function execute(Input\InputInterface $input, Output\OutputInterface $
MetadataTypes\ConnectionStateType::get(MetadataTypes\ConnectionStateType::STATE_RUNNING)
);
} catch (Throwable $ex) {
throw new Exceptions\TerminateException('Connector can\'t be started');
throw new Exceptions\TerminateException('Connector can\'t be started', $ex->getCode(), $ex);
}

$this->dispatcher?->dispatch(new Events\AfterConnectorStartEvent($connector));
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/ChannelPropertiesRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use FastyBird\Metadata\Types as MetadataTypes;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -97,7 +98,7 @@ public function findByIdentifier(
array_key_exists('channel', $entity)
&& $channel->toString() === $entity['channel']
&& array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/ChannelsRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use FastyBird\Metadata\Exceptions as MetadataExceptions;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -87,7 +88,7 @@ public function findByIdentifier(
array_key_exists('device', $entity)
&& $device->toString() === $entity['device']
&& array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/ConnectorPropertiesRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use FastyBird\Metadata\Types as MetadataTypes;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -97,7 +98,7 @@ public function findByIdentifier(
array_key_exists('connector', $entity)
&& $connector->toString() === $entity['connector']
&& array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/ConnectorsRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use FastyBird\Metadata\Exceptions as MetadataExceptions;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -83,7 +84,7 @@ public function findByIdentifier(string $identifier): ?MetadataEntities\Modules\
foreach ($this->rawData as $id => $entity) {
if (
array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/DeviceAttributesRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use FastyBird\Metadata\Exceptions as MetadataExceptions;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -87,7 +88,7 @@ public function findByIdentifier(
array_key_exists('device', $entity)
&& $device->toString() === $entity['device']
&& array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/DevicePropertiesRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
use FastyBird\Metadata\Types as MetadataTypes;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -97,7 +98,7 @@ public function findByIdentifier(
array_key_exists('device', $entity)
&& $device->toString() === $entity['device']
&& array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
3 changes: 2 additions & 1 deletion src/Models/DataStorage/DevicesRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
use FastyBird\Metadata\Exceptions as MetadataExceptions;
use IteratorAggregate;
use Nette;
use Nette\Utils;
use Ramsey\Uuid;
use RecursiveArrayIterator;

Expand Down Expand Up @@ -87,7 +88,7 @@ public function findByIdentifier(
array_key_exists('connector', $entity)
&& $connector->toString() === $entity['connector']
&& array_key_exists('identifier', $entity)
&& $entity['identifier'] === $identifier
&& Utils\Strings::lower($entity['identifier']) === Utils\Strings::lower($identifier)
) {
return $this->getEntity(Uuid\Uuid::fromString($id), $entity);
}
Expand Down
34 changes: 26 additions & 8 deletions src/Models/States/ConnectorConnectionStateManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use FastyBird\DevicesModule\Entities;
use FastyBird\DevicesModule\Exceptions;
use FastyBird\DevicesModule\Models;
use FastyBird\DevicesModule\Queries;
use FastyBird\Metadata\Entities as MetadataEntities;
use FastyBird\Metadata\Types as MetadataTypes;
use Nette;
Expand All @@ -37,12 +38,15 @@ final class ConnectorConnectionStateManager

use Nette\SmartObject;

/** @var Models\DataStorage\IConnectorPropertiesRepository */
private Models\DataStorage\IConnectorPropertiesRepository $repository;
/** @var Models\Connectors\IConnectorsRepository */
private Models\Connectors\IConnectorsRepository $connectorsRepository;

/** @var Models\Connectors\Properties\IPropertiesManager */
private Models\Connectors\Properties\IPropertiesManager $manager;

/** @var Models\DataStorage\IConnectorPropertiesRepository */
private Models\DataStorage\IConnectorPropertiesRepository $dataStorageRepository;

/** @var Models\States\ConnectorPropertiesRepository */
private Models\States\ConnectorPropertiesRepository $statesRepository;

Expand All @@ -53,20 +57,23 @@ final class ConnectorConnectionStateManager
private Log\LoggerInterface $logger;

/**
* @param Models\Connectors\IConnectorsRepository $connectorsRepository
* @param Models\DataStorage\IConnectorPropertiesRepository $repository
* @param Models\Connectors\Properties\IPropertiesManager $manager
* @param Models\States\ConnectorPropertiesRepository $statesRepository
* @param Models\States\ConnectorPropertiesManager $statesManager
* @param ConnectorPropertiesRepository $statesRepository
* @param ConnectorPropertiesManager $statesManager
* @param Log\LoggerInterface|null $logger
*/
public function __construct(
Models\Connectors\IConnectorsRepository $connectorsRepository,
Models\DataStorage\IConnectorPropertiesRepository $repository,
Models\Connectors\Properties\IPropertiesManager $manager,
Models\States\ConnectorPropertiesRepository $statesRepository,
Models\States\ConnectorPropertiesManager $statesManager,
?Log\LoggerInterface $logger = null
) {
$this->repository = $repository;
$this->connectorsRepository = $connectorsRepository;
$this->dataStorageRepository = $repository;
$this->manager = $manager;
$this->statesRepository = $statesRepository;
$this->statesManager = $statesManager;
Expand All @@ -84,14 +91,25 @@ public function setState(
Entities\Connectors\IConnector|MetadataEntities\Modules\DevicesModule\IConnectorEntity $connector,
MetadataTypes\ConnectionStateType $state
): bool {
$stateProperty = $this->repository->findByIdentifier(
$stateProperty = $this->dataStorageRepository->findByIdentifier(
$connector->getId(),
MetadataTypes\ConnectorPropertyNameType::NAME_STATE
);

if ($stateProperty === null) {
if (!$connector instanceof Entities\Connectors\IConnector) {
$findConnectorQuery = new Queries\FindConnectorsQuery();
$findConnectorQuery->byId($connector->getId());

$connector = $this->connectorsRepository->findOneBy($findConnectorQuery);

if ($connector === null) {
throw new Exceptions\InvalidStateException('Connector could not be loaded');
}
}

$stateProperty = $this->manager->create(Utils\ArrayHash::from([
'connector' => $connector->getId(),
'connector' => $connector,
'entity' => Entities\Connectors\Properties\DynamicProperty::class,
'identifier' => MetadataTypes\ConnectorPropertyNameType::NAME_STATE,
'dataType' => MetadataTypes\DataTypeType::get(MetadataTypes\DataTypeType::DATA_TYPE_ENUM),
Expand Down Expand Up @@ -187,7 +205,7 @@ public function setState(
public function getState(
Entities\Connectors\IConnector|MetadataEntities\Modules\DevicesModule\IConnectorEntity $connector
): MetadataTypes\ConnectionStateType {
$stateProperty = $this->repository->findByIdentifier(
$stateProperty = $this->dataStorageRepository->findByIdentifier(
$connector->getId(),
MetadataTypes\ConnectorPropertyNameType::NAME_STATE
);
Expand Down
30 changes: 24 additions & 6 deletions src/Models/States/DeviceConnectionStateManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use FastyBird\DevicesModule\Entities;
use FastyBird\DevicesModule\Exceptions;
use FastyBird\DevicesModule\Models;
use FastyBird\DevicesModule\Queries;
use FastyBird\Metadata\Entities as MetadataEntities;
use FastyBird\Metadata\Types as MetadataTypes;
use Nette;
Expand All @@ -37,12 +38,15 @@ final class DeviceConnectionStateManager

use Nette\SmartObject;

/** @var Models\DataStorage\IDevicePropertiesRepository */
private Models\DataStorage\IDevicePropertiesRepository $repository;
/** @var Models\Devices\IDevicesRepository */
private Models\Devices\IDevicesRepository $devicesRepository;

/** @var Models\Devices\Properties\IPropertiesManager */
private Models\Devices\Properties\IPropertiesManager $manager;

/** @var Models\DataStorage\IDevicePropertiesRepository */
private Models\DataStorage\IDevicePropertiesRepository $repository;

/** @var Models\States\DevicePropertiesRepository */
private Models\States\DevicePropertiesRepository $statesRepository;

Expand All @@ -53,19 +57,22 @@ final class DeviceConnectionStateManager
private Log\LoggerInterface $logger;

/**
* @param Models\Devices\IDevicesRepository $devicesRepository
* @param Models\DataStorage\IDevicePropertiesRepository $repository
* @param Models\Devices\Properties\IPropertiesManager $manager
* @param Models\States\DevicePropertiesRepository $statesRepository
* @param Models\States\DevicePropertiesManager $statesManager
* @param DevicePropertiesRepository $statesRepository
* @param DevicePropertiesManager $statesManager
* @param Log\LoggerInterface|null $logger
*/
public function __construct(
Models\Devices\IDevicesRepository $devicesRepository,
Models\DataStorage\IDevicePropertiesRepository $repository,
Models\Devices\Properties\IPropertiesManager $manager,
Models\States\DevicePropertiesRepository $statesRepository,
Models\States\DevicePropertiesManager $statesManager,
?Log\LoggerInterface $logger = null
) {
$this->devicesRepository = $devicesRepository;
$this->repository = $repository;
$this->manager = $manager;
$this->statesRepository = $statesRepository;
Expand All @@ -90,9 +97,20 @@ public function setState(
);

if ($stateProperty === null) {
if (!$device instanceof Entities\Devices\IDevice) {
$findDeviceQuery = new Queries\FindDevicesQuery();
$findDeviceQuery->byId($device->getId());

$device = $this->devicesRepository->findOneBy($findDeviceQuery);

if ($device === null) {
throw new Exceptions\InvalidStateException('Connector could not be loaded');
}
}

$stateProperty = $this->manager->create(Utils\ArrayHash::from([
'connector' => $device->getId(),
'entity' => Entities\Connectors\Properties\DynamicProperty::class,
'device' => $device,
'entity' => Entities\Devices\Properties\DynamicProperty::class,
'identifier' => MetadataTypes\ConnectorPropertyNameType::NAME_STATE,
'dataType' => MetadataTypes\DataTypeType::get(MetadataTypes\DataTypeType::DATA_TYPE_ENUM),
'unit' => null,
Expand Down

0 comments on commit 1eff976

Please sign in to comment.