Skip to content

Commit

Permalink
[virtual-connector] Refactoring commands (#217)
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Dec 18, 2023
1 parent 9a69f1f commit a731473
Show file tree
Hide file tree
Showing 12 changed files with 145 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/Entities/Channels/Properties/Property.php
Expand Up @@ -63,7 +63,7 @@ abstract class Property extends Entities\Property

/**
* @IPubDoctrine\Crud(is="writable")
* @ORM\ManyToOne(targetEntity="FastyBird\Module\Devices\Entities\Channels\Properties\Property", inversedBy="children", cascade={"persist"})
* @ORM\ManyToOne(targetEntity="FastyBird\Module\Devices\Entities\Channels\Properties\Property", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="property_id", nullable=true, onDelete="CASCADE")
*/
protected self|null $parent = null;
Expand Down
2 changes: 1 addition & 1 deletion src/Entities/Devices/Device.php
Expand Up @@ -94,7 +94,7 @@ abstract class Device implements Entities\Entity,
* @var Common\Collections\Collection<int, Device>
*
* @IPubDoctrine\Crud(is="writable")
* @ORM\ManyToMany(targetEntity="FastyBird\Module\Devices\Entities\Devices\Device", inversedBy="children", cascade={"persist"})
* @ORM\ManyToMany(targetEntity="FastyBird\Module\Devices\Entities\Devices\Device", inversedBy="children")
* @ORM\JoinTable(
* name="fb_devices_module_devices_children",
* joinColumns={@ORM\JoinColumn(name="child_device", referencedColumnName="device_id", onDelete="CASCADE")},
Expand Down
2 changes: 1 addition & 1 deletion src/Entities/Devices/Properties/Property.php
Expand Up @@ -63,7 +63,7 @@ abstract class Property extends Entities\Property

/**
* @IPubDoctrine\Crud(is="writable")
* @ORM\ManyToOne(targetEntity="FastyBird\Module\Devices\Entities\Devices\Properties\Property", inversedBy="children", cascade={"persist"})
* @ORM\ManyToOne(targetEntity="FastyBird\Module\Devices\Entities\Devices\Properties\Property", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="property_id", nullable=true, onDelete="CASCADE")
*/
protected self|null $parent = null;
Expand Down
10 changes: 10 additions & 0 deletions src/Queries/Configuration/FindChannelProperties.php
Expand Up @@ -85,6 +85,16 @@ public function byParentId(Uuid\UuidInterface $parentId): void
$this->filter[] = '.[?(@.parent =~ /(?i).*^' . $parentId->toString() . '*$/)]';
}

public function settable(bool $state): void
{
$this->filter[] = '.[?(@.settable == "' . ($state ? 'true' : 'false') . '")]';
}

public function queryable(bool $state): void
{
$this->filter[] = '.[?(@.queryable == "' . ($state ? 'true' : 'false') . '")]';
}

/**
* @throws JSONPath\JSONPathException
*/
Expand Down
10 changes: 10 additions & 0 deletions src/Queries/Configuration/FindConnectorProperties.php
Expand Up @@ -73,6 +73,16 @@ public function byConnectorId(Uuid\UuidInterface $connectorId): void
$this->filter[] = '.[?(@.connector =~ /(?i).*^' . $connectorId->toString() . '*$/)]';
}

public function settable(bool $state): void
{
$this->filter[] = '.[?(@.settable == "' . ($state ? 'true' : 'false') . '")]';
}

public function queryable(bool $state): void
{
$this->filter[] = '.[?(@.queryable == "' . ($state ? 'true' : 'false') . '")]';
}

/**
* @throws JSONPath\JSONPathException
*/
Expand Down
10 changes: 10 additions & 0 deletions src/Queries/Configuration/FindDeviceProperties.php
Expand Up @@ -85,6 +85,16 @@ public function byParentId(Uuid\UuidInterface $parentId): void
$this->filter[] = '.[?(@.parent =~ /(?i).*^' . $parentId->toString() . '*$/)]';
}

public function settable(bool $state): void
{
$this->filter[] = '.[?(@.settable == "' . ($state ? 'true' : 'false') . '")]';
}

public function queryable(bool $state): void
{
$this->filter[] = '.[?(@.queryable == "' . ($state ? 'true' : 'false') . '")]';
}

/**
* @throws JSONPath\JSONPathException
*/
Expand Down
14 changes: 14 additions & 0 deletions src/Queries/Entities/FindChannelProperties.php
Expand Up @@ -102,6 +102,20 @@ public function byParentId(Uuid\UuidInterface $parentId): void
};
}

