Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

strategy:
matrix:
php-version: [ '8.0', '8.1 ']
php-version: [ '8.1' ]

steps:
- name: Checkout source code
Expand Down
9 changes: 6 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
],
"minimum-stability": "stable",
"require": {
"php": "^8.0.2",
"php": "^8.1.0",
"complex-heart/domain-model": "^2.0.0",
"ext-json": "*"
},
"require-dev": {
"phpstan/phpstan": "^1.9.0",
"pestphp/pest": "^1.4"
"pestphp/pest": "^1.22.3",
"pestphp/pest-plugin-mock": "^1.0.0",
"pestphp/pest-plugin-faker": "^1.0.0",
"phpstan/phpstan": "^1.9.0"
},
"autoload": {
"psr-4": {
Expand All @@ -31,6 +33,7 @@
},
"scripts": {
"test": "vendor/bin/pest --configuration=phpunit.xml --coverage-clover=coverage.xml --log-junit=test.xml",
"test-cov": "vendor/bin/pest --configuration=phpunit.xml --coverage-html=coverage",
"analyse": "vendor/bin/phpstan analyse src --no-progress --level=5"
},
"config": {
Expand Down
14 changes: 7 additions & 7 deletions src/Domain/Filter.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ final class Filter implements ValueObject
*
* @var mixed
*/
private $value; // @phpstan-ignore-line
private mixed $value; // @phpstan-ignore-line

/**
* Filter constructor.
Expand All @@ -45,7 +45,7 @@ final class Filter implements ValueObject
* @param Operator $operator
* @param mixed $value
*/
public function __construct(string $field, Operator $operator, $value)
public function __construct(string $field, Operator $operator, mixed $value)
{
$this->initialize(compact('field', 'operator', 'value'));
}
Expand All @@ -59,7 +59,7 @@ public function __construct(string $field, Operator $operator, $value)
*
* @return Filter
*/
public static function create(string $field, Operator $operator, $value): self
public static function create(string $field, Operator $operator, mixed $value): self
{
return new self($field, $operator, $value);
}
Expand All @@ -70,8 +70,8 @@ public static function createFromArray(array $filter): self
$isIndexed = fn($source): bool => ([] !== $source) && array_keys($source) === range(0, count($source) - 1);

return ($isIndexed($filter))
? self::create($filter[0], new Operator($filter[1]), $filter[2])
: self::create($filter['field'], new Operator($filter['operator']), $filter['value']);
? self::create($filter[0], Operator::make($filter[1]), $filter[2])
: self::create($filter['field'], Operator::make($filter['operator']), $filter['value']);
}

public static function createEqual(string $field, $value): self
Expand Down Expand Up @@ -144,7 +144,7 @@ public function operator(): Operator
*
* @return mixed
*/
public function value()
public function value(): mixed
{
return $this->value;
}
Expand All @@ -154,7 +154,7 @@ public function __toString(): string
return sprintf(
'%s.%s.%s',
$this->field(),
$this->operator(),
$this->operator()->value,
is_array($this->value())
? implode('|', $this->value())
: $this->value()
Expand Down
46 changes: 25 additions & 21 deletions src/Domain/Operator.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,68 +4,72 @@

namespace ComplexHeart\Domain\Criteria;

use ComplexHeart\Domain\Model\ValueObjects\EnumValue;

/**
* Class Operator
*
* @author Unay Santisteban <usantisteban@othercode.es>
* @package ComplexHeart\Domain\Criteria
*/
final class Operator extends EnumValue
enum Operator: string
{
public const EQUAL = '=';
public const NOT_EQUAL = '!=';
public const GT = '>';
public const GTE = '>=';
public const LT = '<';
public const LTE = '<=';
public const IN = 'in';
public const NOT_IN = 'notIn';
public const LIKE = 'like';
case EQUAL = '=';
case NOT_EQUAL = '!=';
case GT = '>';
case GTE = '>=';
case LT = '<';
case LTE = '<=';
case IN = 'in';
case NOT_IN = 'notIn';
case LIKE = 'like';

public static function make(string $value): self
{
return self::from($value);
}

public static function equal(): self
{
return new self(self::EQUAL);
return self::EQUAL;
}

public static function notEqual(): self
{
return new self(self::NOT_EQUAL);
return self::NOT_EQUAL;
}

public static function gt(): self
{
return new self(self::GT);
return self::GT;
}

public static function gte(): self
{
return new self(self::GTE);
return self::GTE;
}

public static function lt(): self
{
return new self(self::LT);
return self::LT;
}

public static function lte(): self
{
return new self(self::LTE);
return self::LTE;
}

public static function in(): self
{
return new self(self::IN);
return self::IN;
}

public static function notIn(): self
{
return new self(self::NOT_IN);
return self::NOT_IN;
}

public static function like(): self
{
return new self(self::LIKE);
return self::LIKE;
}
}
}