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 88f891f commit dd1dd26
Show file tree
Hide file tree
Showing 12 changed files with 85 additions and 69 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ npm install @fastybird/devices-module

## Documentation

Learn how to configure and use devices module and manage your connectors & devices
:book: Learn how to configure and use devices module and manage your connectors & devices
in [documentation](https://github.com/FastyBird/devices-module/wiki).

# FastyBird
Expand All @@ -84,17 +84,17 @@ FastyBird is an Open Source IOT solution built from decoupled components with po

## Documentation

Documentation is available on [docs.fastybird.com](https://docs.fastybird.com).
:book: Documentation is available on [docs.fastybird.com](https://docs.fastybird.com).

## Contributing

The sources of this package are contained in the [FastyBird monorepo](https://github.com/FastyBird/fastybird). We welcome contributions for this package on [FastyBird/fastybird](https://github.com/FastyBird/).
The sources of this package are contained in the [FastyBird monorepo](https://github.com/FastyBird/fastybird). We welcome
contributions for this package on [FastyBird/fastybird](https://github.com/FastyBird/).

## Feedback

Use the [issue tracker](https://github.com/FastyBird/fastybird/issues) for bugs
or [mail](mailto:code@fastybird.com) or [Tweet](https://twitter.com/fastybird) us for any idea that can improve the
project.
Use the [issue tracker](https://github.com/FastyBird/fastybird/issues) for bugs reporting or send an [mail](mailto:code@fastybird.com)
to us or you could reach us on [X newtwork](https://x.com/fastybird) for any idea that can improve the project.

Thank you for testing, reporting and contributing.

Expand Down
1 change: 0 additions & 1 deletion config/example.neon
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ contributteTranslation:
fallback: [en_US, en]
localeResolvers: []
dirs:
- %appDir%/../src/Translations
- %vendorDir%/fastybird/json-api/src/Translations

nettrineDbal:
Expand Down
8 changes: 8 additions & 0 deletions docs/_Footer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
> [!TIP]
If you find incorrect or missing information, feel free to notify us. You could use the [issue tracker](https://github.com/FastyBird/fastybird/issues)
or [mail](mailto:code@fastybird.com) or [X network](https://x.com/fastybird) for any idea that can improve the project.
Thank you for testing, reporting and contributing.

***
Homepage [https://www.fastybird.com](https://www.fastybird.com) and
repository [https://github.com/fastybird/devices-module](https://github.com/fastybird/devices-module).
3 changes: 2 additions & 1 deletion reference/Devices-module-api.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"title" : "Devices module API",
"version" : "1.0",
"license" : {
"name" : "Apache 2.0"
"name" : "Apache 2.0",
"identifier": ""
},
"contact" : {
"url" : "https://fastybird.com",
Expand Down
92 changes: 50 additions & 42 deletions src/Commands/Connector.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
use FastyBird\Library\Exchange\Consumers as ExchangeConsumers;
use FastyBird\Library\Exchange\Exceptions as ExchangeExceptions;
use FastyBird\Library\Exchange\Exchange as ExchangeExchange;
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;
use FastyBird\Module\Devices\Connectors;
use FastyBird\Module\Devices\Consumers;
use FastyBird\Module\Devices\Entities;
use FastyBird\Module\Devices\Events;
use FastyBird\Module\Devices\Exceptions;
use FastyBird\Module\Devices\Models;
Expand Down Expand Up @@ -81,7 +81,7 @@ class Connector extends Console\Command\Command implements EventDispatcher\Event

private bool $isTerminating = false;

private Entities\Connectors\Connector|null $connector = null;
private MetadataDocuments\DevicesModule\Connector|null $connector = null;

private Connectors\Connector|null $service = null;

Expand All @@ -104,13 +104,13 @@ class Connector extends Console\Command\Command implements EventDispatcher\Event
* @param array<ExchangeExchange\Factory> $exchangeFactories
*/
public function __construct(
private readonly Models\Entities\Connectors\ConnectorsRepository $connectorsRepository,
private readonly Models\Entities\Connectors\Properties\PropertiesRepository $connectorsPropertiesRepository,
private readonly Models\Entities\Connectors\Controls\ControlsRepository $connectorsControlsRepository,
private readonly Models\Entities\Devices\DevicesRepository $devicesRepository,
private readonly Models\Entities\Devices\Properties\PropertiesRepository $devicesPropertiesRepository,
private readonly Models\Entities\Channels\ChannelsRepository $channelsRepository,
private readonly Models\Entities\Channels\Properties\PropertiesRepository $channelsPropertiesRepository,
private readonly Models\Configuration\Connectors\Repository $connectorsConfigurationRepository,
private readonly Models\Configuration\Connectors\Properties\Repository $connectorsPropertiesConfigurationRepository,
private readonly Models\Configuration\Connectors\Controls\Repository $connectorsControlsConfigurationRepository,
private readonly Models\Configuration\Devices\Repository $devicesConfigurationRepository,
private readonly Models\Configuration\Devices\Properties\Repository $devicesPropertiesConfigurationRepository,
private readonly Models\Configuration\Channels\Repository $channelsConfigurationRepository,
private readonly Models\Configuration\Channels\Properties\Repository $channelsPropertiesConfigurationRepository,
private readonly Utilities\ConnectorConnection $connectorConnectionManager,
private readonly Utilities\DeviceConnection $deviceConnectionManager,
private readonly Utilities\ConnectorPropertiesStates $connectorPropertiesStateManager,
Expand Down Expand Up @@ -323,15 +323,15 @@ private function executeConnector(
) {
$connectorId = $input->getOption('connector');

$findConnectorQuery = new Queries\Entities\FindConnectors();
$findConnectorQuery = new Queries\Configuration\FindConnectors();

if (Uuid\Uuid::isValid($connectorId)) {
$findConnectorQuery->byId(Uuid\Uuid::fromString($connectorId));
} else {
$findConnectorQuery->byIdentifier($connectorId);
}

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

if ($this->connector === null) {
if ($input->getOption('quiet') === false) {
Expand All @@ -345,15 +345,15 @@ private function executeConnector(
} else {
$connectors = [];

$findConnectorsQuery = new Queries\Entities\FindConnectors();
$findConnectorsQuery = new Queries\Configuration\FindConnectors();

foreach ($this->connectorsRepository->findAllBy($findConnectorsQuery) as $connector) {
foreach ($this->connectorsConfigurationRepository->findAllBy($findConnectorsQuery) as $connector) {
if ($this->mode === self::MODE_DISCOVER) {
$findConnectorControlQuery = new Queries\Entities\FindConnectorControls();
$findConnectorControlQuery = new Queries\Configuration\FindConnectorControls();
$findConnectorControlQuery->forConnector($connector);
$findConnectorControlQuery->byName(MetadataTypes\ControlName::NAME_DISCOVER);

$control = $this->connectorsControlsRepository->findOneBy($findConnectorControlQuery);
$control = $this->connectorsControlsConfigurationRepository->findOneBy($findConnectorControlQuery);

if ($control === null) {
continue;
Expand Down Expand Up @@ -408,10 +408,10 @@ private function executeConnector(
return;
}

$findConnectorQuery = new Queries\Entities\FindConnectors();
$findConnectorQuery = new Queries\Configuration\FindConnectors();
$findConnectorQuery->byIdentifier($connectorIdentifierKey);

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

if ($this->connector === null) {
if ($input->getOption('quiet') === false) {
Expand All @@ -438,11 +438,11 @@ private function executeConnector(
}

if ($this->mode === self::MODE_DISCOVER) {
$findConnectorControlQuery = new Queries\Entities\FindConnectorControls();
$findConnectorControlQuery = new Queries\Configuration\FindConnectorControls();
$findConnectorControlQuery->forConnector($this->connector);
$findConnectorControlQuery->byName(MetadataTypes\ControlName::NAME_DISCOVER);

$control = $this->connectorsControlsRepository->findOneBy($findConnectorControlQuery);
$control = $this->connectorsControlsConfigurationRepository->findOneBy($findConnectorControlQuery);

if ($control === null) {
if ($input->getOption('quiet') === false) {
Expand Down Expand Up @@ -489,7 +489,7 @@ private function executeConnector(
}

$this->eventLoop->futureTick(function (): void {
assert($this->connector instanceof Entities\Connectors\Connector);
assert($this->connector instanceof MetadataDocuments\DevicesModule\Connector);

if ($this->mode === self::MODE_DISCOVER) {
$this->dispatcher?->dispatch(new Events\BeforeConnectorDiscoveryStart($this->connector));
Expand Down Expand Up @@ -539,7 +539,7 @@ function (): void {
// Start connector service
$this->service->execute();

assert($this->connector instanceof Entities\Connectors\Connector);
assert($this->connector instanceof MetadataDocuments\DevicesModule\Connector);

$this->connectorConnectionManager->setState(
$this->connector,
Expand Down Expand Up @@ -679,24 +679,26 @@ function () use ($connector, $service): void {
* @throws MetadataExceptions\MalformedInput
*/
private function resetConnector(
Entities\Connectors\Connector $connector,
MetadataDocuments\DevicesModule\Connector $connector,
MetadataTypes\ConnectionState $state,
): void
{
$findConnectorPropertiesQuery = new Queries\Entities\FindConnectorDynamicProperties();
$findConnectorPropertiesQuery = new Queries\Configuration\FindConnectorDynamicProperties();
$findConnectorPropertiesQuery->forConnector($connector);

foreach ($this->connectorsPropertiesRepository->findAllBy(
$properties = $this->connectorsPropertiesConfigurationRepository->findAllBy(
$findConnectorPropertiesQuery,
Entities\Connectors\Properties\Dynamic::class,
) as $property) {
MetadataDocuments\DevicesModule\ConnectorDynamicProperty::class,
);

foreach ($properties as $property) {
$this->connectorPropertiesStateManager->setValidState($property, false);
}

$findDevicesQuery = new Queries\Entities\FindDevices();
$findDevicesQuery->byConnectorId($connector->getId());
$findDevicesQuery = new Queries\Configuration\FindDevices();
$findDevicesQuery->forConnector($connector);

foreach ($this->devicesRepository->findAllBy($findDevicesQuery) as $device) {
foreach ($this->devicesConfigurationRepository->findAllBy($findDevicesQuery) as $device) {
$this->resetDevice($device, $state);
}
}
Expand All @@ -711,41 +713,47 @@ private function resetConnector(
* @throws MetadataExceptions\MalformedInput
*/
private function resetDevice(
Entities\Devices\Device $device,
MetadataDocuments\DevicesModule\Device $device,
MetadataTypes\ConnectionState $state,
): void
{
$this->deviceConnectionManager->setState($device, $state);

$findDevicePropertiesQuery = new Queries\Entities\FindDeviceDynamicProperties();
$findDevicePropertiesQuery = new Queries\Configuration\FindDeviceDynamicProperties();
$findDevicePropertiesQuery->forDevice($device);

foreach ($this->devicesPropertiesRepository->findAllBy(
$properties = $this->devicesPropertiesConfigurationRepository->findAllBy(
$findDevicePropertiesQuery,
Entities\Devices\Properties\Dynamic::class,
) as $property) {
MetadataDocuments\DevicesModule\DeviceDynamicProperty::class,
);

foreach ($properties as $property) {
$this->devicePropertiesStateManager->setValidState($property, false);
}

$findChannelsQuery = new Queries\Entities\FindChannels();
$findChannelsQuery = new Queries\Configuration\FindChannels();
$findChannelsQuery->forDevice($device);

foreach ($this->channelsRepository->findAllBy($findChannelsQuery) as $channel) {
$findChannelPropertiesQuery = new Queries\Entities\FindChannelDynamicProperties();
$channels = $this->channelsConfigurationRepository->findAllBy($findChannelsQuery);

foreach ($channels as $channel) {
$findChannelPropertiesQuery = new Queries\Configuration\FindChannelDynamicProperties();
$findChannelPropertiesQuery->forChannel($channel);

foreach ($this->channelsPropertiesRepository->findAllBy(
$properties = $this->channelsPropertiesConfigurationRepository->findAllBy(
$findChannelPropertiesQuery,
Entities\Channels\Properties\Dynamic::class,
) as $property) {
MetadataDocuments\DevicesModule\ChannelDynamicProperty::class,
);

foreach ($properties as $property) {
$this->channelPropertiesStateManager->setValidState($property, false);
}
}

$findChildrenQuery = new Queries\Entities\FindDevices();
$findChildrenQuery = new Queries\Configuration\FindDevices();
$findChildrenQuery->forParent($device);

foreach ($this->devicesRepository->findAllBy($findChildrenQuery) as $child) {
foreach ($this->devicesConfigurationRepository->findAllBy($findChildrenQuery) as $child) {
$this->resetDevice($child, $state);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/Connectors/ConnectorFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace FastyBird\Module\Devices\Connectors;

use FastyBird\Module\Devices\Entities;
use FastyBird\Library\Metadata\Documents as MetadataDocuments;

/**
* Connector factory interface
Expand All @@ -28,6 +28,6 @@
interface ConnectorFactory
{

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

}
6 changes: 3 additions & 3 deletions src/Events/AfterConnectorDiscoveryStart.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace FastyBird\Module\Devices\Events;

use FastyBird\Module\Devices\Entities;
use FastyBird\Library\Metadata\Documents as MetadataDocuments;
use Symfony\Contracts\EventDispatcher;

/**
Expand All @@ -29,11 +29,11 @@
class AfterConnectorDiscoveryStart extends EventDispatcher\Event
{

public function __construct(private readonly Entities\Connectors\Connector $connector)
public function __construct(private readonly MetadataDocuments\DevicesModule\Connector $connector)
{
}

public function getConnector(): Entities\Connectors\Connector
public function getConnector(): MetadataDocuments\DevicesModule\Connector
{
return $this->connector;
}
Expand Down
6 changes: 3 additions & 3 deletions src/Events/AfterConnectorExecutionStart.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace FastyBird\Module\Devices\Events;

use FastyBird\Module\Devices\Entities;
use FastyBird\Library\Metadata\Documents as MetadataDocuments;
use Symfony\Contracts\EventDispatcher;

/**
Expand All @@ -29,11 +29,11 @@
class AfterConnectorExecutionStart extends EventDispatcher\Event
{

public function __construct(private readonly Entities\Connectors\Connector $connector)
public function __construct(private readonly MetadataDocuments\DevicesModule\Connector $connector)
{
}

public function getConnector(): Entities\Connectors\Connector
public function getConnector(): MetadataDocuments\DevicesModule\Connector
{
return $this->connector;
}
Expand Down
6 changes: 3 additions & 3 deletions src/Events/BeforeConnectorDiscoveryStart.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace FastyBird\Module\Devices\Events;

use FastyBird\Module\Devices\Entities;
use FastyBird\Library\Metadata\Documents as MetadataDocuments;
use Symfony\Contracts\EventDispatcher;

/**
Expand All @@ -29,11 +29,11 @@
class BeforeConnectorDiscoveryStart extends EventDispatcher\Event
{

public function __construct(private readonly Entities\Connectors\Connector $connector)
public function __construct(private readonly MetadataDocuments\DevicesModule\Connector $connector)
{
}

public function getConnector(): Entities\Connectors\Connector
public function getConnector(): MetadataDocuments\DevicesModule\Connector
{
return $this->connector;
}
Expand Down
6 changes: 3 additions & 3 deletions src/Events/BeforeConnectorExecutionStart.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace FastyBird\Module\Devices\Events;

use FastyBird\Module\Devices\Entities;
use FastyBird\Library\Metadata\Documents as MetadataDocuments;
use Symfony\Contracts\EventDispatcher;

/**
Expand All @@ -29,11 +29,11 @@
class BeforeConnectorExecutionStart extends EventDispatcher\Event
{

public function __construct(private readonly Entities\Connectors\Connector $connector)
public function __construct(private readonly MetadataDocuments\DevicesModule\Connector $connector)
{
}

public function getConnector(): Entities\Connectors\Connector
public function getConnector(): MetadataDocuments\DevicesModule\Connector
{
return $this->connector;
}
Expand Down
Loading

0 comments on commit dd1dd26

Please sign in to comment.