public function settable(bool $state): void
{
$this->filter[] = static function (ORM\QueryBuilder $qb) use ($state): void {
$qb->andWhere('p.settable = :settable')->setParameter('settable', $state);
};
}

public function queryable(bool $state): void
{
$this->filter[] = static function (ORM\QueryBuilder $qb) use ($state): void {
$qb->andWhere('p.queryable = :queryable')->setParameter('queryable', $state);
};
}

/**
* @throws Exceptions\InvalidArgument
*/
Expand Down
14 changes: 14 additions & 0 deletions src/Queries/Entities/FindConnectorProperties.php
Expand Up @@ -87,6 +87,20 @@ public function byConnectorId(Uuid\UuidInterface $connectorId): void
};
}

public function settable(bool $state): void
{
$this->filter[] = static function (ORM\QueryBuilder $qb) use ($state): void {
$qb->andWhere('p.settable = :settable')->setParameter('settable', $state);
};
}

public function queryable(bool $state): void
{
$this->filter[] = static function (ORM\QueryBuilder $qb) use ($state): void {
$qb->andWhere('p.queryable = :queryable')->setParameter('queryable', $state);
};
}

/**
* @throws Exceptions\InvalidArgument
*/
Expand Down
14 changes: 14 additions & 0 deletions src/Queries/Entities/FindDeviceProperties.php
Expand Up @@ -102,6 +102,20 @@ public function byParentId(Uuid\UuidInterface $parentId): void
};
}

public function settable(bool $state): void
{
$this->filter[] = static function (ORM\QueryBuilder $qb) use ($state): void {
$qb->andWhere('p.settable = :settable')->setParameter('settable', $state);
};
}

public function queryable(bool $state): void
{
$this->filter[] = static function (ORM\QueryBuilder $qb) use ($state): void {
$qb->andWhere('p.queryable = :queryable')->setParameter('queryable', $state);
};
}

/**
* @throws Exceptions\InvalidArgument
*/
Expand Down
Expand Up @@ -136,6 +136,34 @@ public function testReadAll(): void
$entities = $repository->findAllBy($findQuery, MetadataDocuments\DevicesModule\ChannelMappedProperty::class);

self::assertCount(0, $entities);

$findQuery = new Queries\Configuration\FindChannelProperties();
$findQuery->settable(true);

$entities = $repository->findAllBy($findQuery);

self::assertCount(1, $entities);

$findQuery = new Queries\Configuration\FindChannelProperties();
$findQuery->settable(false);

$entities = $repository->findAllBy($findQuery);

self::assertCount(2, $entities);

$findQuery = new Queries\Configuration\FindChannelProperties();
$findQuery->queryable(true);

$entities = $repository->findAllBy($findQuery);

self::assertCount(3, $entities);

$findQuery = new Queries\Configuration\FindChannelProperties();
$findQuery->queryable(false);

$entities = $repository->findAllBy($findQuery);

self::assertCount(0, $entities);
}

/**
Expand Down
Expand Up @@ -131,6 +131,20 @@ public function testReadAll(): void
);

self::assertCount(2, $entities);

$findQuery = new Queries\Configuration\FindConnectorProperties();
$findQuery->settable(true);

$entities = $repository->findAllBy($findQuery);

self::assertCount(0, $entities);

$findQuery = new Queries\Configuration\FindConnectorProperties();
$findQuery->queryable(true);

$entities = $repository->findAllBy($findQuery);

self::assertCount(0, $entities);
}

/**
Expand Down
Expand Up @@ -137,6 +137,34 @@ public function testReadAll(): void
$entities = $repository->findAllBy($findQuery, MetadataDocuments\DevicesModule\DeviceMappedProperty::class);

self::assertCount(0, $entities);

$findQuery = new Queries\Configuration\FindDeviceProperties();
$findQuery->settable(true);

$entities = $repository->findAllBy($findQuery);

self::assertCount(0, $entities);

$findQuery = new Queries\Configuration\FindDeviceProperties();
$findQuery->settable(false);

$entities = $repository->findAllBy($findQuery);

self::assertCount(2, $entities);

$findQuery = new Queries\Configuration\FindDeviceProperties();
$findQuery->queryable(true);

$entities = $repository->findAllBy($findQuery);

self::assertCount(2, $entities);

$findQuery = new Queries\Configuration\FindDeviceProperties();
$findQuery->queryable(false);

$entities = $repository->findAllBy($findQuery);

self::assertCount(0, $entities);
}

/**
Expand Down

0 comments on commit a731473

Please sign in to comment.