diff --git a/generator/config/expression/case.yaml b/generator/config/expression/case.yaml index b86aef878..ccf463c90 100644 --- a/generator/config/expression/case.yaml +++ b/generator/config/expression/case.yaml @@ -3,7 +3,8 @@ name: $case link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/' type: - switchBranch -encode: flat_object +encode: object +wrapObject: false description: | Represents a single case in a $switch expression arguments: diff --git a/generator/config/schema.json b/generator/config/schema.json index 61846e3e7..8e2f5f320 100644 --- a/generator/config/schema.json +++ b/generator/config/schema.json @@ -60,7 +60,6 @@ "enum": [ "array", "object", - "flat_object", "single" ] }, @@ -68,6 +67,11 @@ "$comment": "The description of the argument from MongoDB's documentation.", "type": "string" }, + "wrapObject": { + "$comment": "Wrap the properties in an object with the operator name", + "type": "boolean", + "default": true + }, "arguments": { "$comment": "An optional list of arguments for the operator.", "type": "array", diff --git a/generator/src/Definition/OperatorDefinition.php b/generator/src/Definition/OperatorDefinition.php index eb9876239..5468b7917 100644 --- a/generator/src/Definition/OperatorDefinition.php +++ b/generator/src/Definition/OperatorDefinition.php @@ -32,6 +32,7 @@ public function __construct( /** @var list */ public array $type, public string|null $description = null, + public bool $wrapObject = true, array $arguments = [], array $tests = [], ) { @@ -39,10 +40,13 @@ public function __construct( 'single' => Encode::Single, 'array' => Encode::Array, 'object' => Encode::Object, - 'flat_object' => Encode::FlatObject, default => throw new UnexpectedValueException(sprintf('Unexpected "encode" value for operator "%s". Got "%s"', $name, $encode)), }; + if (! $wrapObject && $this->encode !== Encode::Object) { + throw new UnexpectedValueException(sprintf('Operator "%s" cannot have wrapObject set to false when encode is not "object"', $name)); + } + // Convert arguments to ArgumentDefinition objects // Optional arguments must be after required arguments $requiredArgs = $optionalArgs = []; diff --git a/generator/src/OperatorClassGenerator.php b/generator/src/OperatorClassGenerator.php index e51a1979d..7f8667751 100644 --- a/generator/src/OperatorClassGenerator.php +++ b/generator/src/OperatorClassGenerator.php @@ -22,7 +22,6 @@ use function interface_exists; use function rtrim; use function sprintf; -use function var_export; /** * Generates a value object class for stages and operators. @@ -62,6 +61,7 @@ public function createClass(GeneratorDefinition $definition, OperatorDefinition $class->addComment('@internal'); $namespace->addUse(Encode::class); $class->addConstant('ENCODE', new Literal('Encode::' . $operator->encode->name)); + $class->addConstant('NAME', $operator->wrapObject ? $operator->name : null); $encodeNames = []; $constructor = $class->addMethod('__construct'); @@ -179,10 +179,6 @@ public function createClass(GeneratorDefinition $definition, OperatorDefinition $class->addConstant('PROPERTIES', $encodeNames); } - $class->addMethod('getOperator') - ->setReturnType('string') - ->setBody('return ' . var_export($operator->name, true) . ';'); - return $namespace; } diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 4d703d593..301c049ac 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -172,7 +172,26 @@ + + + + + + + + + + + + + + + + + + + @@ -183,6 +202,11 @@ is_array($queriesOrArrayOfQueries[0]) && count($queriesOrArrayOfQueries[0]) > 0]]> + + + + + diff --git a/src/Builder/Accumulator/AccumulatorAccumulator.php b/src/Builder/Accumulator/AccumulatorAccumulator.php index 6a5cdd06b..a49390fd6 100644 --- a/src/Builder/Accumulator/AccumulatorAccumulator.php +++ b/src/Builder/Accumulator/AccumulatorAccumulator.php @@ -32,6 +32,7 @@ final class AccumulatorAccumulator implements AccumulatorInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$accumulator'; public const PROPERTIES = [ 'init' => 'init', @@ -114,9 +115,4 @@ public function __construct( $this->finalize = $finalize; } - - public function getOperator(): string - { - return '$accumulator'; - } } diff --git a/src/Builder/Accumulator/AddToSetAccumulator.php b/src/Builder/Accumulator/AddToSetAccumulator.php index 70be4bdbe..2c77a7458 100644 --- a/src/Builder/Accumulator/AddToSetAccumulator.php +++ b/src/Builder/Accumulator/AddToSetAccumulator.php @@ -26,6 +26,7 @@ final class AddToSetAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$addToSet'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$addToSet'; - } } diff --git a/src/Builder/Accumulator/AvgAccumulator.php b/src/Builder/Accumulator/AvgAccumulator.php index 034fa776b..4b9050117 100644 --- a/src/Builder/Accumulator/AvgAccumulator.php +++ b/src/Builder/Accumulator/AvgAccumulator.php @@ -26,6 +26,7 @@ final class AvgAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$avg'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$avg'; - } } diff --git a/src/Builder/Accumulator/BottomAccumulator.php b/src/Builder/Accumulator/BottomAccumulator.php index f001d6e04..eecf0a013 100644 --- a/src/Builder/Accumulator/BottomAccumulator.php +++ b/src/Builder/Accumulator/BottomAccumulator.php @@ -28,6 +28,7 @@ final class BottomAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$bottom'; public const PROPERTIES = ['sortBy' => 'sortBy', 'output' => 'output']; /** @var Document|Serializable|array|stdClass $sortBy Specifies the order of results, with syntax similar to $sort. */ @@ -47,9 +48,4 @@ public function __construct( $this->sortBy = $sortBy; $this->output = $output; } - - public function getOperator(): string - { - return '$bottom'; - } } diff --git a/src/Builder/Accumulator/BottomNAccumulator.php b/src/Builder/Accumulator/BottomNAccumulator.php index 4e2f5705c..94911d25e 100644 --- a/src/Builder/Accumulator/BottomNAccumulator.php +++ b/src/Builder/Accumulator/BottomNAccumulator.php @@ -30,6 +30,7 @@ final class BottomNAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$bottomN'; public const PROPERTIES = ['n' => 'n', 'sortBy' => 'sortBy', 'output' => 'output']; /** @var ResolvesToInt|int $n Limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group. */ @@ -55,9 +56,4 @@ public function __construct( $this->sortBy = $sortBy; $this->output = $output; } - - public function getOperator(): string - { - return '$bottomN'; - } } diff --git a/src/Builder/Accumulator/CountAccumulator.php b/src/Builder/Accumulator/CountAccumulator.php index 699eedc16..933d86c6d 100644 --- a/src/Builder/Accumulator/CountAccumulator.php +++ b/src/Builder/Accumulator/CountAccumulator.php @@ -24,13 +24,9 @@ final class CountAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$count'; public function __construct() { } - - public function getOperator(): string - { - return '$count'; - } } diff --git a/src/Builder/Accumulator/CovariancePopAccumulator.php b/src/Builder/Accumulator/CovariancePopAccumulator.php index f23170329..d9bd9173e 100644 --- a/src/Builder/Accumulator/CovariancePopAccumulator.php +++ b/src/Builder/Accumulator/CovariancePopAccumulator.php @@ -25,6 +25,7 @@ final class CovariancePopAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$covariancePop'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression1 */ @@ -44,9 +45,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$covariancePop'; - } } diff --git a/src/Builder/Accumulator/CovarianceSampAccumulator.php b/src/Builder/Accumulator/CovarianceSampAccumulator.php index b99d1cdda..85ba2cf28 100644 --- a/src/Builder/Accumulator/CovarianceSampAccumulator.php +++ b/src/Builder/Accumulator/CovarianceSampAccumulator.php @@ -25,6 +25,7 @@ final class CovarianceSampAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$covarianceSamp'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression1 */ @@ -44,9 +45,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$covarianceSamp'; - } } diff --git a/src/Builder/Accumulator/DenseRankAccumulator.php b/src/Builder/Accumulator/DenseRankAccumulator.php index 820a9fe36..c5bc4bee9 100644 --- a/src/Builder/Accumulator/DenseRankAccumulator.php +++ b/src/Builder/Accumulator/DenseRankAccumulator.php @@ -22,13 +22,9 @@ final class DenseRankAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$denseRank'; public function __construct() { } - - public function getOperator(): string - { - return '$denseRank'; - } } diff --git a/src/Builder/Accumulator/DerivativeAccumulator.php b/src/Builder/Accumulator/DerivativeAccumulator.php index 80b111a2d..9ede80357 100644 --- a/src/Builder/Accumulator/DerivativeAccumulator.php +++ b/src/Builder/Accumulator/DerivativeAccumulator.php @@ -30,6 +30,7 @@ final class DerivativeAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$derivative'; public const PROPERTIES = ['input' => 'input', 'unit' => 'unit']; /** @var Decimal128|Int64|ResolvesToDate|ResolvesToNumber|UTCDateTime|float|int $input */ @@ -53,9 +54,4 @@ public function __construct( $this->input = $input; $this->unit = $unit; } - - public function getOperator(): string - { - return '$derivative'; - } } diff --git a/src/Builder/Accumulator/DocumentNumberAccumulator.php b/src/Builder/Accumulator/DocumentNumberAccumulator.php index ae776659e..a44f63475 100644 --- a/src/Builder/Accumulator/DocumentNumberAccumulator.php +++ b/src/Builder/Accumulator/DocumentNumberAccumulator.php @@ -22,13 +22,9 @@ final class DocumentNumberAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$documentNumber'; public function __construct() { } - - public function getOperator(): string - { - return '$documentNumber'; - } } diff --git a/src/Builder/Accumulator/ExpMovingAvgAccumulator.php b/src/Builder/Accumulator/ExpMovingAvgAccumulator.php index 44999b734..2bfe285f8 100644 --- a/src/Builder/Accumulator/ExpMovingAvgAccumulator.php +++ b/src/Builder/Accumulator/ExpMovingAvgAccumulator.php @@ -26,6 +26,7 @@ final class ExpMovingAvgAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$expMovingAvg'; public const PROPERTIES = ['input' => 'input', 'N' => 'N', 'alpha' => 'alpha']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $input */ @@ -61,9 +62,4 @@ public function __construct( $this->N = $N; $this->alpha = $alpha; } - - public function getOperator(): string - { - return '$expMovingAvg'; - } } diff --git a/src/Builder/Accumulator/FirstAccumulator.php b/src/Builder/Accumulator/FirstAccumulator.php index 2e4ff57ae..20e3b4ee2 100644 --- a/src/Builder/Accumulator/FirstAccumulator.php +++ b/src/Builder/Accumulator/FirstAccumulator.php @@ -26,6 +26,7 @@ final class FirstAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$first'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$first'; - } } diff --git a/src/Builder/Accumulator/FirstNAccumulator.php b/src/Builder/Accumulator/FirstNAccumulator.php index 844a9ff9f..740ebc7ae 100644 --- a/src/Builder/Accumulator/FirstNAccumulator.php +++ b/src/Builder/Accumulator/FirstNAccumulator.php @@ -28,6 +28,7 @@ final class FirstNAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$firstN'; public const PROPERTIES = ['input' => 'input', 'n' => 'n']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $input An expression that resolves to the array from which to return n elements. */ @@ -47,9 +48,4 @@ public function __construct( $this->input = $input; $this->n = $n; } - - public function getOperator(): string - { - return '$firstN'; - } } diff --git a/src/Builder/Accumulator/IntegralAccumulator.php b/src/Builder/Accumulator/IntegralAccumulator.php index 3255fc328..be34f57a2 100644 --- a/src/Builder/Accumulator/IntegralAccumulator.php +++ b/src/Builder/Accumulator/IntegralAccumulator.php @@ -30,6 +30,7 @@ final class IntegralAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$integral'; public const PROPERTIES = ['input' => 'input', 'unit' => 'unit']; /** @var Decimal128|Int64|ResolvesToDate|ResolvesToNumber|UTCDateTime|float|int $input */ @@ -53,9 +54,4 @@ public function __construct( $this->input = $input; $this->unit = $unit; } - - public function getOperator(): string - { - return '$integral'; - } } diff --git a/src/Builder/Accumulator/LastAccumulator.php b/src/Builder/Accumulator/LastAccumulator.php index b568fe77c..dd495538a 100644 --- a/src/Builder/Accumulator/LastAccumulator.php +++ b/src/Builder/Accumulator/LastAccumulator.php @@ -26,6 +26,7 @@ final class LastAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$last'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$last'; - } } diff --git a/src/Builder/Accumulator/LastNAccumulator.php b/src/Builder/Accumulator/LastNAccumulator.php index 75fa90c36..c0ddbd9bb 100644 --- a/src/Builder/Accumulator/LastNAccumulator.php +++ b/src/Builder/Accumulator/LastNAccumulator.php @@ -32,6 +32,7 @@ final class LastNAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$lastN'; public const PROPERTIES = ['input' => 'input', 'n' => 'n']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input An expression that resolves to the array from which to return n elements. */ @@ -53,9 +54,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $input, $this->input = $input; $this->n = $n; } - - public function getOperator(): string - { - return '$lastN'; - } } diff --git a/src/Builder/Accumulator/LinearFillAccumulator.php b/src/Builder/Accumulator/LinearFillAccumulator.php index 3ca8f52c6..59aade4a1 100644 --- a/src/Builder/Accumulator/LinearFillAccumulator.php +++ b/src/Builder/Accumulator/LinearFillAccumulator.php @@ -26,6 +26,7 @@ final class LinearFillAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$linearFill'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$linearFill'; - } } diff --git a/src/Builder/Accumulator/LocfAccumulator.php b/src/Builder/Accumulator/LocfAccumulator.php index 0ecc6002a..15ee21740 100644 --- a/src/Builder/Accumulator/LocfAccumulator.php +++ b/src/Builder/Accumulator/LocfAccumulator.php @@ -26,6 +26,7 @@ final class LocfAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$locf'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$locf'; - } } diff --git a/src/Builder/Accumulator/MaxAccumulator.php b/src/Builder/Accumulator/MaxAccumulator.php index 3eaf66b3c..cf53cb8cd 100644 --- a/src/Builder/Accumulator/MaxAccumulator.php +++ b/src/Builder/Accumulator/MaxAccumulator.php @@ -26,6 +26,7 @@ final class MaxAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$max'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$max'; - } } diff --git a/src/Builder/Accumulator/MaxNAccumulator.php b/src/Builder/Accumulator/MaxNAccumulator.php index 01f2a3430..04530f24e 100644 --- a/src/Builder/Accumulator/MaxNAccumulator.php +++ b/src/Builder/Accumulator/MaxNAccumulator.php @@ -30,6 +30,7 @@ final class MaxNAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$maxN'; public const PROPERTIES = ['input' => 'input', 'n' => 'n']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input An expression that resolves to the array from which to return the maximal n elements. */ @@ -51,9 +52,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $input, $this->input = $input; $this->n = $n; } - - public function getOperator(): string - { - return '$maxN'; - } } diff --git a/src/Builder/Accumulator/MedianAccumulator.php b/src/Builder/Accumulator/MedianAccumulator.php index 83e32ea15..358be201b 100644 --- a/src/Builder/Accumulator/MedianAccumulator.php +++ b/src/Builder/Accumulator/MedianAccumulator.php @@ -30,6 +30,7 @@ final class MedianAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$median'; public const PROPERTIES = ['input' => 'input', 'method' => 'method']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $input $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it. */ @@ -47,9 +48,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $input, $this->input = $input; $this->method = $method; } - - public function getOperator(): string - { - return '$median'; - } } diff --git a/src/Builder/Accumulator/MergeObjectsAccumulator.php b/src/Builder/Accumulator/MergeObjectsAccumulator.php index 0c4e1737c..87a8e6a00 100644 --- a/src/Builder/Accumulator/MergeObjectsAccumulator.php +++ b/src/Builder/Accumulator/MergeObjectsAccumulator.php @@ -25,6 +25,7 @@ final class MergeObjectsAccumulator implements AccumulatorInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$mergeObjects'; public const PROPERTIES = ['document' => 'document']; /** @var Document|ResolvesToObject|Serializable|array|stdClass $document Any valid expression that resolves to a document. */ @@ -37,9 +38,4 @@ public function __construct(Document|Serializable|ResolvesToObject|stdClass|arra { $this->document = $document; } - - public function getOperator(): string - { - return '$mergeObjects'; - } } diff --git a/src/Builder/Accumulator/MinAccumulator.php b/src/Builder/Accumulator/MinAccumulator.php index c2536772b..b90ef761b 100644 --- a/src/Builder/Accumulator/MinAccumulator.php +++ b/src/Builder/Accumulator/MinAccumulator.php @@ -26,6 +26,7 @@ final class MinAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$min'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$min'; - } } diff --git a/src/Builder/Accumulator/MinNAccumulator.php b/src/Builder/Accumulator/MinNAccumulator.php index 997859098..7a7dbcb37 100644 --- a/src/Builder/Accumulator/MinNAccumulator.php +++ b/src/Builder/Accumulator/MinNAccumulator.php @@ -30,6 +30,7 @@ final class MinNAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$minN'; public const PROPERTIES = ['input' => 'input', 'n' => 'n']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input An expression that resolves to the array from which to return the maximal n elements. */ @@ -51,9 +52,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $input, $this->input = $input; $this->n = $n; } - - public function getOperator(): string - { - return '$minN'; - } } diff --git a/src/Builder/Accumulator/PercentileAccumulator.php b/src/Builder/Accumulator/PercentileAccumulator.php index a8d254ee1..3766d8f1d 100644 --- a/src/Builder/Accumulator/PercentileAccumulator.php +++ b/src/Builder/Accumulator/PercentileAccumulator.php @@ -40,6 +40,7 @@ final class PercentileAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$percentile'; public const PROPERTIES = ['input' => 'input', 'p' => 'p', 'method' => 'method']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $input $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it. */ @@ -73,9 +74,4 @@ public function __construct( $this->p = $p; $this->method = $method; } - - public function getOperator(): string - { - return '$percentile'; - } } diff --git a/src/Builder/Accumulator/PushAccumulator.php b/src/Builder/Accumulator/PushAccumulator.php index 85a4282f5..8f04023a9 100644 --- a/src/Builder/Accumulator/PushAccumulator.php +++ b/src/Builder/Accumulator/PushAccumulator.php @@ -26,6 +26,7 @@ final class PushAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$push'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -38,9 +39,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$push'; - } } diff --git a/src/Builder/Accumulator/RankAccumulator.php b/src/Builder/Accumulator/RankAccumulator.php index 9fea2d1f8..ddf2f665c 100644 --- a/src/Builder/Accumulator/RankAccumulator.php +++ b/src/Builder/Accumulator/RankAccumulator.php @@ -22,13 +22,9 @@ final class RankAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$rank'; public function __construct() { } - - public function getOperator(): string - { - return '$rank'; - } } diff --git a/src/Builder/Accumulator/ShiftAccumulator.php b/src/Builder/Accumulator/ShiftAccumulator.php index 85b39591b..5f4200307 100644 --- a/src/Builder/Accumulator/ShiftAccumulator.php +++ b/src/Builder/Accumulator/ShiftAccumulator.php @@ -25,6 +25,7 @@ final class ShiftAccumulator implements WindowInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$shift'; public const PROPERTIES = ['output' => 'output', 'by' => 'by', 'default' => 'default']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $output Specifies an expression to evaluate and return in the output. */ @@ -66,9 +67,4 @@ public function __construct( $this->by = $by; $this->default = $default; } - - public function getOperator(): string - { - return '$shift'; - } } diff --git a/src/Builder/Accumulator/StdDevPopAccumulator.php b/src/Builder/Accumulator/StdDevPopAccumulator.php index faeeaf301..efa166707 100644 --- a/src/Builder/Accumulator/StdDevPopAccumulator.php +++ b/src/Builder/Accumulator/StdDevPopAccumulator.php @@ -27,6 +27,7 @@ final class StdDevPopAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$stdDevPop'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -39,9 +40,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$stdDevPop'; - } } diff --git a/src/Builder/Accumulator/StdDevSampAccumulator.php b/src/Builder/Accumulator/StdDevSampAccumulator.php index e4a177636..d02f9e485 100644 --- a/src/Builder/Accumulator/StdDevSampAccumulator.php +++ b/src/Builder/Accumulator/StdDevSampAccumulator.php @@ -27,6 +27,7 @@ final class StdDevSampAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$stdDevSamp'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -39,9 +40,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$stdDevSamp'; - } } diff --git a/src/Builder/Accumulator/SumAccumulator.php b/src/Builder/Accumulator/SumAccumulator.php index a2ad7af00..172915e2c 100644 --- a/src/Builder/Accumulator/SumAccumulator.php +++ b/src/Builder/Accumulator/SumAccumulator.php @@ -26,6 +26,7 @@ final class SumAccumulator implements AccumulatorInterface, WindowInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sum'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$sum'; - } } diff --git a/src/Builder/Accumulator/TopAccumulator.php b/src/Builder/Accumulator/TopAccumulator.php index efad91414..7fac97efc 100644 --- a/src/Builder/Accumulator/TopAccumulator.php +++ b/src/Builder/Accumulator/TopAccumulator.php @@ -29,6 +29,7 @@ final class TopAccumulator implements AccumulatorInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$top'; public const PROPERTIES = ['sortBy' => 'sortBy', 'output' => 'output']; /** @var Document|Serializable|array|stdClass $sortBy Specifies the order of results, with syntax similar to $sort. */ @@ -48,9 +49,4 @@ public function __construct( $this->sortBy = $sortBy; $this->output = $output; } - - public function getOperator(): string - { - return '$top'; - } } diff --git a/src/Builder/Accumulator/TopNAccumulator.php b/src/Builder/Accumulator/TopNAccumulator.php index ffcca2872..ea0ae9bc0 100644 --- a/src/Builder/Accumulator/TopNAccumulator.php +++ b/src/Builder/Accumulator/TopNAccumulator.php @@ -30,6 +30,7 @@ final class TopNAccumulator implements AccumulatorInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$topN'; public const PROPERTIES = ['n' => 'n', 'sortBy' => 'sortBy', 'output' => 'output']; /** @var ResolvesToInt|int $n limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group. */ @@ -55,9 +56,4 @@ public function __construct( $this->sortBy = $sortBy; $this->output = $output; } - - public function getOperator(): string - { - return '$topN'; - } } diff --git a/src/Builder/Encoder/OperatorEncoder.php b/src/Builder/Encoder/OperatorEncoder.php index ddc49faab..5c18d7c0b 100644 --- a/src/Builder/Encoder/OperatorEncoder.php +++ b/src/Builder/Encoder/OperatorEncoder.php @@ -12,6 +12,8 @@ use MongoDB\Exception\UnsupportedValueException; use stdClass; +use function assert; +use function is_string; use function sprintf; /** @@ -37,7 +39,7 @@ public function encode(mixed $value): stdClass return match ($value::ENCODE) { Encode::Single => $this->encodeAsSingle($value), Encode::Array => $this->encodeAsArray($value), - Encode::Object, Encode::FlatObject => $this->encodeAsObject($value), + Encode::Object => $this->encodeAsObject($value), default => throw new LogicException(sprintf('Class "%s" does not have a valid ENCODE constant.', $value::class)), }; } @@ -89,9 +91,11 @@ private function encodeAsObject(OperatorInterface $value): stdClass } } - return $value::ENCODE === Encode::FlatObject - ? $result - : $this->wrap($value, $result); + if ($value::NAME === null) { + return $result; + } + + return $this->wrap($value, $result); } /** @@ -110,8 +114,10 @@ private function encodeAsSingle(OperatorInterface $value): stdClass private function wrap(OperatorInterface $value, mixed $result): stdClass { + assert(is_string($value::NAME)); + $object = new stdClass(); - $object->{$value->getOperator()} = $result; + $object->{$value::NAME} = $result; return $object; } diff --git a/src/Builder/Expression/AbsOperator.php b/src/Builder/Expression/AbsOperator.php index aa0dfc78a..977a05a44 100644 --- a/src/Builder/Expression/AbsOperator.php +++ b/src/Builder/Expression/AbsOperator.php @@ -22,6 +22,7 @@ final class AbsOperator implements ResolvesToNumber, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$abs'; public const PROPERTIES = ['value' => 'value']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $value */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $value) { $this->value = $value; } - - public function getOperator(): string - { - return '$abs'; - } } diff --git a/src/Builder/Expression/AcosOperator.php b/src/Builder/Expression/AcosOperator.php index 7123b7d25..47ae210d3 100644 --- a/src/Builder/Expression/AcosOperator.php +++ b/src/Builder/Expression/AcosOperator.php @@ -22,6 +22,7 @@ final class AcosOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$acos'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$acos'; - } } diff --git a/src/Builder/Expression/AcoshOperator.php b/src/Builder/Expression/AcoshOperator.php index 1715e3a41..8be5bc4a7 100644 --- a/src/Builder/Expression/AcoshOperator.php +++ b/src/Builder/Expression/AcoshOperator.php @@ -22,6 +22,7 @@ final class AcoshOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$acosh'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$acosh'; - } } diff --git a/src/Builder/Expression/AddOperator.php b/src/Builder/Expression/AddOperator.php index 45e9fa745..259e64b08 100644 --- a/src/Builder/Expression/AddOperator.php +++ b/src/Builder/Expression/AddOperator.php @@ -26,6 +26,7 @@ final class AddOperator implements ResolvesToInt, ResolvesToLong, ResolvesToDouble, ResolvesToDecimal, ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$add'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date. */ @@ -47,9 +48,4 @@ public function __construct(Decimal128|Int64|UTCDateTime|ResolvesToDate|Resolves $this->expression = $expression; } - - public function getOperator(): string - { - return '$add'; - } } diff --git a/src/Builder/Expression/AllElementsTrueOperator.php b/src/Builder/Expression/AllElementsTrueOperator.php index 4ac75df9a..dbb74d967 100644 --- a/src/Builder/Expression/AllElementsTrueOperator.php +++ b/src/Builder/Expression/AllElementsTrueOperator.php @@ -26,6 +26,7 @@ final class AllElementsTrueOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$allElementsTrue'; public const PROPERTIES = ['expression' => 'expression']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $express $this->expression = $expression; } - - public function getOperator(): string - { - return '$allElementsTrue'; - } } diff --git a/src/Builder/Expression/AndOperator.php b/src/Builder/Expression/AndOperator.php index 7334967e5..8e3364ab3 100644 --- a/src/Builder/Expression/AndOperator.php +++ b/src/Builder/Expression/AndOperator.php @@ -28,6 +28,7 @@ final class AndOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$and'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -50,9 +51,4 @@ public function __construct( $this->expression = $expression; } - - public function getOperator(): string - { - return '$and'; - } } diff --git a/src/Builder/Expression/AnyElementTrueOperator.php b/src/Builder/Expression/AnyElementTrueOperator.php index fa0b0a3f7..c8dd665b6 100644 --- a/src/Builder/Expression/AnyElementTrueOperator.php +++ b/src/Builder/Expression/AnyElementTrueOperator.php @@ -26,6 +26,7 @@ final class AnyElementTrueOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$anyElementTrue'; public const PROPERTIES = ['expression' => 'expression']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $express $this->expression = $expression; } - - public function getOperator(): string - { - return '$anyElementTrue'; - } } diff --git a/src/Builder/Expression/ArrayElemAtOperator.php b/src/Builder/Expression/ArrayElemAtOperator.php index 81cc74497..a5f333359 100644 --- a/src/Builder/Expression/ArrayElemAtOperator.php +++ b/src/Builder/Expression/ArrayElemAtOperator.php @@ -26,6 +26,7 @@ final class ArrayElemAtOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$arrayElemAt'; public const PROPERTIES = ['array' => 'array', 'idx' => 'idx']; /** @var BSONArray|PackedArray|ResolvesToArray|array $array */ @@ -47,9 +48,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $array, $this->array = $array; $this->idx = $idx; } - - public function getOperator(): string - { - return '$arrayElemAt'; - } } diff --git a/src/Builder/Expression/ArrayToObjectOperator.php b/src/Builder/Expression/ArrayToObjectOperator.php index 765923441..657f67676 100644 --- a/src/Builder/Expression/ArrayToObjectOperator.php +++ b/src/Builder/Expression/ArrayToObjectOperator.php @@ -26,6 +26,7 @@ final class ArrayToObjectOperator implements ResolvesToObject, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$arrayToObject'; public const PROPERTIES = ['array' => 'array']; /** @var BSONArray|PackedArray|ResolvesToArray|array $array */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $array) $this->array = $array; } - - public function getOperator(): string - { - return '$arrayToObject'; - } } diff --git a/src/Builder/Expression/AsinOperator.php b/src/Builder/Expression/AsinOperator.php index f9c585980..4f9a205e3 100644 --- a/src/Builder/Expression/AsinOperator.php +++ b/src/Builder/Expression/AsinOperator.php @@ -22,6 +22,7 @@ final class AsinOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$asin'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$asin'; - } } diff --git a/src/Builder/Expression/AsinhOperator.php b/src/Builder/Expression/AsinhOperator.php index 720c5e20e..4e5c72ef3 100644 --- a/src/Builder/Expression/AsinhOperator.php +++ b/src/Builder/Expression/AsinhOperator.php @@ -22,6 +22,7 @@ final class AsinhOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$asinh'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$asinh'; - } } diff --git a/src/Builder/Expression/Atan2Operator.php b/src/Builder/Expression/Atan2Operator.php index ae485c994..78f56c8a8 100644 --- a/src/Builder/Expression/Atan2Operator.php +++ b/src/Builder/Expression/Atan2Operator.php @@ -22,6 +22,7 @@ final class Atan2Operator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$atan2'; public const PROPERTIES = ['y' => 'y', 'x' => 'x']; /** @@ -47,9 +48,4 @@ public function __construct( $this->y = $y; $this->x = $x; } - - public function getOperator(): string - { - return '$atan2'; - } } diff --git a/src/Builder/Expression/AtanOperator.php b/src/Builder/Expression/AtanOperator.php index 7ba685da0..6362570d6 100644 --- a/src/Builder/Expression/AtanOperator.php +++ b/src/Builder/Expression/AtanOperator.php @@ -22,6 +22,7 @@ final class AtanOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$atan'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$atan'; - } } diff --git a/src/Builder/Expression/AtanhOperator.php b/src/Builder/Expression/AtanhOperator.php index ad2ab4df1..bdfba8ad9 100644 --- a/src/Builder/Expression/AtanhOperator.php +++ b/src/Builder/Expression/AtanhOperator.php @@ -22,6 +22,7 @@ final class AtanhOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$atanh'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$atanh'; - } } diff --git a/src/Builder/Expression/AvgOperator.php b/src/Builder/Expression/AvgOperator.php index ba6d83fa3..31745f14a 100644 --- a/src/Builder/Expression/AvgOperator.php +++ b/src/Builder/Expression/AvgOperator.php @@ -26,6 +26,7 @@ final class AvgOperator implements ResolvesToNumber, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$avg'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -47,9 +48,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$avg'; - } } diff --git a/src/Builder/Expression/BinarySizeOperator.php b/src/Builder/Expression/BinarySizeOperator.php index 0dfc99fdd..792da66b0 100644 --- a/src/Builder/Expression/BinarySizeOperator.php +++ b/src/Builder/Expression/BinarySizeOperator.php @@ -21,6 +21,7 @@ final class BinarySizeOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$binarySize'; public const PROPERTIES = ['expression' => 'expression']; /** @var Binary|ResolvesToBinData|ResolvesToNull|ResolvesToString|null|string $expression */ @@ -33,9 +34,4 @@ public function __construct(Binary|ResolvesToBinData|ResolvesToNull|ResolvesToSt { $this->expression = $expression; } - - public function getOperator(): string - { - return '$binarySize'; - } } diff --git a/src/Builder/Expression/BitAndOperator.php b/src/Builder/Expression/BitAndOperator.php index a66b516d7..bf0e3cd73 100644 --- a/src/Builder/Expression/BitAndOperator.php +++ b/src/Builder/Expression/BitAndOperator.php @@ -25,6 +25,7 @@ final class BitAndOperator implements ResolvesToInt, ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitAnd'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -46,9 +47,4 @@ public function __construct(Int64|ResolvesToInt|ResolvesToLong|int ...$expressio $this->expression = $expression; } - - public function getOperator(): string - { - return '$bitAnd'; - } } diff --git a/src/Builder/Expression/BitNotOperator.php b/src/Builder/Expression/BitNotOperator.php index 4acbf652c..6f388919f 100644 --- a/src/Builder/Expression/BitNotOperator.php +++ b/src/Builder/Expression/BitNotOperator.php @@ -22,6 +22,7 @@ final class BitNotOperator implements ResolvesToInt, ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitNot'; public const PROPERTIES = ['expression' => 'expression']; /** @var Int64|ResolvesToInt|ResolvesToLong|int $expression */ @@ -34,9 +35,4 @@ public function __construct(Int64|ResolvesToInt|ResolvesToLong|int $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$bitNot'; - } } diff --git a/src/Builder/Expression/BitOrOperator.php b/src/Builder/Expression/BitOrOperator.php index db435a710..b2490a4f6 100644 --- a/src/Builder/Expression/BitOrOperator.php +++ b/src/Builder/Expression/BitOrOperator.php @@ -25,6 +25,7 @@ final class BitOrOperator implements ResolvesToInt, ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitOr'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -46,9 +47,4 @@ public function __construct(Int64|ResolvesToInt|ResolvesToLong|int ...$expressio $this->expression = $expression; } - - public function getOperator(): string - { - return '$bitOr'; - } } diff --git a/src/Builder/Expression/BitXorOperator.php b/src/Builder/Expression/BitXorOperator.php index 6b86ea43f..0f0bc0e5a 100644 --- a/src/Builder/Expression/BitXorOperator.php +++ b/src/Builder/Expression/BitXorOperator.php @@ -25,6 +25,7 @@ final class BitXorOperator implements ResolvesToInt, ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitXor'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -46,9 +47,4 @@ public function __construct(Int64|ResolvesToInt|ResolvesToLong|int ...$expressio $this->expression = $expression; } - - public function getOperator(): string - { - return '$bitXor'; - } } diff --git a/src/Builder/Expression/BsonSizeOperator.php b/src/Builder/Expression/BsonSizeOperator.php index cdf5e27c9..962d8c6db 100644 --- a/src/Builder/Expression/BsonSizeOperator.php +++ b/src/Builder/Expression/BsonSizeOperator.php @@ -23,6 +23,7 @@ final class BsonSizeOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bsonSize'; public const PROPERTIES = ['object' => 'object']; /** @var Document|ResolvesToNull|ResolvesToObject|Serializable|array|null|stdClass $object */ @@ -35,9 +36,4 @@ public function __construct(Document|Serializable|ResolvesToNull|ResolvesToObjec { $this->object = $object; } - - public function getOperator(): string - { - return '$bsonSize'; - } } diff --git a/src/Builder/Expression/CaseOperator.php b/src/Builder/Expression/CaseOperator.php index c43db4b7f..27da77d71 100644 --- a/src/Builder/Expression/CaseOperator.php +++ b/src/Builder/Expression/CaseOperator.php @@ -23,7 +23,8 @@ */ final class CaseOperator implements SwitchBranchInterface, OperatorInterface { - public const ENCODE = Encode::FlatObject; + public const ENCODE = Encode::Object; + public const NAME = null; public const PROPERTIES = ['case' => 'case', 'then' => 'then']; /** @var ResolvesToBool|bool $case Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here. */ @@ -43,9 +44,4 @@ public function __construct( $this->case = $case; $this->then = $then; } - - public function getOperator(): string - { - return '$case'; - } } diff --git a/src/Builder/Expression/CeilOperator.php b/src/Builder/Expression/CeilOperator.php index e997a5fd8..c6771b81f 100644 --- a/src/Builder/Expression/CeilOperator.php +++ b/src/Builder/Expression/CeilOperator.php @@ -22,6 +22,7 @@ final class CeilOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$ceil'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression If the argument resolves to a value of null or refers to a field that is missing, $ceil returns null. If the argument resolves to NaN, $ceil returns NaN. */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$ceil'; - } } diff --git a/src/Builder/Expression/CmpOperator.php b/src/Builder/Expression/CmpOperator.php index 620602680..72f27face 100644 --- a/src/Builder/Expression/CmpOperator.php +++ b/src/Builder/Expression/CmpOperator.php @@ -23,6 +23,7 @@ final class CmpOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$cmp'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$cmp'; - } } diff --git a/src/Builder/Expression/ConcatArraysOperator.php b/src/Builder/Expression/ConcatArraysOperator.php index 27ad5736c..17e736a78 100644 --- a/src/Builder/Expression/ConcatArraysOperator.php +++ b/src/Builder/Expression/ConcatArraysOperator.php @@ -25,6 +25,7 @@ final class ConcatArraysOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$concatArrays'; public const PROPERTIES = ['array' => 'array']; /** @var list $array */ @@ -46,9 +47,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array ...$arra $this->array = $array; } - - public function getOperator(): string - { - return '$concatArrays'; - } } diff --git a/src/Builder/Expression/ConcatOperator.php b/src/Builder/Expression/ConcatOperator.php index c1ac43294..c8497be08 100644 --- a/src/Builder/Expression/ConcatOperator.php +++ b/src/Builder/Expression/ConcatOperator.php @@ -23,6 +23,7 @@ final class ConcatOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$concat'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -44,9 +45,4 @@ public function __construct(ResolvesToString|string ...$expression) $this->expression = $expression; } - - public function getOperator(): string - { - return '$concat'; - } } diff --git a/src/Builder/Expression/CondOperator.php b/src/Builder/Expression/CondOperator.php index 97b286e45..26ca336f5 100644 --- a/src/Builder/Expression/CondOperator.php +++ b/src/Builder/Expression/CondOperator.php @@ -23,6 +23,7 @@ final class CondOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$cond'; public const PROPERTIES = ['if' => 'if', 'then' => 'then', 'else' => 'else']; /** @var ResolvesToBool|bool $if */ @@ -48,9 +49,4 @@ public function __construct( $this->then = $then; $this->else = $else; } - - public function getOperator(): string - { - return '$cond'; - } } diff --git a/src/Builder/Expression/ConvertOperator.php b/src/Builder/Expression/ConvertOperator.php index 0418c26b9..92bfecb02 100644 --- a/src/Builder/Expression/ConvertOperator.php +++ b/src/Builder/Expression/ConvertOperator.php @@ -25,6 +25,7 @@ final class ConvertOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$convert'; public const PROPERTIES = ['input' => 'input', 'to' => 'to', 'onError' => 'onError', 'onNull' => 'onNull']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $input */ @@ -64,9 +65,4 @@ public function __construct( $this->onError = $onError; $this->onNull = $onNull; } - - public function getOperator(): string - { - return '$convert'; - } } diff --git a/src/Builder/Expression/CosOperator.php b/src/Builder/Expression/CosOperator.php index 0b5a2e7e7..e06afa635 100644 --- a/src/Builder/Expression/CosOperator.php +++ b/src/Builder/Expression/CosOperator.php @@ -22,6 +22,7 @@ final class CosOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$cos'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$cos'; - } } diff --git a/src/Builder/Expression/CoshOperator.php b/src/Builder/Expression/CoshOperator.php index b1a481772..c44dccb0b 100644 --- a/src/Builder/Expression/CoshOperator.php +++ b/src/Builder/Expression/CoshOperator.php @@ -22,6 +22,7 @@ final class CoshOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$cosh'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$cosh'; - } } diff --git a/src/Builder/Expression/DateAddOperator.php b/src/Builder/Expression/DateAddOperator.php index 208a1e4dc..0c0bbf100 100644 --- a/src/Builder/Expression/DateAddOperator.php +++ b/src/Builder/Expression/DateAddOperator.php @@ -26,6 +26,7 @@ final class DateAddOperator implements ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateAdd'; public const PROPERTIES = ['startDate' => 'startDate', 'unit' => 'unit', 'amount' => 'amount', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $startDate The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -57,9 +58,4 @@ public function __construct( $this->amount = $amount; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$dateAdd'; - } } diff --git a/src/Builder/Expression/DateDiffOperator.php b/src/Builder/Expression/DateDiffOperator.php index 67b2bfc2f..a12ea935c 100644 --- a/src/Builder/Expression/DateDiffOperator.php +++ b/src/Builder/Expression/DateDiffOperator.php @@ -25,6 +25,7 @@ final class DateDiffOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateDiff'; public const PROPERTIES = [ 'startDate' => 'startDate', @@ -69,9 +70,4 @@ public function __construct( $this->timezone = $timezone; $this->startOfWeek = $startOfWeek; } - - public function getOperator(): string - { - return '$dateDiff'; - } } diff --git a/src/Builder/Expression/DateFromPartsOperator.php b/src/Builder/Expression/DateFromPartsOperator.php index 1cd5cd678..877bfdd65 100644 --- a/src/Builder/Expression/DateFromPartsOperator.php +++ b/src/Builder/Expression/DateFromPartsOperator.php @@ -23,6 +23,7 @@ final class DateFromPartsOperator implements ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateFromParts'; public const PROPERTIES = [ 'year' => 'year', @@ -109,9 +110,4 @@ public function __construct( $this->millisecond = $millisecond; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$dateFromParts'; - } } diff --git a/src/Builder/Expression/DateFromStringOperator.php b/src/Builder/Expression/DateFromStringOperator.php index 0d35eb7b3..60c20fed1 100644 --- a/src/Builder/Expression/DateFromStringOperator.php +++ b/src/Builder/Expression/DateFromStringOperator.php @@ -24,6 +24,7 @@ final class DateFromStringOperator implements ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateFromString'; public const PROPERTIES = [ 'dateString' => 'dateString', @@ -80,9 +81,4 @@ public function __construct( $this->onError = $onError; $this->onNull = $onNull; } - - public function getOperator(): string - { - return '$dateFromString'; - } } diff --git a/src/Builder/Expression/DateSubtractOperator.php b/src/Builder/Expression/DateSubtractOperator.php index 4112ded11..11fbfdcfd 100644 --- a/src/Builder/Expression/DateSubtractOperator.php +++ b/src/Builder/Expression/DateSubtractOperator.php @@ -26,6 +26,7 @@ final class DateSubtractOperator implements ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateSubtract'; public const PROPERTIES = ['startDate' => 'startDate', 'unit' => 'unit', 'amount' => 'amount', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $startDate The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -57,9 +58,4 @@ public function __construct( $this->amount = $amount; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$dateSubtract'; - } } diff --git a/src/Builder/Expression/DateToPartsOperator.php b/src/Builder/Expression/DateToPartsOperator.php index 1d8754a4d..3573e59c8 100644 --- a/src/Builder/Expression/DateToPartsOperator.php +++ b/src/Builder/Expression/DateToPartsOperator.php @@ -24,6 +24,7 @@ final class DateToPartsOperator implements ResolvesToObject, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateToParts'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone', 'iso8601' => 'iso8601']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The input date for which to return parts. date can be any expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -49,9 +50,4 @@ public function __construct( $this->timezone = $timezone; $this->iso8601 = $iso8601; } - - public function getOperator(): string - { - return '$dateToParts'; - } } diff --git a/src/Builder/Expression/DateToStringOperator.php b/src/Builder/Expression/DateToStringOperator.php index d1403f67c..7f9ede2d9 100644 --- a/src/Builder/Expression/DateToStringOperator.php +++ b/src/Builder/Expression/DateToStringOperator.php @@ -27,6 +27,7 @@ final class DateToStringOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateToString'; public const PROPERTIES = ['date' => 'date', 'format' => 'format', 'timezone' => 'timezone', 'onNull' => 'onNull']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to convert to string. Must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -66,9 +67,4 @@ public function __construct( $this->timezone = $timezone; $this->onNull = $onNull; } - - public function getOperator(): string - { - return '$dateToString'; - } } diff --git a/src/Builder/Expression/DateTruncOperator.php b/src/Builder/Expression/DateTruncOperator.php index 643cd3a7f..b5e162bba 100644 --- a/src/Builder/Expression/DateTruncOperator.php +++ b/src/Builder/Expression/DateTruncOperator.php @@ -27,6 +27,7 @@ final class DateTruncOperator implements ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dateTrunc'; public const PROPERTIES = [ 'date' => 'date', @@ -83,9 +84,4 @@ public function __construct( $this->timezone = $timezone; $this->startOfWeek = $startOfWeek; } - - public function getOperator(): string - { - return '$dateTrunc'; - } } diff --git a/src/Builder/Expression/DayOfMonthOperator.php b/src/Builder/Expression/DayOfMonthOperator.php index 1d336d692..bc0ccb28f 100644 --- a/src/Builder/Expression/DayOfMonthOperator.php +++ b/src/Builder/Expression/DayOfMonthOperator.php @@ -24,6 +24,7 @@ final class DayOfMonthOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dayOfMonth'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$dayOfMonth'; - } } diff --git a/src/Builder/Expression/DayOfWeekOperator.php b/src/Builder/Expression/DayOfWeekOperator.php index 51e296d73..e9dbbfa08 100644 --- a/src/Builder/Expression/DayOfWeekOperator.php +++ b/src/Builder/Expression/DayOfWeekOperator.php @@ -24,6 +24,7 @@ final class DayOfWeekOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dayOfWeek'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$dayOfWeek'; - } } diff --git a/src/Builder/Expression/DayOfYearOperator.php b/src/Builder/Expression/DayOfYearOperator.php index febb353a5..86c20ab20 100644 --- a/src/Builder/Expression/DayOfYearOperator.php +++ b/src/Builder/Expression/DayOfYearOperator.php @@ -24,6 +24,7 @@ final class DayOfYearOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$dayOfYear'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$dayOfYear'; - } } diff --git a/src/Builder/Expression/DegreesToRadiansOperator.php b/src/Builder/Expression/DegreesToRadiansOperator.php index 412a49791..b8d2bb07a 100644 --- a/src/Builder/Expression/DegreesToRadiansOperator.php +++ b/src/Builder/Expression/DegreesToRadiansOperator.php @@ -22,6 +22,7 @@ final class DegreesToRadiansOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$degreesToRadians'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$degreesToRadians'; - } } diff --git a/src/Builder/Expression/DivideOperator.php b/src/Builder/Expression/DivideOperator.php index 79962ca25..74de49c20 100644 --- a/src/Builder/Expression/DivideOperator.php +++ b/src/Builder/Expression/DivideOperator.php @@ -22,6 +22,7 @@ final class DivideOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$divide'; public const PROPERTIES = ['dividend' => 'dividend', 'divisor' => 'divisor']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $dividend The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument. */ @@ -41,9 +42,4 @@ public function __construct( $this->dividend = $dividend; $this->divisor = $divisor; } - - public function getOperator(): string - { - return '$divide'; - } } diff --git a/src/Builder/Expression/EqOperator.php b/src/Builder/Expression/EqOperator.php index 7717ad6d3..f78d0ff3b 100644 --- a/src/Builder/Expression/EqOperator.php +++ b/src/Builder/Expression/EqOperator.php @@ -23,6 +23,7 @@ final class EqOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$eq'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$eq'; - } } diff --git a/src/Builder/Expression/ExpOperator.php b/src/Builder/Expression/ExpOperator.php index ad37f8365..78037fb9e 100644 --- a/src/Builder/Expression/ExpOperator.php +++ b/src/Builder/Expression/ExpOperator.php @@ -22,6 +22,7 @@ final class ExpOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$exp'; public const PROPERTIES = ['exponent' => 'exponent']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $exponent */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $exponen { $this->exponent = $exponent; } - - public function getOperator(): string - { - return '$exp'; - } } diff --git a/src/Builder/Expression/FilterOperator.php b/src/Builder/Expression/FilterOperator.php index 665e196e7..9bd522572 100644 --- a/src/Builder/Expression/FilterOperator.php +++ b/src/Builder/Expression/FilterOperator.php @@ -27,6 +27,7 @@ final class FilterOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$filter'; public const PROPERTIES = ['input' => 'input', 'cond' => 'cond', 'as' => 'as', 'limit' => 'limit']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input */ @@ -66,9 +67,4 @@ public function __construct( $this->as = $as; $this->limit = $limit; } - - public function getOperator(): string - { - return '$filter'; - } } diff --git a/src/Builder/Expression/FirstNOperator.php b/src/Builder/Expression/FirstNOperator.php index c8276f33c..769c38118 100644 --- a/src/Builder/Expression/FirstNOperator.php +++ b/src/Builder/Expression/FirstNOperator.php @@ -26,6 +26,7 @@ final class FirstNOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$firstN'; public const PROPERTIES = ['n' => 'n', 'input' => 'input']; /** @var ResolvesToInt|int $n An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns. */ @@ -47,9 +48,4 @@ public function __construct(ResolvesToInt|int $n, PackedArray|ResolvesToArray|BS $this->input = $input; } - - public function getOperator(): string - { - return '$firstN'; - } } diff --git a/src/Builder/Expression/FirstOperator.php b/src/Builder/Expression/FirstOperator.php index 318dc4769..994de7bee 100644 --- a/src/Builder/Expression/FirstOperator.php +++ b/src/Builder/Expression/FirstOperator.php @@ -26,6 +26,7 @@ final class FirstOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$first'; public const PROPERTIES = ['expression' => 'expression']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $express $this->expression = $expression; } - - public function getOperator(): string - { - return '$first'; - } } diff --git a/src/Builder/Expression/FloorOperator.php b/src/Builder/Expression/FloorOperator.php index ec974417c..741412330 100644 --- a/src/Builder/Expression/FloorOperator.php +++ b/src/Builder/Expression/FloorOperator.php @@ -22,6 +22,7 @@ final class FloorOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$floor'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$floor'; - } } diff --git a/src/Builder/Expression/FunctionOperator.php b/src/Builder/Expression/FunctionOperator.php index 6b9d1ba8a..516729e3a 100644 --- a/src/Builder/Expression/FunctionOperator.php +++ b/src/Builder/Expression/FunctionOperator.php @@ -29,6 +29,7 @@ final class FunctionOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$function'; public const PROPERTIES = ['body' => 'body', 'args' => 'args', 'lang' => 'lang']; /** @@ -63,9 +64,4 @@ public function __construct(Javascript|string $body, PackedArray|BSONArray|array $this->args = $args; $this->lang = $lang; } - - public function getOperator(): string - { - return '$function'; - } } diff --git a/src/Builder/Expression/GetFieldOperator.php b/src/Builder/Expression/GetFieldOperator.php index 188c074fe..622bacb85 100644 --- a/src/Builder/Expression/GetFieldOperator.php +++ b/src/Builder/Expression/GetFieldOperator.php @@ -25,6 +25,7 @@ final class GetFieldOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$getField'; public const PROPERTIES = ['field' => 'field', 'input' => 'input']; /** @@ -52,9 +53,4 @@ public function __construct( $this->field = $field; $this->input = $input; } - - public function getOperator(): string - { - return '$getField'; - } } diff --git a/src/Builder/Expression/GtOperator.php b/src/Builder/Expression/GtOperator.php index badb0b951..fda780fff 100644 --- a/src/Builder/Expression/GtOperator.php +++ b/src/Builder/Expression/GtOperator.php @@ -23,6 +23,7 @@ final class GtOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$gt'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$gt'; - } } diff --git a/src/Builder/Expression/GteOperator.php b/src/Builder/Expression/GteOperator.php index 45931a7ae..8f5792770 100644 --- a/src/Builder/Expression/GteOperator.php +++ b/src/Builder/Expression/GteOperator.php @@ -23,6 +23,7 @@ final class GteOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$gte'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$gte'; - } } diff --git a/src/Builder/Expression/HourOperator.php b/src/Builder/Expression/HourOperator.php index 47d7ba339..5c68b7446 100644 --- a/src/Builder/Expression/HourOperator.php +++ b/src/Builder/Expression/HourOperator.php @@ -24,6 +24,7 @@ final class HourOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$hour'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$hour'; - } } diff --git a/src/Builder/Expression/IfNullOperator.php b/src/Builder/Expression/IfNullOperator.php index 06a7926a4..51c393d28 100644 --- a/src/Builder/Expression/IfNullOperator.php +++ b/src/Builder/Expression/IfNullOperator.php @@ -26,6 +26,7 @@ final class IfNullOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$ifNull'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -47,9 +48,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i $this->expression = $expression; } - - public function getOperator(): string - { - return '$ifNull'; - } } diff --git a/src/Builder/Expression/InOperator.php b/src/Builder/Expression/InOperator.php index 31d78bb26..c2e24b9dc 100644 --- a/src/Builder/Expression/InOperator.php +++ b/src/Builder/Expression/InOperator.php @@ -29,6 +29,7 @@ final class InOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$in'; public const PROPERTIES = ['expression' => 'expression', 'array' => 'array']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression Any valid expression expression. */ @@ -52,9 +53,4 @@ public function __construct( $this->array = $array; } - - public function getOperator(): string - { - return '$in'; - } } diff --git a/src/Builder/Expression/IndexOfArrayOperator.php b/src/Builder/Expression/IndexOfArrayOperator.php index 912e20a86..15e3e4626 100644 --- a/src/Builder/Expression/IndexOfArrayOperator.php +++ b/src/Builder/Expression/IndexOfArrayOperator.php @@ -30,6 +30,7 @@ final class IndexOfArrayOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$indexOfArray'; public const PROPERTIES = ['array' => 'array', 'search' => 'search', 'start' => 'start', 'end' => 'end']; /** @@ -79,9 +80,4 @@ public function __construct( $this->start = $start; $this->end = $end; } - - public function getOperator(): string - { - return '$indexOfArray'; - } } diff --git a/src/Builder/Expression/IndexOfBytesOperator.php b/src/Builder/Expression/IndexOfBytesOperator.php index 788b4ecb9..9f3d07533 100644 --- a/src/Builder/Expression/IndexOfBytesOperator.php +++ b/src/Builder/Expression/IndexOfBytesOperator.php @@ -21,6 +21,7 @@ final class IndexOfBytesOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$indexOfBytes'; public const PROPERTIES = ['string' => 'string', 'substring' => 'substring', 'start' => 'start', 'end' => 'end']; /** @@ -66,9 +67,4 @@ public function __construct( $this->start = $start; $this->end = $end; } - - public function getOperator(): string - { - return '$indexOfBytes'; - } } diff --git a/src/Builder/Expression/IndexOfCPOperator.php b/src/Builder/Expression/IndexOfCPOperator.php index 076b7747c..735de9759 100644 --- a/src/Builder/Expression/IndexOfCPOperator.php +++ b/src/Builder/Expression/IndexOfCPOperator.php @@ -21,6 +21,7 @@ final class IndexOfCPOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$indexOfCP'; public const PROPERTIES = ['string' => 'string', 'substring' => 'substring', 'start' => 'start', 'end' => 'end']; /** @@ -66,9 +67,4 @@ public function __construct( $this->start = $start; $this->end = $end; } - - public function getOperator(): string - { - return '$indexOfCP'; - } } diff --git a/src/Builder/Expression/IsArrayOperator.php b/src/Builder/Expression/IsArrayOperator.php index 7a8329acb..abd075103 100644 --- a/src/Builder/Expression/IsArrayOperator.php +++ b/src/Builder/Expression/IsArrayOperator.php @@ -23,6 +23,7 @@ final class IsArrayOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$isArray'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -35,9 +36,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$isArray'; - } } diff --git a/src/Builder/Expression/IsNumberOperator.php b/src/Builder/Expression/IsNumberOperator.php index 65a94800b..a76530242 100644 --- a/src/Builder/Expression/IsNumberOperator.php +++ b/src/Builder/Expression/IsNumberOperator.php @@ -25,6 +25,7 @@ final class IsNumberOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$isNumber'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -37,9 +38,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$isNumber'; - } } diff --git a/src/Builder/Expression/IsoDayOfWeekOperator.php b/src/Builder/Expression/IsoDayOfWeekOperator.php index 68eb77cc2..8bbc8dfe9 100644 --- a/src/Builder/Expression/IsoDayOfWeekOperator.php +++ b/src/Builder/Expression/IsoDayOfWeekOperator.php @@ -24,6 +24,7 @@ final class IsoDayOfWeekOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$isoDayOfWeek'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$isoDayOfWeek'; - } } diff --git a/src/Builder/Expression/IsoWeekOperator.php b/src/Builder/Expression/IsoWeekOperator.php index b86fa89cf..726c53537 100644 --- a/src/Builder/Expression/IsoWeekOperator.php +++ b/src/Builder/Expression/IsoWeekOperator.php @@ -24,6 +24,7 @@ final class IsoWeekOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$isoWeek'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$isoWeek'; - } } diff --git a/src/Builder/Expression/IsoWeekYearOperator.php b/src/Builder/Expression/IsoWeekYearOperator.php index a9df2dc4f..a29e2e8a6 100644 --- a/src/Builder/Expression/IsoWeekYearOperator.php +++ b/src/Builder/Expression/IsoWeekYearOperator.php @@ -24,6 +24,7 @@ final class IsoWeekYearOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$isoWeekYear'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$isoWeekYear'; - } } diff --git a/src/Builder/Expression/LastNOperator.php b/src/Builder/Expression/LastNOperator.php index fe6c65110..0517f92d8 100644 --- a/src/Builder/Expression/LastNOperator.php +++ b/src/Builder/Expression/LastNOperator.php @@ -26,6 +26,7 @@ final class LastNOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$lastN'; public const PROPERTIES = ['n' => 'n', 'input' => 'input']; /** @var ResolvesToInt|int $n An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns. */ @@ -47,9 +48,4 @@ public function __construct(ResolvesToInt|int $n, PackedArray|ResolvesToArray|BS $this->input = $input; } - - public function getOperator(): string - { - return '$lastN'; - } } diff --git a/src/Builder/Expression/LastOperator.php b/src/Builder/Expression/LastOperator.php index 28b913c3b..e7f2b7d46 100644 --- a/src/Builder/Expression/LastOperator.php +++ b/src/Builder/Expression/LastOperator.php @@ -26,6 +26,7 @@ final class LastOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$last'; public const PROPERTIES = ['expression' => 'expression']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $express $this->expression = $expression; } - - public function getOperator(): string - { - return '$last'; - } } diff --git a/src/Builder/Expression/LetOperator.php b/src/Builder/Expression/LetOperator.php index 41d9428ff..3f0fde195 100644 --- a/src/Builder/Expression/LetOperator.php +++ b/src/Builder/Expression/LetOperator.php @@ -26,6 +26,7 @@ final class LetOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$let'; public const PROPERTIES = ['vars' => 'vars', 'in' => 'in']; /** @@ -49,9 +50,4 @@ public function __construct( $this->vars = $vars; $this->in = $in; } - - public function getOperator(): string - { - return '$let'; - } } diff --git a/src/Builder/Expression/LiteralOperator.php b/src/Builder/Expression/LiteralOperator.php index be1d2e0d4..fc80506e4 100644 --- a/src/Builder/Expression/LiteralOperator.php +++ b/src/Builder/Expression/LiteralOperator.php @@ -22,6 +22,7 @@ final class LiteralOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$literal'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value If the value is an expression, $literal does not evaluate the expression but instead returns the unparsed expression. */ @@ -34,9 +35,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$literal'; - } } diff --git a/src/Builder/Expression/LnOperator.php b/src/Builder/Expression/LnOperator.php index a62a522b8..6fe5993e9 100644 --- a/src/Builder/Expression/LnOperator.php +++ b/src/Builder/Expression/LnOperator.php @@ -23,6 +23,7 @@ final class LnOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$ln'; public const PROPERTIES = ['number' => 'number']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $number Any valid expression as long as it resolves to a non-negative number. For more information on expressions, see Expressions. */ @@ -35,9 +36,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $number) { $this->number = $number; } - - public function getOperator(): string - { - return '$ln'; - } } diff --git a/src/Builder/Expression/Log10Operator.php b/src/Builder/Expression/Log10Operator.php index ed097e9a6..ef4a5ec3e 100644 --- a/src/Builder/Expression/Log10Operator.php +++ b/src/Builder/Expression/Log10Operator.php @@ -22,6 +22,7 @@ final class Log10Operator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$log10'; public const PROPERTIES = ['number' => 'number']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $number Any valid expression as long as it resolves to a non-negative number. */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $number) { $this->number = $number; } - - public function getOperator(): string - { - return '$log10'; - } } diff --git a/src/Builder/Expression/LogOperator.php b/src/Builder/Expression/LogOperator.php index 8bd2067f9..99bbfd812 100644 --- a/src/Builder/Expression/LogOperator.php +++ b/src/Builder/Expression/LogOperator.php @@ -22,6 +22,7 @@ final class LogOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$log'; public const PROPERTIES = ['number' => 'number', 'base' => 'base']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $number Any valid expression as long as it resolves to a non-negative number. */ @@ -41,9 +42,4 @@ public function __construct( $this->number = $number; $this->base = $base; } - - public function getOperator(): string - { - return '$log'; - } } diff --git a/src/Builder/Expression/LtOperator.php b/src/Builder/Expression/LtOperator.php index 0dab045fc..7ea54defa 100644 --- a/src/Builder/Expression/LtOperator.php +++ b/src/Builder/Expression/LtOperator.php @@ -23,6 +23,7 @@ final class LtOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$lt'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$lt'; - } } diff --git a/src/Builder/Expression/LteOperator.php b/src/Builder/Expression/LteOperator.php index 2358b2cab..caeec2165 100644 --- a/src/Builder/Expression/LteOperator.php +++ b/src/Builder/Expression/LteOperator.php @@ -23,6 +23,7 @@ final class LteOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$lte'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$lte'; - } } diff --git a/src/Builder/Expression/LtrimOperator.php b/src/Builder/Expression/LtrimOperator.php index 6327a5529..0dd94eaab 100644 --- a/src/Builder/Expression/LtrimOperator.php +++ b/src/Builder/Expression/LtrimOperator.php @@ -22,6 +22,7 @@ final class LtrimOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$ltrim'; public const PROPERTIES = ['input' => 'input', 'chars' => 'chars']; /** @var ResolvesToString|string $input The string to trim. The argument can be any valid expression that resolves to a string. */ @@ -47,9 +48,4 @@ public function __construct( $this->input = $input; $this->chars = $chars; } - - public function getOperator(): string - { - return '$ltrim'; - } } diff --git a/src/Builder/Expression/MapOperator.php b/src/Builder/Expression/MapOperator.php index 1fd98300b..a63685a88 100644 --- a/src/Builder/Expression/MapOperator.php +++ b/src/Builder/Expression/MapOperator.php @@ -30,6 +30,7 @@ final class MapOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$map'; public const PROPERTIES = ['input' => 'input', 'in' => 'in', 'as' => 'as']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input An expression that resolves to an array. */ @@ -59,9 +60,4 @@ public function __construct( $this->in = $in; $this->as = $as; } - - public function getOperator(): string - { - return '$map'; - } } diff --git a/src/Builder/Expression/MaxNOperator.php b/src/Builder/Expression/MaxNOperator.php index 11dd0ba66..f8d387257 100644 --- a/src/Builder/Expression/MaxNOperator.php +++ b/src/Builder/Expression/MaxNOperator.php @@ -26,6 +26,7 @@ final class MaxNOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$maxN'; public const PROPERTIES = ['input' => 'input', 'n' => 'n']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input An expression that resolves to the array from which to return the maximal n elements. */ @@ -47,9 +48,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $input, $this->input = $input; $this->n = $n; } - - public function getOperator(): string - { - return '$maxN'; - } } diff --git a/src/Builder/Expression/MaxOperator.php b/src/Builder/Expression/MaxOperator.php index fee83dcdc..5c1923377 100644 --- a/src/Builder/Expression/MaxOperator.php +++ b/src/Builder/Expression/MaxOperator.php @@ -27,6 +27,7 @@ final class MaxOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$max'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -48,9 +49,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i $this->expression = $expression; } - - public function getOperator(): string - { - return '$max'; - } } diff --git a/src/Builder/Expression/MedianOperator.php b/src/Builder/Expression/MedianOperator.php index 3591950bf..bae54c838 100644 --- a/src/Builder/Expression/MedianOperator.php +++ b/src/Builder/Expression/MedianOperator.php @@ -33,6 +33,7 @@ final class MedianOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$median'; public const PROPERTIES = ['input' => 'input', 'method' => 'method']; /** @var BSONArray|Decimal128|Int64|PackedArray|ResolvesToNumber|array|float|int $input $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it. */ @@ -56,9 +57,4 @@ public function __construct( $this->input = $input; $this->method = $method; } - - public function getOperator(): string - { - return '$median'; - } } diff --git a/src/Builder/Expression/MergeObjectsOperator.php b/src/Builder/Expression/MergeObjectsOperator.php index b5f001971..45e73a59e 100644 --- a/src/Builder/Expression/MergeObjectsOperator.php +++ b/src/Builder/Expression/MergeObjectsOperator.php @@ -26,6 +26,7 @@ final class MergeObjectsOperator implements ResolvesToObject, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$mergeObjects'; public const PROPERTIES = ['document' => 'document']; /** @var list $document Any valid expression that resolves to a document. */ @@ -47,9 +48,4 @@ public function __construct(Document|Serializable|ResolvesToObject|stdClass|arra $this->document = $document; } - - public function getOperator(): string - { - return '$mergeObjects'; - } } diff --git a/src/Builder/Expression/MetaOperator.php b/src/Builder/Expression/MetaOperator.php index f42068b8a..ec1fd63e6 100644 --- a/src/Builder/Expression/MetaOperator.php +++ b/src/Builder/Expression/MetaOperator.php @@ -20,6 +20,7 @@ final class MetaOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$meta'; public const PROPERTIES = ['keyword' => 'keyword']; /** @var string $keyword */ @@ -32,9 +33,4 @@ public function __construct(string $keyword) { $this->keyword = $keyword; } - - public function getOperator(): string - { - return '$meta'; - } } diff --git a/src/Builder/Expression/MillisecondOperator.php b/src/Builder/Expression/MillisecondOperator.php index 3d229a3d8..06d8a4bd8 100644 --- a/src/Builder/Expression/MillisecondOperator.php +++ b/src/Builder/Expression/MillisecondOperator.php @@ -24,6 +24,7 @@ final class MillisecondOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$millisecond'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$millisecond'; - } } diff --git a/src/Builder/Expression/MinNOperator.php b/src/Builder/Expression/MinNOperator.php index a6bff71ef..9d032fe3e 100644 --- a/src/Builder/Expression/MinNOperator.php +++ b/src/Builder/Expression/MinNOperator.php @@ -26,6 +26,7 @@ final class MinNOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$minN'; public const PROPERTIES = ['input' => 'input', 'n' => 'n']; /** @var BSONArray|PackedArray|ResolvesToArray|array $input An expression that resolves to the array from which to return the maximal n elements. */ @@ -47,9 +48,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $input, $this->input = $input; $this->n = $n; } - - public function getOperator(): string - { - return '$minN'; - } } diff --git a/src/Builder/Expression/MinOperator.php b/src/Builder/Expression/MinOperator.php index 95b609128..31f30e807 100644 --- a/src/Builder/Expression/MinOperator.php +++ b/src/Builder/Expression/MinOperator.php @@ -27,6 +27,7 @@ final class MinOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$min'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -48,9 +49,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i $this->expression = $expression; } - - public function getOperator(): string - { - return '$min'; - } } diff --git a/src/Builder/Expression/MinuteOperator.php b/src/Builder/Expression/MinuteOperator.php index d8eed1272..2be3b337d 100644 --- a/src/Builder/Expression/MinuteOperator.php +++ b/src/Builder/Expression/MinuteOperator.php @@ -24,6 +24,7 @@ final class MinuteOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$minute'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$minute'; - } } diff --git a/src/Builder/Expression/ModOperator.php b/src/Builder/Expression/ModOperator.php index 477828530..8a2134fac 100644 --- a/src/Builder/Expression/ModOperator.php +++ b/src/Builder/Expression/ModOperator.php @@ -22,6 +22,7 @@ final class ModOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$mod'; public const PROPERTIES = ['dividend' => 'dividend', 'divisor' => 'divisor']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $dividend The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument. */ @@ -41,9 +42,4 @@ public function __construct( $this->dividend = $dividend; $this->divisor = $divisor; } - - public function getOperator(): string - { - return '$mod'; - } } diff --git a/src/Builder/Expression/MonthOperator.php b/src/Builder/Expression/MonthOperator.php index e11d65ebc..36d1c2b17 100644 --- a/src/Builder/Expression/MonthOperator.php +++ b/src/Builder/Expression/MonthOperator.php @@ -24,6 +24,7 @@ final class MonthOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$month'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$month'; - } } diff --git a/src/Builder/Expression/MultiplyOperator.php b/src/Builder/Expression/MultiplyOperator.php index 609c5bb76..ba2f5882e 100644 --- a/src/Builder/Expression/MultiplyOperator.php +++ b/src/Builder/Expression/MultiplyOperator.php @@ -25,6 +25,7 @@ final class MultiplyOperator implements ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$multiply'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -50,9 +51,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$multiply'; - } } diff --git a/src/Builder/Expression/NeOperator.php b/src/Builder/Expression/NeOperator.php index ed8a4e423..1688d7406 100644 --- a/src/Builder/Expression/NeOperator.php +++ b/src/Builder/Expression/NeOperator.php @@ -23,6 +23,7 @@ final class NeOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$ne'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$ne'; - } } diff --git a/src/Builder/Expression/NotOperator.php b/src/Builder/Expression/NotOperator.php index 2b3b0c024..983fabc80 100644 --- a/src/Builder/Expression/NotOperator.php +++ b/src/Builder/Expression/NotOperator.php @@ -23,6 +23,7 @@ final class NotOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$not'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|ResolvesToBool|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct( ) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$not'; - } } diff --git a/src/Builder/Expression/ObjectToArrayOperator.php b/src/Builder/Expression/ObjectToArrayOperator.php index 6ca01f39b..0685bed27 100644 --- a/src/Builder/Expression/ObjectToArrayOperator.php +++ b/src/Builder/Expression/ObjectToArrayOperator.php @@ -23,6 +23,7 @@ final class ObjectToArrayOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$objectToArray'; public const PROPERTIES = ['object' => 'object']; /** @var Document|ResolvesToObject|Serializable|array|stdClass $object Any valid expression as long as it resolves to a document object. $objectToArray applies to the top-level fields of its argument. If the argument is a document that itself contains embedded document fields, the $objectToArray does not recursively apply to the embedded document fields. */ @@ -35,9 +36,4 @@ public function __construct(Document|Serializable|ResolvesToObject|stdClass|arra { $this->object = $object; } - - public function getOperator(): string - { - return '$objectToArray'; - } } diff --git a/src/Builder/Expression/OrOperator.php b/src/Builder/Expression/OrOperator.php index 85447a484..758e73a70 100644 --- a/src/Builder/Expression/OrOperator.php +++ b/src/Builder/Expression/OrOperator.php @@ -26,6 +26,7 @@ final class OrOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$or'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -48,9 +49,4 @@ public function __construct( $this->expression = $expression; } - - public function getOperator(): string - { - return '$or'; - } } diff --git a/src/Builder/Expression/PercentileOperator.php b/src/Builder/Expression/PercentileOperator.php index fad9e64e5..ab956bac5 100644 --- a/src/Builder/Expression/PercentileOperator.php +++ b/src/Builder/Expression/PercentileOperator.php @@ -36,6 +36,7 @@ final class PercentileOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$percentile'; public const PROPERTIES = ['input' => 'input', 'p' => 'p', 'method' => 'method']; /** @var BSONArray|Decimal128|Int64|PackedArray|ResolvesToNumber|array|float|int $input $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it. */ @@ -73,9 +74,4 @@ public function __construct( $this->p = $p; $this->method = $method; } - - public function getOperator(): string - { - return '$percentile'; - } } diff --git a/src/Builder/Expression/PowOperator.php b/src/Builder/Expression/PowOperator.php index cc6ecdd4f..8cf024023 100644 --- a/src/Builder/Expression/PowOperator.php +++ b/src/Builder/Expression/PowOperator.php @@ -22,6 +22,7 @@ final class PowOperator implements ResolvesToNumber, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$pow'; public const PROPERTIES = ['number' => 'number', 'exponent' => 'exponent']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $number */ @@ -41,9 +42,4 @@ public function __construct( $this->number = $number; $this->exponent = $exponent; } - - public function getOperator(): string - { - return '$pow'; - } } diff --git a/src/Builder/Expression/RadiansToDegreesOperator.php b/src/Builder/Expression/RadiansToDegreesOperator.php index 60717f251..b3764f0ed 100644 --- a/src/Builder/Expression/RadiansToDegreesOperator.php +++ b/src/Builder/Expression/RadiansToDegreesOperator.php @@ -22,6 +22,7 @@ final class RadiansToDegreesOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$radiansToDegrees'; public const PROPERTIES = ['expression' => 'expression']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $expression */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$radiansToDegrees'; - } } diff --git a/src/Builder/Expression/RandOperator.php b/src/Builder/Expression/RandOperator.php index 02c41c805..26da27637 100644 --- a/src/Builder/Expression/RandOperator.php +++ b/src/Builder/Expression/RandOperator.php @@ -20,13 +20,9 @@ final class RandOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$rand'; public function __construct() { } - - public function getOperator(): string - { - return '$rand'; - } } diff --git a/src/Builder/Expression/RangeOperator.php b/src/Builder/Expression/RangeOperator.php index 86f638554..cbb0e32e7 100644 --- a/src/Builder/Expression/RangeOperator.php +++ b/src/Builder/Expression/RangeOperator.php @@ -21,6 +21,7 @@ final class RangeOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$range'; public const PROPERTIES = ['start' => 'start', 'end' => 'end', 'step' => 'step']; /** @var ResolvesToInt|int $start An integer that specifies the start of the sequence. Can be any valid expression that resolves to an integer. */ @@ -46,9 +47,4 @@ public function __construct( $this->end = $end; $this->step = $step; } - - public function getOperator(): string - { - return '$range'; - } } diff --git a/src/Builder/Expression/ReduceOperator.php b/src/Builder/Expression/ReduceOperator.php index 2652e5501..c35b2b530 100644 --- a/src/Builder/Expression/ReduceOperator.php +++ b/src/Builder/Expression/ReduceOperator.php @@ -29,6 +29,7 @@ final class ReduceOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$reduce'; public const PROPERTIES = ['input' => 'input', 'initialValue' => 'initialValue', 'in' => 'in']; /** @@ -72,9 +73,4 @@ public function __construct( $this->initialValue = $initialValue; $this->in = $in; } - - public function getOperator(): string - { - return '$reduce'; - } } diff --git a/src/Builder/Expression/RegexFindAllOperator.php b/src/Builder/Expression/RegexFindAllOperator.php index 20cdc69ae..e6e36a9fb 100644 --- a/src/Builder/Expression/RegexFindAllOperator.php +++ b/src/Builder/Expression/RegexFindAllOperator.php @@ -23,6 +23,7 @@ final class RegexFindAllOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$regexFindAll'; public const PROPERTIES = ['input' => 'input', 'regex' => 'regex', 'options' => 'options']; /** @var ResolvesToString|string $input The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string. */ @@ -48,9 +49,4 @@ public function __construct( $this->regex = $regex; $this->options = $options; } - - public function getOperator(): string - { - return '$regexFindAll'; - } } diff --git a/src/Builder/Expression/RegexFindOperator.php b/src/Builder/Expression/RegexFindOperator.php index ff6baa3d1..81f713f35 100644 --- a/src/Builder/Expression/RegexFindOperator.php +++ b/src/Builder/Expression/RegexFindOperator.php @@ -23,6 +23,7 @@ final class RegexFindOperator implements ResolvesToObject, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$regexFind'; public const PROPERTIES = ['input' => 'input', 'regex' => 'regex', 'options' => 'options']; /** @var ResolvesToString|string $input The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string. */ @@ -48,9 +49,4 @@ public function __construct( $this->regex = $regex; $this->options = $options; } - - public function getOperator(): string - { - return '$regexFind'; - } } diff --git a/src/Builder/Expression/RegexMatchOperator.php b/src/Builder/Expression/RegexMatchOperator.php index 71c246fcc..50fbb1766 100644 --- a/src/Builder/Expression/RegexMatchOperator.php +++ b/src/Builder/Expression/RegexMatchOperator.php @@ -23,6 +23,7 @@ final class RegexMatchOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$regexMatch'; public const PROPERTIES = ['input' => 'input', 'regex' => 'regex', 'options' => 'options']; /** @var ResolvesToString|string $input The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string. */ @@ -48,9 +49,4 @@ public function __construct( $this->regex = $regex; $this->options = $options; } - - public function getOperator(): string - { - return '$regexMatch'; - } } diff --git a/src/Builder/Expression/ReplaceAllOperator.php b/src/Builder/Expression/ReplaceAllOperator.php index 29a57e282..14cfb17ea 100644 --- a/src/Builder/Expression/ReplaceAllOperator.php +++ b/src/Builder/Expression/ReplaceAllOperator.php @@ -22,6 +22,7 @@ final class ReplaceAllOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$replaceAll'; public const PROPERTIES = ['input' => 'input', 'find' => 'find', 'replacement' => 'replacement']; /** @var ResolvesToNull|ResolvesToString|null|string $input The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null. */ @@ -47,9 +48,4 @@ public function __construct( $this->find = $find; $this->replacement = $replacement; } - - public function getOperator(): string - { - return '$replaceAll'; - } } diff --git a/src/Builder/Expression/ReplaceOneOperator.php b/src/Builder/Expression/ReplaceOneOperator.php index c16ae80bd..0237aacc0 100644 --- a/src/Builder/Expression/ReplaceOneOperator.php +++ b/src/Builder/Expression/ReplaceOneOperator.php @@ -21,6 +21,7 @@ final class ReplaceOneOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$replaceOne'; public const PROPERTIES = ['input' => 'input', 'find' => 'find', 'replacement' => 'replacement']; /** @var ResolvesToNull|ResolvesToString|null|string $input The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null. */ @@ -46,9 +47,4 @@ public function __construct( $this->find = $find; $this->replacement = $replacement; } - - public function getOperator(): string - { - return '$replaceOne'; - } } diff --git a/src/Builder/Expression/ReverseArrayOperator.php b/src/Builder/Expression/ReverseArrayOperator.php index 01a22410d..be6a910d4 100644 --- a/src/Builder/Expression/ReverseArrayOperator.php +++ b/src/Builder/Expression/ReverseArrayOperator.php @@ -26,6 +26,7 @@ final class ReverseArrayOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$reverseArray'; public const PROPERTIES = ['expression' => 'expression']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression The argument can be any valid expression as long as it resolves to an array. */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $express $this->expression = $expression; } - - public function getOperator(): string - { - return '$reverseArray'; - } } diff --git a/src/Builder/Expression/RoundOperator.php b/src/Builder/Expression/RoundOperator.php index 6df8dfdfc..21638126d 100644 --- a/src/Builder/Expression/RoundOperator.php +++ b/src/Builder/Expression/RoundOperator.php @@ -23,6 +23,7 @@ final class RoundOperator implements ResolvesToInt, ResolvesToDouble, ResolvesToDecimal, ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$round'; public const PROPERTIES = ['number' => 'number', 'place' => 'place']; /** @@ -46,9 +47,4 @@ public function __construct( $this->number = $number; $this->place = $place; } - - public function getOperator(): string - { - return '$round'; - } } diff --git a/src/Builder/Expression/RtrimOperator.php b/src/Builder/Expression/RtrimOperator.php index b48272947..46824f98a 100644 --- a/src/Builder/Expression/RtrimOperator.php +++ b/src/Builder/Expression/RtrimOperator.php @@ -21,6 +21,7 @@ final class RtrimOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$rtrim'; public const PROPERTIES = ['input' => 'input', 'chars' => 'chars']; /** @var ResolvesToString|string $input The string to trim. The argument can be any valid expression that resolves to a string. */ @@ -46,9 +47,4 @@ public function __construct( $this->input = $input; $this->chars = $chars; } - - public function getOperator(): string - { - return '$rtrim'; - } } diff --git a/src/Builder/Expression/SecondOperator.php b/src/Builder/Expression/SecondOperator.php index 63df33467..720d57a92 100644 --- a/src/Builder/Expression/SecondOperator.php +++ b/src/Builder/Expression/SecondOperator.php @@ -24,6 +24,7 @@ final class SecondOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$second'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$second'; - } } diff --git a/src/Builder/Expression/SetDifferenceOperator.php b/src/Builder/Expression/SetDifferenceOperator.php index f340c3668..2b4fde506 100644 --- a/src/Builder/Expression/SetDifferenceOperator.php +++ b/src/Builder/Expression/SetDifferenceOperator.php @@ -26,6 +26,7 @@ final class SetDifferenceOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$setDifference'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression1 The arguments can be any valid expression as long as they each resolve to an array. */ @@ -53,9 +54,4 @@ public function __construct( $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$setDifference'; - } } diff --git a/src/Builder/Expression/SetEqualsOperator.php b/src/Builder/Expression/SetEqualsOperator.php index 5099f33e4..b7eca0089 100644 --- a/src/Builder/Expression/SetEqualsOperator.php +++ b/src/Builder/Expression/SetEqualsOperator.php @@ -25,6 +25,7 @@ final class SetEqualsOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$setEquals'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -46,9 +47,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$setEquals'; - } } diff --git a/src/Builder/Expression/SetFieldOperator.php b/src/Builder/Expression/SetFieldOperator.php index 921c2f51c..08559253e 100644 --- a/src/Builder/Expression/SetFieldOperator.php +++ b/src/Builder/Expression/SetFieldOperator.php @@ -26,6 +26,7 @@ final class SetFieldOperator implements ResolvesToObject, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$setField'; public const PROPERTIES = ['field' => 'field', 'input' => 'input', 'value' => 'value']; /** @var ResolvesToString|string $field Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant. */ @@ -55,9 +56,4 @@ public function __construct( $this->input = $input; $this->value = $value; } - - public function getOperator(): string - { - return '$setField'; - } } diff --git a/src/Builder/Expression/SetIntersectionOperator.php b/src/Builder/Expression/SetIntersectionOperator.php index a5d8116a4..3ec2c03dd 100644 --- a/src/Builder/Expression/SetIntersectionOperator.php +++ b/src/Builder/Expression/SetIntersectionOperator.php @@ -25,6 +25,7 @@ final class SetIntersectionOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$setIntersection'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -46,9 +47,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$setIntersection'; - } } diff --git a/src/Builder/Expression/SetIsSubsetOperator.php b/src/Builder/Expression/SetIsSubsetOperator.php index 7c2baeb40..76263d138 100644 --- a/src/Builder/Expression/SetIsSubsetOperator.php +++ b/src/Builder/Expression/SetIsSubsetOperator.php @@ -26,6 +26,7 @@ final class SetIsSubsetOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$setIsSubset'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression1 */ @@ -53,9 +54,4 @@ public function __construct( $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$setIsSubset'; - } } diff --git a/src/Builder/Expression/SetUnionOperator.php b/src/Builder/Expression/SetUnionOperator.php index 132e2701b..62f2cb871 100644 --- a/src/Builder/Expression/SetUnionOperator.php +++ b/src/Builder/Expression/SetUnionOperator.php @@ -25,6 +25,7 @@ final class SetUnionOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$setUnion'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -46,9 +47,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$setUnion'; - } } diff --git a/src/Builder/Expression/SinOperator.php b/src/Builder/Expression/SinOperator.php index 76f72f4f0..9ba0d998e 100644 --- a/src/Builder/Expression/SinOperator.php +++ b/src/Builder/Expression/SinOperator.php @@ -22,6 +22,7 @@ final class SinOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sin'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$sin'; - } } diff --git a/src/Builder/Expression/SinhOperator.php b/src/Builder/Expression/SinhOperator.php index d5dfa929c..e04ff231d 100644 --- a/src/Builder/Expression/SinhOperator.php +++ b/src/Builder/Expression/SinhOperator.php @@ -22,6 +22,7 @@ final class SinhOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sinh'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$sinh'; - } } diff --git a/src/Builder/Expression/SizeOperator.php b/src/Builder/Expression/SizeOperator.php index 964f420ac..7ff3b83f7 100644 --- a/src/Builder/Expression/SizeOperator.php +++ b/src/Builder/Expression/SizeOperator.php @@ -26,6 +26,7 @@ final class SizeOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$size'; public const PROPERTIES = ['expression' => 'expression']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression The argument for $size can be any expression as long as it resolves to an array. */ @@ -42,9 +43,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $express $this->expression = $expression; } - - public function getOperator(): string - { - return '$size'; - } } diff --git a/src/Builder/Expression/SliceOperator.php b/src/Builder/Expression/SliceOperator.php index 96599fcb1..220810428 100644 --- a/src/Builder/Expression/SliceOperator.php +++ b/src/Builder/Expression/SliceOperator.php @@ -27,6 +27,7 @@ final class SliceOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$slice'; public const PROPERTIES = ['expression' => 'expression', 'n' => 'n', 'position' => 'position']; /** @var BSONArray|PackedArray|ResolvesToArray|array $expression Any valid expression as long as it resolves to an array. */ @@ -68,9 +69,4 @@ public function __construct( $this->n = $n; $this->position = $position; } - - public function getOperator(): string - { - return '$slice'; - } } diff --git a/src/Builder/Expression/SortArrayOperator.php b/src/Builder/Expression/SortArrayOperator.php index f85d07cc4..b58e2b65e 100644 --- a/src/Builder/Expression/SortArrayOperator.php +++ b/src/Builder/Expression/SortArrayOperator.php @@ -30,6 +30,7 @@ final class SortArrayOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$sortArray'; public const PROPERTIES = ['input' => 'input', 'sortBy' => 'sortBy']; /** @@ -59,9 +60,4 @@ public function __construct( $this->input = $input; $this->sortBy = $sortBy; } - - public function getOperator(): string - { - return '$sortArray'; - } } diff --git a/src/Builder/Expression/SplitOperator.php b/src/Builder/Expression/SplitOperator.php index e1e0b0cca..2e54ef5a5 100644 --- a/src/Builder/Expression/SplitOperator.php +++ b/src/Builder/Expression/SplitOperator.php @@ -20,6 +20,7 @@ final class SplitOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$split'; public const PROPERTIES = ['string' => 'string', 'delimiter' => 'delimiter']; /** @var ResolvesToString|string $string The string to be split. string expression can be any valid expression as long as it resolves to a string. */ @@ -37,9 +38,4 @@ public function __construct(ResolvesToString|string $string, ResolvesToString|st $this->string = $string; $this->delimiter = $delimiter; } - - public function getOperator(): string - { - return '$split'; - } } diff --git a/src/Builder/Expression/SqrtOperator.php b/src/Builder/Expression/SqrtOperator.php index 62f73fe0b..90a907ef5 100644 --- a/src/Builder/Expression/SqrtOperator.php +++ b/src/Builder/Expression/SqrtOperator.php @@ -22,6 +22,7 @@ final class SqrtOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sqrt'; public const PROPERTIES = ['number' => 'number']; /** @var Decimal128|Int64|ResolvesToNumber|float|int $number The argument can be any valid expression as long as it resolves to a non-negative number. */ @@ -34,9 +35,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $number) { $this->number = $number; } - - public function getOperator(): string - { - return '$sqrt'; - } } diff --git a/src/Builder/Expression/StdDevPopOperator.php b/src/Builder/Expression/StdDevPopOperator.php index ab6bccecf..e966f8e84 100644 --- a/src/Builder/Expression/StdDevPopOperator.php +++ b/src/Builder/Expression/StdDevPopOperator.php @@ -27,6 +27,7 @@ final class StdDevPopOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$stdDevPop'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -48,9 +49,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$stdDevPop'; - } } diff --git a/src/Builder/Expression/StdDevSampOperator.php b/src/Builder/Expression/StdDevSampOperator.php index 0c4e31a68..1c897728b 100644 --- a/src/Builder/Expression/StdDevSampOperator.php +++ b/src/Builder/Expression/StdDevSampOperator.php @@ -26,6 +26,7 @@ final class StdDevSampOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$stdDevSamp'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -47,9 +48,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int ...$expr $this->expression = $expression; } - - public function getOperator(): string - { - return '$stdDevSamp'; - } } diff --git a/src/Builder/Expression/StrLenBytesOperator.php b/src/Builder/Expression/StrLenBytesOperator.php index 26e899e99..39ae8dbe8 100644 --- a/src/Builder/Expression/StrLenBytesOperator.php +++ b/src/Builder/Expression/StrLenBytesOperator.php @@ -20,6 +20,7 @@ final class StrLenBytesOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$strLenBytes'; public const PROPERTIES = ['expression' => 'expression']; /** @var ResolvesToString|string $expression */ @@ -32,9 +33,4 @@ public function __construct(ResolvesToString|string $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$strLenBytes'; - } } diff --git a/src/Builder/Expression/StrLenCPOperator.php b/src/Builder/Expression/StrLenCPOperator.php index b6d97c37a..8add7c3f8 100644 --- a/src/Builder/Expression/StrLenCPOperator.php +++ b/src/Builder/Expression/StrLenCPOperator.php @@ -20,6 +20,7 @@ final class StrLenCPOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$strLenCP'; public const PROPERTIES = ['expression' => 'expression']; /** @var ResolvesToString|string $expression */ @@ -32,9 +33,4 @@ public function __construct(ResolvesToString|string $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$strLenCP'; - } } diff --git a/src/Builder/Expression/StrcasecmpOperator.php b/src/Builder/Expression/StrcasecmpOperator.php index 2090cdda1..efcb0e41b 100644 --- a/src/Builder/Expression/StrcasecmpOperator.php +++ b/src/Builder/Expression/StrcasecmpOperator.php @@ -20,6 +20,7 @@ final class StrcasecmpOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$strcasecmp'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var ResolvesToString|string $expression1 */ @@ -37,9 +38,4 @@ public function __construct(ResolvesToString|string $expression1, ResolvesToStri $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$strcasecmp'; - } } diff --git a/src/Builder/Expression/SubstrBytesOperator.php b/src/Builder/Expression/SubstrBytesOperator.php index 9d20afe67..72d5ee8c5 100644 --- a/src/Builder/Expression/SubstrBytesOperator.php +++ b/src/Builder/Expression/SubstrBytesOperator.php @@ -20,6 +20,7 @@ final class SubstrBytesOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$substrBytes'; public const PROPERTIES = ['string' => 'string', 'start' => 'start', 'length' => 'length']; /** @var ResolvesToString|string $string */ @@ -42,9 +43,4 @@ public function __construct(ResolvesToString|string $string, ResolvesToInt|int $ $this->start = $start; $this->length = $length; } - - public function getOperator(): string - { - return '$substrBytes'; - } } diff --git a/src/Builder/Expression/SubstrCPOperator.php b/src/Builder/Expression/SubstrCPOperator.php index 93af8d80c..ee01339d2 100644 --- a/src/Builder/Expression/SubstrCPOperator.php +++ b/src/Builder/Expression/SubstrCPOperator.php @@ -20,6 +20,7 @@ final class SubstrCPOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$substrCP'; public const PROPERTIES = ['string' => 'string', 'start' => 'start', 'length' => 'length']; /** @var ResolvesToString|string $string */ @@ -42,9 +43,4 @@ public function __construct(ResolvesToString|string $string, ResolvesToInt|int $ $this->start = $start; $this->length = $length; } - - public function getOperator(): string - { - return '$substrCP'; - } } diff --git a/src/Builder/Expression/SubstrOperator.php b/src/Builder/Expression/SubstrOperator.php index 6f34320dc..10ece1704 100644 --- a/src/Builder/Expression/SubstrOperator.php +++ b/src/Builder/Expression/SubstrOperator.php @@ -20,6 +20,7 @@ final class SubstrOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$substr'; public const PROPERTIES = ['string' => 'string', 'start' => 'start', 'length' => 'length']; /** @var ResolvesToString|string $string */ @@ -42,9 +43,4 @@ public function __construct(ResolvesToString|string $string, ResolvesToInt|int $ $this->start = $start; $this->length = $length; } - - public function getOperator(): string - { - return '$substr'; - } } diff --git a/src/Builder/Expression/SubtractOperator.php b/src/Builder/Expression/SubtractOperator.php index 35b1075d4..8a7187b78 100644 --- a/src/Builder/Expression/SubtractOperator.php +++ b/src/Builder/Expression/SubtractOperator.php @@ -23,6 +23,7 @@ final class SubtractOperator implements ResolvesToInt, ResolvesToLong, ResolvesToDouble, ResolvesToDecimal, ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$subtract'; public const PROPERTIES = ['expression1' => 'expression1', 'expression2' => 'expression2']; /** @var Decimal128|Int64|ResolvesToDate|ResolvesToNumber|UTCDateTime|float|int $expression1 */ @@ -42,9 +43,4 @@ public function __construct( $this->expression1 = $expression1; $this->expression2 = $expression2; } - - public function getOperator(): string - { - return '$subtract'; - } } diff --git a/src/Builder/Expression/SumOperator.php b/src/Builder/Expression/SumOperator.php index ccf797785..99d90de28 100644 --- a/src/Builder/Expression/SumOperator.php +++ b/src/Builder/Expression/SumOperator.php @@ -28,6 +28,7 @@ final class SumOperator implements ResolvesToNumber, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sum'; public const PROPERTIES = ['expression' => 'expression']; /** @var list $expression */ @@ -50,9 +51,4 @@ public function __construct( $this->expression = $expression; } - - public function getOperator(): string - { - return '$sum'; - } } diff --git a/src/Builder/Expression/SwitchOperator.php b/src/Builder/Expression/SwitchOperator.php index e8450ebdb..4179a5d52 100644 --- a/src/Builder/Expression/SwitchOperator.php +++ b/src/Builder/Expression/SwitchOperator.php @@ -30,6 +30,7 @@ final class SwitchOperator implements ResolvesToAny, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$switch'; public const PROPERTIES = ['branches' => 'branches', 'default' => 'default']; /** @@ -65,9 +66,4 @@ public function __construct( $this->branches = $branches; $this->default = $default; } - - public function getOperator(): string - { - return '$switch'; - } } diff --git a/src/Builder/Expression/TanOperator.php b/src/Builder/Expression/TanOperator.php index f0f8c9bce..bab27a3a5 100644 --- a/src/Builder/Expression/TanOperator.php +++ b/src/Builder/Expression/TanOperator.php @@ -22,6 +22,7 @@ final class TanOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$tan'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$tan'; - } } diff --git a/src/Builder/Expression/TanhOperator.php b/src/Builder/Expression/TanhOperator.php index e94baa97f..5e31a67d1 100644 --- a/src/Builder/Expression/TanhOperator.php +++ b/src/Builder/Expression/TanhOperator.php @@ -22,6 +22,7 @@ final class TanhOperator implements ResolvesToDouble, ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$tanh'; public const PROPERTIES = ['expression' => 'expression']; /** @@ -38,9 +39,4 @@ public function __construct(Decimal128|Int64|ResolvesToNumber|float|int $express { $this->expression = $expression; } - - public function getOperator(): string - { - return '$tanh'; - } } diff --git a/src/Builder/Expression/ToBoolOperator.php b/src/Builder/Expression/ToBoolOperator.php index 364a6f805..15416abc6 100644 --- a/src/Builder/Expression/ToBoolOperator.php +++ b/src/Builder/Expression/ToBoolOperator.php @@ -24,6 +24,7 @@ final class ToBoolOperator implements ResolvesToBool, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toBool'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toBool'; - } } diff --git a/src/Builder/Expression/ToDateOperator.php b/src/Builder/Expression/ToDateOperator.php index d94782a55..10e36c4af 100644 --- a/src/Builder/Expression/ToDateOperator.php +++ b/src/Builder/Expression/ToDateOperator.php @@ -24,6 +24,7 @@ final class ToDateOperator implements ResolvesToDate, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toDate'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toDate'; - } } diff --git a/src/Builder/Expression/ToDecimalOperator.php b/src/Builder/Expression/ToDecimalOperator.php index f4e5ee3cd..a10075ef6 100644 --- a/src/Builder/Expression/ToDecimalOperator.php +++ b/src/Builder/Expression/ToDecimalOperator.php @@ -24,6 +24,7 @@ final class ToDecimalOperator implements ResolvesToDecimal, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toDecimal'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toDecimal'; - } } diff --git a/src/Builder/Expression/ToDoubleOperator.php b/src/Builder/Expression/ToDoubleOperator.php index c411a52d5..0b90d8732 100644 --- a/src/Builder/Expression/ToDoubleOperator.php +++ b/src/Builder/Expression/ToDoubleOperator.php @@ -24,6 +24,7 @@ final class ToDoubleOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toDouble'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toDouble'; - } } diff --git a/src/Builder/Expression/ToHashedIndexKeyOperator.php b/src/Builder/Expression/ToHashedIndexKeyOperator.php index ad41fc8b1..c6219e0dd 100644 --- a/src/Builder/Expression/ToHashedIndexKeyOperator.php +++ b/src/Builder/Expression/ToHashedIndexKeyOperator.php @@ -23,6 +23,7 @@ final class ToHashedIndexKeyOperator implements ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toHashedIndexKey'; public const PROPERTIES = ['value' => 'value']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $value key or string to hash */ @@ -35,9 +36,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->value = $value; } - - public function getOperator(): string - { - return '$toHashedIndexKey'; - } } diff --git a/src/Builder/Expression/ToIntOperator.php b/src/Builder/Expression/ToIntOperator.php index 1d7f6538a..b4cd77f20 100644 --- a/src/Builder/Expression/ToIntOperator.php +++ b/src/Builder/Expression/ToIntOperator.php @@ -24,6 +24,7 @@ final class ToIntOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toInt'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toInt'; - } } diff --git a/src/Builder/Expression/ToLongOperator.php b/src/Builder/Expression/ToLongOperator.php index 54acf0052..a386d0c63 100644 --- a/src/Builder/Expression/ToLongOperator.php +++ b/src/Builder/Expression/ToLongOperator.php @@ -24,6 +24,7 @@ final class ToLongOperator implements ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toLong'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toLong'; - } } diff --git a/src/Builder/Expression/ToLowerOperator.php b/src/Builder/Expression/ToLowerOperator.php index 83ff37e66..500605889 100644 --- a/src/Builder/Expression/ToLowerOperator.php +++ b/src/Builder/Expression/ToLowerOperator.php @@ -20,6 +20,7 @@ final class ToLowerOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toLower'; public const PROPERTIES = ['expression' => 'expression']; /** @var ResolvesToString|string $expression */ @@ -32,9 +33,4 @@ public function __construct(ResolvesToString|string $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toLower'; - } } diff --git a/src/Builder/Expression/ToObjectIdOperator.php b/src/Builder/Expression/ToObjectIdOperator.php index f820a3d55..cdc95d275 100644 --- a/src/Builder/Expression/ToObjectIdOperator.php +++ b/src/Builder/Expression/ToObjectIdOperator.php @@ -24,6 +24,7 @@ final class ToObjectIdOperator implements ResolvesToObjectId, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toObjectId'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toObjectId'; - } } diff --git a/src/Builder/Expression/ToStringOperator.php b/src/Builder/Expression/ToStringOperator.php index 8c0a47bbf..802112cb6 100644 --- a/src/Builder/Expression/ToStringOperator.php +++ b/src/Builder/Expression/ToStringOperator.php @@ -24,6 +24,7 @@ final class ToStringOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toString'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toString'; - } } diff --git a/src/Builder/Expression/ToUpperOperator.php b/src/Builder/Expression/ToUpperOperator.php index 93e896b09..604711964 100644 --- a/src/Builder/Expression/ToUpperOperator.php +++ b/src/Builder/Expression/ToUpperOperator.php @@ -20,6 +20,7 @@ final class ToUpperOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$toUpper'; public const PROPERTIES = ['expression' => 'expression']; /** @var ResolvesToString|string $expression */ @@ -32,9 +33,4 @@ public function __construct(ResolvesToString|string $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$toUpper'; - } } diff --git a/src/Builder/Expression/TrimOperator.php b/src/Builder/Expression/TrimOperator.php index c524bdfe0..0b210e467 100644 --- a/src/Builder/Expression/TrimOperator.php +++ b/src/Builder/Expression/TrimOperator.php @@ -22,6 +22,7 @@ final class TrimOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$trim'; public const PROPERTIES = ['input' => 'input', 'chars' => 'chars']; /** @var ResolvesToString|string $input The string to trim. The argument can be any valid expression that resolves to a string. */ @@ -47,9 +48,4 @@ public function __construct( $this->input = $input; $this->chars = $chars; } - - public function getOperator(): string - { - return '$trim'; - } } diff --git a/src/Builder/Expression/TruncOperator.php b/src/Builder/Expression/TruncOperator.php index df988e622..c6db92b34 100644 --- a/src/Builder/Expression/TruncOperator.php +++ b/src/Builder/Expression/TruncOperator.php @@ -23,6 +23,7 @@ final class TruncOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$trunc'; public const PROPERTIES = ['number' => 'number', 'place' => 'place']; /** @@ -46,9 +47,4 @@ public function __construct( $this->number = $number; $this->place = $place; } - - public function getOperator(): string - { - return '$trunc'; - } } diff --git a/src/Builder/Expression/TsIncrementOperator.php b/src/Builder/Expression/TsIncrementOperator.php index 677a30375..b39d897bc 100644 --- a/src/Builder/Expression/TsIncrementOperator.php +++ b/src/Builder/Expression/TsIncrementOperator.php @@ -22,6 +22,7 @@ final class TsIncrementOperator implements ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$tsIncrement'; public const PROPERTIES = ['expression' => 'expression']; /** @var ResolvesToTimestamp|Timestamp|int $expression */ @@ -34,9 +35,4 @@ public function __construct(Timestamp|ResolvesToTimestamp|int $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$tsIncrement'; - } } diff --git a/src/Builder/Expression/TsSecondOperator.php b/src/Builder/Expression/TsSecondOperator.php index 3c3a995d8..71af2b803 100644 --- a/src/Builder/Expression/TsSecondOperator.php +++ b/src/Builder/Expression/TsSecondOperator.php @@ -22,6 +22,7 @@ final class TsSecondOperator implements ResolvesToLong, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$tsSecond'; public const PROPERTIES = ['expression' => 'expression']; /** @var ResolvesToTimestamp|Timestamp|int $expression */ @@ -34,9 +35,4 @@ public function __construct(Timestamp|ResolvesToTimestamp|int $expression) { $this->expression = $expression; } - - public function getOperator(): string - { - return '$tsSecond'; - } } diff --git a/src/Builder/Expression/TypeOperator.php b/src/Builder/Expression/TypeOperator.php index 516b1a0af..34457be7c 100644 --- a/src/Builder/Expression/TypeOperator.php +++ b/src/Builder/Expression/TypeOperator.php @@ -23,6 +23,7 @@ final class TypeOperator implements ResolvesToString, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$type'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -35,9 +36,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$type'; - } } diff --git a/src/Builder/Expression/UnsetFieldOperator.php b/src/Builder/Expression/UnsetFieldOperator.php index da5fdf4ac..6b040e2c4 100644 --- a/src/Builder/Expression/UnsetFieldOperator.php +++ b/src/Builder/Expression/UnsetFieldOperator.php @@ -24,6 +24,7 @@ final class UnsetFieldOperator implements ResolvesToObject, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$unsetField'; public const PROPERTIES = ['field' => 'field', 'input' => 'input']; /** @var ResolvesToString|string $field Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant. */ @@ -43,9 +44,4 @@ public function __construct( $this->field = $field; $this->input = $input; } - - public function getOperator(): string - { - return '$unsetField'; - } } diff --git a/src/Builder/Expression/WeekOperator.php b/src/Builder/Expression/WeekOperator.php index 006e3371d..2d58d0509 100644 --- a/src/Builder/Expression/WeekOperator.php +++ b/src/Builder/Expression/WeekOperator.php @@ -24,6 +24,7 @@ final class WeekOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$week'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$week'; - } } diff --git a/src/Builder/Expression/YearOperator.php b/src/Builder/Expression/YearOperator.php index 4b7d98f7f..57fcb35ae 100644 --- a/src/Builder/Expression/YearOperator.php +++ b/src/Builder/Expression/YearOperator.php @@ -24,6 +24,7 @@ final class YearOperator implements ResolvesToInt, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$year'; public const PROPERTIES = ['date' => 'date', 'timezone' => 'timezone']; /** @var ObjectId|ResolvesToDate|ResolvesToObjectId|ResolvesToTimestamp|Timestamp|UTCDateTime|int $date The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. */ @@ -43,9 +44,4 @@ public function __construct( $this->date = $date; $this->timezone = $timezone; } - - public function getOperator(): string - { - return '$year'; - } } diff --git a/src/Builder/Expression/ZipOperator.php b/src/Builder/Expression/ZipOperator.php index 591c0c125..742b7e6bf 100644 --- a/src/Builder/Expression/ZipOperator.php +++ b/src/Builder/Expression/ZipOperator.php @@ -27,6 +27,7 @@ final class ZipOperator implements ResolvesToArray, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$zip'; public const PROPERTIES = ['inputs' => 'inputs', 'useLongestLength' => 'useLongestLength', 'defaults' => 'defaults']; /** @@ -76,9 +77,4 @@ public function __construct( $this->defaults = $defaults; } - - public function getOperator(): string - { - return '$zip'; - } } diff --git a/src/Builder/Query/AllOperator.php b/src/Builder/Query/AllOperator.php index 558cfea3b..db84daf0a 100644 --- a/src/Builder/Query/AllOperator.php +++ b/src/Builder/Query/AllOperator.php @@ -26,6 +26,7 @@ final class AllOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$all'; public const PROPERTIES = ['value' => 'value']; /** @var list $value */ @@ -47,9 +48,4 @@ public function __construct(Type|FieldQueryInterface|stdClass|array|bool|float|i $this->value = $value; } - - public function getOperator(): string - { - return '$all'; - } } diff --git a/src/Builder/Query/AndOperator.php b/src/Builder/Query/AndOperator.php index 7ed9b0d6d..8738591be 100644 --- a/src/Builder/Query/AndOperator.php +++ b/src/Builder/Query/AndOperator.php @@ -24,6 +24,7 @@ final class AndOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$and'; public const PROPERTIES = ['queries' => 'queries']; /** @var list $queries */ @@ -45,9 +46,4 @@ public function __construct(QueryInterface|array ...$queries) $this->queries = $queries; } - - public function getOperator(): string - { - return '$and'; - } } diff --git a/src/Builder/Query/BitsAllClearOperator.php b/src/Builder/Query/BitsAllClearOperator.php index ad781b6bd..072c031bb 100644 --- a/src/Builder/Query/BitsAllClearOperator.php +++ b/src/Builder/Query/BitsAllClearOperator.php @@ -28,6 +28,7 @@ final class BitsAllClearOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitsAllClear'; public const PROPERTIES = ['bitmask' => 'bitmask']; /** @var BSONArray|Binary|PackedArray|array|int|string $bitmask */ @@ -44,9 +45,4 @@ public function __construct(Binary|PackedArray|BSONArray|array|int|string $bitma $this->bitmask = $bitmask; } - - public function getOperator(): string - { - return '$bitsAllClear'; - } } diff --git a/src/Builder/Query/BitsAllSetOperator.php b/src/Builder/Query/BitsAllSetOperator.php index f28d7aaaa..a90e12f35 100644 --- a/src/Builder/Query/BitsAllSetOperator.php +++ b/src/Builder/Query/BitsAllSetOperator.php @@ -28,6 +28,7 @@ final class BitsAllSetOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitsAllSet'; public const PROPERTIES = ['bitmask' => 'bitmask']; /** @var BSONArray|Binary|PackedArray|array|int|string $bitmask */ @@ -44,9 +45,4 @@ public function __construct(Binary|PackedArray|BSONArray|array|int|string $bitma $this->bitmask = $bitmask; } - - public function getOperator(): string - { - return '$bitsAllSet'; - } } diff --git a/src/Builder/Query/BitsAnyClearOperator.php b/src/Builder/Query/BitsAnyClearOperator.php index cf6a4baa1..0ae56d93a 100644 --- a/src/Builder/Query/BitsAnyClearOperator.php +++ b/src/Builder/Query/BitsAnyClearOperator.php @@ -28,6 +28,7 @@ final class BitsAnyClearOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitsAnyClear'; public const PROPERTIES = ['bitmask' => 'bitmask']; /** @var BSONArray|Binary|PackedArray|array|int|string $bitmask */ @@ -44,9 +45,4 @@ public function __construct(Binary|PackedArray|BSONArray|array|int|string $bitma $this->bitmask = $bitmask; } - - public function getOperator(): string - { - return '$bitsAnyClear'; - } } diff --git a/src/Builder/Query/BitsAnySetOperator.php b/src/Builder/Query/BitsAnySetOperator.php index 64a3e3e48..5a202c9d4 100644 --- a/src/Builder/Query/BitsAnySetOperator.php +++ b/src/Builder/Query/BitsAnySetOperator.php @@ -28,6 +28,7 @@ final class BitsAnySetOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$bitsAnySet'; public const PROPERTIES = ['bitmask' => 'bitmask']; /** @var BSONArray|Binary|PackedArray|array|int|string $bitmask */ @@ -44,9 +45,4 @@ public function __construct(Binary|PackedArray|BSONArray|array|int|string $bitma $this->bitmask = $bitmask; } - - public function getOperator(): string - { - return '$bitsAnySet'; - } } diff --git a/src/Builder/Query/BoxOperator.php b/src/Builder/Query/BoxOperator.php index 8e07cfe5a..cce9cf8d8 100644 --- a/src/Builder/Query/BoxOperator.php +++ b/src/Builder/Query/BoxOperator.php @@ -27,6 +27,7 @@ final class BoxOperator implements GeometryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$box'; public const PROPERTIES = ['value' => 'value']; /** @var BSONArray|PackedArray|array $value */ @@ -43,9 +44,4 @@ public function __construct(PackedArray|BSONArray|array $value) $this->value = $value; } - - public function getOperator(): string - { - return '$box'; - } } diff --git a/src/Builder/Query/CenterOperator.php b/src/Builder/Query/CenterOperator.php index e9c4b057a..f3a0b890a 100644 --- a/src/Builder/Query/CenterOperator.php +++ b/src/Builder/Query/CenterOperator.php @@ -27,6 +27,7 @@ final class CenterOperator implements GeometryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$center'; public const PROPERTIES = ['value' => 'value']; /** @var BSONArray|PackedArray|array $value */ @@ -43,9 +44,4 @@ public function __construct(PackedArray|BSONArray|array $value) $this->value = $value; } - - public function getOperator(): string - { - return '$center'; - } } diff --git a/src/Builder/Query/CenterSphereOperator.php b/src/Builder/Query/CenterSphereOperator.php index 373cf2190..350f535f0 100644 --- a/src/Builder/Query/CenterSphereOperator.php +++ b/src/Builder/Query/CenterSphereOperator.php @@ -27,6 +27,7 @@ final class CenterSphereOperator implements GeometryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$centerSphere'; public const PROPERTIES = ['value' => 'value']; /** @var BSONArray|PackedArray|array $value */ @@ -43,9 +44,4 @@ public function __construct(PackedArray|BSONArray|array $value) $this->value = $value; } - - public function getOperator(): string - { - return '$centerSphere'; - } } diff --git a/src/Builder/Query/CommentOperator.php b/src/Builder/Query/CommentOperator.php index 58ba0c126..938498039 100644 --- a/src/Builder/Query/CommentOperator.php +++ b/src/Builder/Query/CommentOperator.php @@ -21,6 +21,7 @@ final class CommentOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$comment'; public const PROPERTIES = ['comment' => 'comment']; /** @var string $comment */ @@ -33,9 +34,4 @@ public function __construct(string $comment) { $this->comment = $comment; } - - public function getOperator(): string - { - return '$comment'; - } } diff --git a/src/Builder/Query/ElemMatchOperator.php b/src/Builder/Query/ElemMatchOperator.php index e56b1e43c..b2195d269 100644 --- a/src/Builder/Query/ElemMatchOperator.php +++ b/src/Builder/Query/ElemMatchOperator.php @@ -27,6 +27,7 @@ final class ElemMatchOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$elemMatch'; public const PROPERTIES = ['query' => 'query']; /** @var FieldQueryInterface|QueryInterface|Type|array|bool|float|int|null|stdClass|string $query */ @@ -44,9 +45,4 @@ public function __construct( $this->query = $query; } - - public function getOperator(): string - { - return '$elemMatch'; - } } diff --git a/src/Builder/Query/EqOperator.php b/src/Builder/Query/EqOperator.php index ba7b530a3..2b38feed8 100644 --- a/src/Builder/Query/EqOperator.php +++ b/src/Builder/Query/EqOperator.php @@ -23,6 +23,7 @@ final class EqOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$eq'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value */ @@ -35,9 +36,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$eq'; - } } diff --git a/src/Builder/Query/ExistsOperator.php b/src/Builder/Query/ExistsOperator.php index 21178931c..1d0b0a292 100644 --- a/src/Builder/Query/ExistsOperator.php +++ b/src/Builder/Query/ExistsOperator.php @@ -21,6 +21,7 @@ final class ExistsOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$exists'; public const PROPERTIES = ['exists' => 'exists']; /** @var bool $exists */ @@ -33,9 +34,4 @@ public function __construct(bool $exists = true) { $this->exists = $exists; } - - public function getOperator(): string - { - return '$exists'; - } } diff --git a/src/Builder/Query/ExprOperator.php b/src/Builder/Query/ExprOperator.php index bea9c861d..9e8350a98 100644 --- a/src/Builder/Query/ExprOperator.php +++ b/src/Builder/Query/ExprOperator.php @@ -24,6 +24,7 @@ final class ExprOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$expr'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$expr'; - } } diff --git a/src/Builder/Query/GeoIntersectsOperator.php b/src/Builder/Query/GeoIntersectsOperator.php index c5e4b67c9..37cad3eae 100644 --- a/src/Builder/Query/GeoIntersectsOperator.php +++ b/src/Builder/Query/GeoIntersectsOperator.php @@ -25,6 +25,7 @@ final class GeoIntersectsOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$geoIntersects'; public const PROPERTIES = ['geometry' => null]; /** @var Document|GeometryInterface|Serializable|array|stdClass $geometry */ @@ -37,9 +38,4 @@ public function __construct(Document|Serializable|GeometryInterface|stdClass|arr { $this->geometry = $geometry; } - - public function getOperator(): string - { - return '$geoIntersects'; - } } diff --git a/src/Builder/Query/GeoWithinOperator.php b/src/Builder/Query/GeoWithinOperator.php index 4e0dae8b2..258592f00 100644 --- a/src/Builder/Query/GeoWithinOperator.php +++ b/src/Builder/Query/GeoWithinOperator.php @@ -25,6 +25,7 @@ final class GeoWithinOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$geoWithin'; public const PROPERTIES = ['geometry' => null]; /** @var Document|GeometryInterface|Serializable|array|stdClass $geometry */ @@ -37,9 +38,4 @@ public function __construct(Document|Serializable|GeometryInterface|stdClass|arr { $this->geometry = $geometry; } - - public function getOperator(): string - { - return '$geoWithin'; - } } diff --git a/src/Builder/Query/GeometryOperator.php b/src/Builder/Query/GeometryOperator.php index 7430fe0ef..fe52be973 100644 --- a/src/Builder/Query/GeometryOperator.php +++ b/src/Builder/Query/GeometryOperator.php @@ -31,6 +31,7 @@ final class GeometryOperator implements GeometryInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$geometry'; public const PROPERTIES = ['type' => 'type', 'coordinates' => 'coordinates', 'crs' => 'crs']; /** @var string $type */ @@ -60,9 +61,4 @@ public function __construct( $this->coordinates = $coordinates; $this->crs = $crs; } - - public function getOperator(): string - { - return '$geometry'; - } } diff --git a/src/Builder/Query/GtOperator.php b/src/Builder/Query/GtOperator.php index 8e1c783ed..5f79cd078 100644 --- a/src/Builder/Query/GtOperator.php +++ b/src/Builder/Query/GtOperator.php @@ -23,6 +23,7 @@ final class GtOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$gt'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value */ @@ -35,9 +36,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$gt'; - } } diff --git a/src/Builder/Query/GteOperator.php b/src/Builder/Query/GteOperator.php index 59c992127..00606e571 100644 --- a/src/Builder/Query/GteOperator.php +++ b/src/Builder/Query/GteOperator.php @@ -23,6 +23,7 @@ final class GteOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$gte'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value */ @@ -35,9 +36,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$gte'; - } } diff --git a/src/Builder/Query/InOperator.php b/src/Builder/Query/InOperator.php index 60d90b4db..e6f1456a4 100644 --- a/src/Builder/Query/InOperator.php +++ b/src/Builder/Query/InOperator.php @@ -27,6 +27,7 @@ final class InOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$in'; public const PROPERTIES = ['value' => 'value']; /** @var BSONArray|PackedArray|array $value */ @@ -43,9 +44,4 @@ public function __construct(PackedArray|BSONArray|array $value) $this->value = $value; } - - public function getOperator(): string - { - return '$in'; - } } diff --git a/src/Builder/Query/JsonSchemaOperator.php b/src/Builder/Query/JsonSchemaOperator.php index aea2de45d..3dc8b918e 100644 --- a/src/Builder/Query/JsonSchemaOperator.php +++ b/src/Builder/Query/JsonSchemaOperator.php @@ -24,6 +24,7 @@ final class JsonSchemaOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$jsonSchema'; public const PROPERTIES = ['schema' => 'schema']; /** @var Document|Serializable|array|stdClass $schema */ @@ -36,9 +37,4 @@ public function __construct(Document|Serializable|stdClass|array $schema) { $this->schema = $schema; } - - public function getOperator(): string - { - return '$jsonSchema'; - } } diff --git a/src/Builder/Query/LtOperator.php b/src/Builder/Query/LtOperator.php index f34bc688b..ac4e88a95 100644 --- a/src/Builder/Query/LtOperator.php +++ b/src/Builder/Query/LtOperator.php @@ -23,6 +23,7 @@ final class LtOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$lt'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value */ @@ -35,9 +36,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$lt'; - } } diff --git a/src/Builder/Query/LteOperator.php b/src/Builder/Query/LteOperator.php index f671bd228..2c8a7cf6f 100644 --- a/src/Builder/Query/LteOperator.php +++ b/src/Builder/Query/LteOperator.php @@ -23,6 +23,7 @@ final class LteOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$lte'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value */ @@ -35,9 +36,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$lte'; - } } diff --git a/src/Builder/Query/MaxDistanceOperator.php b/src/Builder/Query/MaxDistanceOperator.php index 5372f7bbf..2aea7d4c8 100644 --- a/src/Builder/Query/MaxDistanceOperator.php +++ b/src/Builder/Query/MaxDistanceOperator.php @@ -23,6 +23,7 @@ final class MaxDistanceOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$maxDistance'; public const PROPERTIES = ['value' => 'value']; /** @var Decimal128|Int64|float|int $value */ @@ -35,9 +36,4 @@ public function __construct(Decimal128|Int64|float|int $value) { $this->value = $value; } - - public function getOperator(): string - { - return '$maxDistance'; - } } diff --git a/src/Builder/Query/MinDistanceOperator.php b/src/Builder/Query/MinDistanceOperator.php index bd963a84d..74aadb397 100644 --- a/src/Builder/Query/MinDistanceOperator.php +++ b/src/Builder/Query/MinDistanceOperator.php @@ -22,6 +22,7 @@ final class MinDistanceOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$minDistance'; public const PROPERTIES = ['value' => 'value']; /** @var Int64|float|int $value */ @@ -34,9 +35,4 @@ public function __construct(Int64|float|int $value) { $this->value = $value; } - - public function getOperator(): string - { - return '$minDistance'; - } } diff --git a/src/Builder/Query/ModOperator.php b/src/Builder/Query/ModOperator.php index a6890965a..bbabdfdc9 100644 --- a/src/Builder/Query/ModOperator.php +++ b/src/Builder/Query/ModOperator.php @@ -23,6 +23,7 @@ final class ModOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Array; + public const NAME = '$mod'; public const PROPERTIES = ['divisor' => 'divisor', 'remainder' => 'remainder']; /** @var Decimal128|Int64|float|int $divisor */ @@ -40,9 +41,4 @@ public function __construct(Decimal128|Int64|float|int $divisor, Decimal128|Int6 $this->divisor = $divisor; $this->remainder = $remainder; } - - public function getOperator(): string - { - return '$mod'; - } } diff --git a/src/Builder/Query/NeOperator.php b/src/Builder/Query/NeOperator.php index 72861b76f..58cdc129c 100644 --- a/src/Builder/Query/NeOperator.php +++ b/src/Builder/Query/NeOperator.php @@ -23,6 +23,7 @@ final class NeOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$ne'; public const PROPERTIES = ['value' => 'value']; /** @var Type|array|bool|float|int|null|stdClass|string $value */ @@ -35,9 +36,4 @@ public function __construct(Type|stdClass|array|bool|float|int|null|string $valu { $this->value = $value; } - - public function getOperator(): string - { - return '$ne'; - } } diff --git a/src/Builder/Query/NearOperator.php b/src/Builder/Query/NearOperator.php index 4807716fe..85be90ac4 100644 --- a/src/Builder/Query/NearOperator.php +++ b/src/Builder/Query/NearOperator.php @@ -28,6 +28,7 @@ final class NearOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$near'; public const PROPERTIES = ['geometry' => null, 'maxDistance' => '$maxDistance', 'minDistance' => '$minDistance']; /** @var Document|GeometryInterface|Serializable|array|stdClass $geometry */ @@ -53,9 +54,4 @@ public function __construct( $this->maxDistance = $maxDistance; $this->minDistance = $minDistance; } - - public function getOperator(): string - { - return '$near'; - } } diff --git a/src/Builder/Query/NearSphereOperator.php b/src/Builder/Query/NearSphereOperator.php index 71af4c489..5494048b0 100644 --- a/src/Builder/Query/NearSphereOperator.php +++ b/src/Builder/Query/NearSphereOperator.php @@ -28,6 +28,7 @@ final class NearSphereOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$nearSphere'; public const PROPERTIES = ['geometry' => null, 'maxDistance' => '$maxDistance', 'minDistance' => '$minDistance']; /** @var Document|GeometryInterface|Serializable|array|stdClass $geometry */ @@ -53,9 +54,4 @@ public function __construct( $this->maxDistance = $maxDistance; $this->minDistance = $minDistance; } - - public function getOperator(): string - { - return '$nearSphere'; - } } diff --git a/src/Builder/Query/NinOperator.php b/src/Builder/Query/NinOperator.php index f1a50bd39..5c82c3fd8 100644 --- a/src/Builder/Query/NinOperator.php +++ b/src/Builder/Query/NinOperator.php @@ -27,6 +27,7 @@ final class NinOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$nin'; public const PROPERTIES = ['value' => 'value']; /** @var BSONArray|PackedArray|array $value */ @@ -43,9 +44,4 @@ public function __construct(PackedArray|BSONArray|array $value) $this->value = $value; } - - public function getOperator(): string - { - return '$nin'; - } } diff --git a/src/Builder/Query/NorOperator.php b/src/Builder/Query/NorOperator.php index 4fdf9e3e1..06bdc7e39 100644 --- a/src/Builder/Query/NorOperator.php +++ b/src/Builder/Query/NorOperator.php @@ -24,6 +24,7 @@ final class NorOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$nor'; public const PROPERTIES = ['queries' => 'queries']; /** @var list $queries */ @@ -45,9 +46,4 @@ public function __construct(QueryInterface|array ...$queries) $this->queries = $queries; } - - public function getOperator(): string - { - return '$nor'; - } } diff --git a/src/Builder/Query/NotOperator.php b/src/Builder/Query/NotOperator.php index ee3c12d34..f3b422f24 100644 --- a/src/Builder/Query/NotOperator.php +++ b/src/Builder/Query/NotOperator.php @@ -23,6 +23,7 @@ final class NotOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$not'; public const PROPERTIES = ['expression' => 'expression']; /** @var FieldQueryInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -35,9 +36,4 @@ public function __construct(Type|FieldQueryInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$not'; - } } diff --git a/src/Builder/Query/OrOperator.php b/src/Builder/Query/OrOperator.php index a9d246a9f..1b922fdb4 100644 --- a/src/Builder/Query/OrOperator.php +++ b/src/Builder/Query/OrOperator.php @@ -24,6 +24,7 @@ final class OrOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$or'; public const PROPERTIES = ['queries' => 'queries']; /** @var list $queries */ @@ -45,9 +46,4 @@ public function __construct(QueryInterface|array ...$queries) $this->queries = $queries; } - - public function getOperator(): string - { - return '$or'; - } } diff --git a/src/Builder/Query/PolygonOperator.php b/src/Builder/Query/PolygonOperator.php index a512a5259..bba3aac08 100644 --- a/src/Builder/Query/PolygonOperator.php +++ b/src/Builder/Query/PolygonOperator.php @@ -27,6 +27,7 @@ final class PolygonOperator implements GeometryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$polygon'; public const PROPERTIES = ['points' => 'points']; /** @var BSONArray|PackedArray|array $points */ @@ -43,9 +44,4 @@ public function __construct(PackedArray|BSONArray|array $points) $this->points = $points; } - - public function getOperator(): string - { - return '$polygon'; - } } diff --git a/src/Builder/Query/RandOperator.php b/src/Builder/Query/RandOperator.php index 7cea63382..ccf8a8d28 100644 --- a/src/Builder/Query/RandOperator.php +++ b/src/Builder/Query/RandOperator.php @@ -21,13 +21,9 @@ final class RandOperator implements ResolvesToDouble, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$rand'; public function __construct() { } - - public function getOperator(): string - { - return '$rand'; - } } diff --git a/src/Builder/Query/RegexOperator.php b/src/Builder/Query/RegexOperator.php index e0addbbb0..cf9ee31ff 100644 --- a/src/Builder/Query/RegexOperator.php +++ b/src/Builder/Query/RegexOperator.php @@ -22,6 +22,7 @@ final class RegexOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$regex'; public const PROPERTIES = ['regex' => 'regex']; /** @var Regex $regex */ @@ -34,9 +35,4 @@ public function __construct(Regex $regex) { $this->regex = $regex; } - - public function getOperator(): string - { - return '$regex'; - } } diff --git a/src/Builder/Query/SampleRateOperator.php b/src/Builder/Query/SampleRateOperator.php index df559bb9b..42879cead 100644 --- a/src/Builder/Query/SampleRateOperator.php +++ b/src/Builder/Query/SampleRateOperator.php @@ -23,6 +23,7 @@ final class SampleRateOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sampleRate'; public const PROPERTIES = ['rate' => 'rate']; /** @@ -39,9 +40,4 @@ public function __construct(Int64|ResolvesToDouble|float|int $rate) { $this->rate = $rate; } - - public function getOperator(): string - { - return '$sampleRate'; - } } diff --git a/src/Builder/Query/SizeOperator.php b/src/Builder/Query/SizeOperator.php index 00da6f3e2..8ec123b11 100644 --- a/src/Builder/Query/SizeOperator.php +++ b/src/Builder/Query/SizeOperator.php @@ -21,6 +21,7 @@ final class SizeOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$size'; public const PROPERTIES = ['value' => 'value']; /** @var int $value */ @@ -33,9 +34,4 @@ public function __construct(int $value) { $this->value = $value; } - - public function getOperator(): string - { - return '$size'; - } } diff --git a/src/Builder/Query/TextOperator.php b/src/Builder/Query/TextOperator.php index f3028507f..7c1c0a7ba 100644 --- a/src/Builder/Query/TextOperator.php +++ b/src/Builder/Query/TextOperator.php @@ -22,6 +22,7 @@ final class TextOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$text'; public const PROPERTIES = [ 'search' => '$search', @@ -67,9 +68,4 @@ public function __construct( $this->caseSensitive = $caseSensitive; $this->diacriticSensitive = $diacriticSensitive; } - - public function getOperator(): string - { - return '$text'; - } } diff --git a/src/Builder/Query/TypeOperator.php b/src/Builder/Query/TypeOperator.php index cdfb8ae38..e539ebfc8 100644 --- a/src/Builder/Query/TypeOperator.php +++ b/src/Builder/Query/TypeOperator.php @@ -24,6 +24,7 @@ final class TypeOperator implements FieldQueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$type'; public const PROPERTIES = ['type' => 'type']; /** @var list $type */ @@ -45,9 +46,4 @@ public function __construct(int|string ...$type) $this->type = $type; } - - public function getOperator(): string - { - return '$type'; - } } diff --git a/src/Builder/Query/WhereOperator.php b/src/Builder/Query/WhereOperator.php index 90e3590ad..e679f7347 100644 --- a/src/Builder/Query/WhereOperator.php +++ b/src/Builder/Query/WhereOperator.php @@ -24,6 +24,7 @@ final class WhereOperator implements QueryInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$where'; public const PROPERTIES = ['function' => 'function']; /** @var Javascript|string $function */ @@ -40,9 +41,4 @@ public function __construct(Javascript|string $function) $this->function = $function; } - - public function getOperator(): string - { - return '$where'; - } } diff --git a/src/Builder/Stage/AddFieldsStage.php b/src/Builder/Stage/AddFieldsStage.php index 0ab28e268..7fedc8b2c 100644 --- a/src/Builder/Stage/AddFieldsStage.php +++ b/src/Builder/Stage/AddFieldsStage.php @@ -27,6 +27,7 @@ final class AddFieldsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$addFields'; public const PROPERTIES = ['expression' => 'expression']; /** @var stdClass $expression Specify the name of each field to add and set its value to an aggregation expression or an empty object. */ @@ -50,9 +51,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i $expression = (object) $expression; $this->expression = $expression; } - - public function getOperator(): string - { - return '$addFields'; - } } diff --git a/src/Builder/Stage/BucketAutoStage.php b/src/Builder/Stage/BucketAutoStage.php index 028ad9f29..2de5b3c20 100644 --- a/src/Builder/Stage/BucketAutoStage.php +++ b/src/Builder/Stage/BucketAutoStage.php @@ -27,6 +27,7 @@ final class BucketAutoStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$bucketAuto'; public const PROPERTIES = [ 'groupBy' => 'groupBy', @@ -72,9 +73,4 @@ public function __construct( $this->output = $output; $this->granularity = $granularity; } - - public function getOperator(): string - { - return '$bucketAuto'; - } } diff --git a/src/Builder/Stage/BucketStage.php b/src/Builder/Stage/BucketStage.php index d3423460f..211987c66 100644 --- a/src/Builder/Stage/BucketStage.php +++ b/src/Builder/Stage/BucketStage.php @@ -33,6 +33,7 @@ final class BucketStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$bucket'; public const PROPERTIES = [ 'groupBy' => 'groupBy', @@ -96,9 +97,4 @@ public function __construct( $this->default = $default; $this->output = $output; } - - public function getOperator(): string - { - return '$bucket'; - } } diff --git a/src/Builder/Stage/ChangeStreamSplitLargeEventStage.php b/src/Builder/Stage/ChangeStreamSplitLargeEventStage.php index ac4d37ef6..2539ddb19 100644 --- a/src/Builder/Stage/ChangeStreamSplitLargeEventStage.php +++ b/src/Builder/Stage/ChangeStreamSplitLargeEventStage.php @@ -22,13 +22,9 @@ final class ChangeStreamSplitLargeEventStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$changeStreamSplitLargeEvent'; public function __construct() { } - - public function getOperator(): string - { - return '$changeStreamSplitLargeEvent'; - } } diff --git a/src/Builder/Stage/ChangeStreamStage.php b/src/Builder/Stage/ChangeStreamStage.php index c4925a3bb..d9c22eaa4 100644 --- a/src/Builder/Stage/ChangeStreamStage.php +++ b/src/Builder/Stage/ChangeStreamStage.php @@ -26,6 +26,7 @@ final class ChangeStreamStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$changeStream'; public const PROPERTIES = [ 'allChangesForCluster' => 'allChangesForCluster', @@ -88,9 +89,4 @@ public function __construct( $this->startAfter = $startAfter; $this->startAtOperationTime = $startAtOperationTime; } - - public function getOperator(): string - { - return '$changeStream'; - } } diff --git a/src/Builder/Stage/CollStatsStage.php b/src/Builder/Stage/CollStatsStage.php index 8fd74079f..d84245320 100644 --- a/src/Builder/Stage/CollStatsStage.php +++ b/src/Builder/Stage/CollStatsStage.php @@ -25,6 +25,7 @@ final class CollStatsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$collStats'; public const PROPERTIES = [ 'latencyStats' => 'latencyStats', @@ -62,9 +63,4 @@ public function __construct( $this->count = $count; $this->queryExecStats = $queryExecStats; } - - public function getOperator(): string - { - return '$collStats'; - } } diff --git a/src/Builder/Stage/CountStage.php b/src/Builder/Stage/CountStage.php index 316f0cceb..387da5efc 100644 --- a/src/Builder/Stage/CountStage.php +++ b/src/Builder/Stage/CountStage.php @@ -22,6 +22,7 @@ final class CountStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$count'; public const PROPERTIES = ['field' => 'field']; /** @var string $field Name of the output field which has the count as its value. It must be a non-empty string, must not start with $ and must not contain the . character. */ @@ -34,9 +35,4 @@ public function __construct(string $field) { $this->field = $field; } - - public function getOperator(): string - { - return '$count'; - } } diff --git a/src/Builder/Stage/CurrentOpStage.php b/src/Builder/Stage/CurrentOpStage.php index 2a430ef29..3d0d6abb2 100644 --- a/src/Builder/Stage/CurrentOpStage.php +++ b/src/Builder/Stage/CurrentOpStage.php @@ -22,6 +22,7 @@ final class CurrentOpStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$currentOp'; public const PROPERTIES = [ 'allUsers' => 'allUsers', @@ -66,9 +67,4 @@ public function __construct( $this->idleSessions = $idleSessions; $this->localOps = $localOps; } - - public function getOperator(): string - { - return '$currentOp'; - } } diff --git a/src/Builder/Stage/DensifyStage.php b/src/Builder/Stage/DensifyStage.php index 9626c5fca..9ecff7bbc 100644 --- a/src/Builder/Stage/DensifyStage.php +++ b/src/Builder/Stage/DensifyStage.php @@ -31,6 +31,7 @@ final class DensifyStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$densify'; public const PROPERTIES = ['field' => 'field', 'range' => 'range', 'partitionByFields' => 'partitionByFields']; /** @@ -66,9 +67,4 @@ public function __construct( $this->partitionByFields = $partitionByFields; } - - public function getOperator(): string - { - return '$densify'; - } } diff --git a/src/Builder/Stage/DocumentsStage.php b/src/Builder/Stage/DocumentsStage.php index 6c68ae9df..d49585ef7 100644 --- a/src/Builder/Stage/DocumentsStage.php +++ b/src/Builder/Stage/DocumentsStage.php @@ -28,6 +28,7 @@ final class DocumentsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$documents'; public const PROPERTIES = ['documents' => 'documents']; /** @@ -54,9 +55,4 @@ public function __construct(PackedArray|ResolvesToArray|BSONArray|array $documen $this->documents = $documents; } - - public function getOperator(): string - { - return '$documents'; - } } diff --git a/src/Builder/Stage/FacetStage.php b/src/Builder/Stage/FacetStage.php index 344401892..6dc36bebd 100644 --- a/src/Builder/Stage/FacetStage.php +++ b/src/Builder/Stage/FacetStage.php @@ -28,6 +28,7 @@ final class FacetStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$facet'; public const PROPERTIES = ['facet' => 'facet']; /** @var stdClass $facet */ @@ -51,9 +52,4 @@ public function __construct(PackedArray|Pipeline|BSONArray|array ...$facet) $facet = (object) $facet; $this->facet = $facet; } - - public function getOperator(): string - { - return '$facet'; - } } diff --git a/src/Builder/Stage/FillStage.php b/src/Builder/Stage/FillStage.php index 74eeae78c..f7b3b35e2 100644 --- a/src/Builder/Stage/FillStage.php +++ b/src/Builder/Stage/FillStage.php @@ -31,6 +31,7 @@ final class FillStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$fill'; public const PROPERTIES = [ 'output' => 'output', @@ -88,9 +89,4 @@ public function __construct( $this->partitionByFields = $partitionByFields; $this->sortBy = $sortBy; } - - public function getOperator(): string - { - return '$fill'; - } } diff --git a/src/Builder/Stage/GeoNearStage.php b/src/Builder/Stage/GeoNearStage.php index 342eedb1d..b2aa6588e 100644 --- a/src/Builder/Stage/GeoNearStage.php +++ b/src/Builder/Stage/GeoNearStage.php @@ -32,6 +32,7 @@ final class GeoNearStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$geoNear'; public const PROPERTIES = [ 'distanceField' => 'distanceField', @@ -128,9 +129,4 @@ public function __construct( $this->query = $query; $this->spherical = $spherical; } - - public function getOperator(): string - { - return '$geoNear'; - } } diff --git a/src/Builder/Stage/GraphLookupStage.php b/src/Builder/Stage/GraphLookupStage.php index 52c2d322f..936b59861 100644 --- a/src/Builder/Stage/GraphLookupStage.php +++ b/src/Builder/Stage/GraphLookupStage.php @@ -33,6 +33,7 @@ final class GraphLookupStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$graphLookup'; public const PROPERTIES = [ 'from' => 'from', @@ -110,9 +111,4 @@ public function __construct( $this->restrictSearchWithMatch = $restrictSearchWithMatch; } - - public function getOperator(): string - { - return '$graphLookup'; - } } diff --git a/src/Builder/Stage/GroupStage.php b/src/Builder/Stage/GroupStage.php index 8f852a47d..b44cbc764 100644 --- a/src/Builder/Stage/GroupStage.php +++ b/src/Builder/Stage/GroupStage.php @@ -30,6 +30,7 @@ final class GroupStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$group'; public const PROPERTIES = ['_id' => '_id', 'field' => null]; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $_id The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents. */ @@ -56,9 +57,4 @@ public function __construct( $field = (object) $field; $this->field = $field; } - - public function getOperator(): string - { - return '$group'; - } } diff --git a/src/Builder/Stage/IndexStatsStage.php b/src/Builder/Stage/IndexStatsStage.php index 752ced1cd..0baaf8a18 100644 --- a/src/Builder/Stage/IndexStatsStage.php +++ b/src/Builder/Stage/IndexStatsStage.php @@ -21,13 +21,9 @@ final class IndexStatsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$indexStats'; public function __construct() { } - - public function getOperator(): string - { - return '$indexStats'; - } } diff --git a/src/Builder/Stage/LimitStage.php b/src/Builder/Stage/LimitStage.php index b5f69f76a..ec765fa8a 100644 --- a/src/Builder/Stage/LimitStage.php +++ b/src/Builder/Stage/LimitStage.php @@ -21,6 +21,7 @@ final class LimitStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$limit'; public const PROPERTIES = ['limit' => 'limit']; /** @var int $limit */ @@ -33,9 +34,4 @@ public function __construct(int $limit) { $this->limit = $limit; } - - public function getOperator(): string - { - return '$limit'; - } } diff --git a/src/Builder/Stage/ListLocalSessionsStage.php b/src/Builder/Stage/ListLocalSessionsStage.php index 4e7ee9d34..f438b0148 100644 --- a/src/Builder/Stage/ListLocalSessionsStage.php +++ b/src/Builder/Stage/ListLocalSessionsStage.php @@ -28,6 +28,7 @@ final class ListLocalSessionsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$listLocalSessions'; public const PROPERTIES = ['users' => 'users', 'allUsers' => 'allUsers']; /** @var Optional|BSONArray|PackedArray|array $users Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users. */ @@ -51,9 +52,4 @@ public function __construct( $this->users = $users; $this->allUsers = $allUsers; } - - public function getOperator(): string - { - return '$listLocalSessions'; - } } diff --git a/src/Builder/Stage/ListSampledQueriesStage.php b/src/Builder/Stage/ListSampledQueriesStage.php index dc8ec2aa8..afa242591 100644 --- a/src/Builder/Stage/ListSampledQueriesStage.php +++ b/src/Builder/Stage/ListSampledQueriesStage.php @@ -22,6 +22,7 @@ final class ListSampledQueriesStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$listSampledQueries'; public const PROPERTIES = ['namespace' => 'namespace']; /** @var Optional|string $namespace */ @@ -34,9 +35,4 @@ public function __construct(Optional|string $namespace = Optional::Undefined) { $this->namespace = $namespace; } - - public function getOperator(): string - { - return '$listSampledQueries'; - } } diff --git a/src/Builder/Stage/ListSearchIndexesStage.php b/src/Builder/Stage/ListSearchIndexesStage.php index e6c48bdfb..c6643ad33 100644 --- a/src/Builder/Stage/ListSearchIndexesStage.php +++ b/src/Builder/Stage/ListSearchIndexesStage.php @@ -22,6 +22,7 @@ final class ListSearchIndexesStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$listSearchIndexes'; public const PROPERTIES = ['id' => 'id', 'name' => 'name']; /** @var Optional|string $id The id of the index to return information about. */ @@ -41,9 +42,4 @@ public function __construct( $this->id = $id; $this->name = $name; } - - public function getOperator(): string - { - return '$listSearchIndexes'; - } } diff --git a/src/Builder/Stage/ListSessionsStage.php b/src/Builder/Stage/ListSessionsStage.php index c242e0166..687425ce1 100644 --- a/src/Builder/Stage/ListSessionsStage.php +++ b/src/Builder/Stage/ListSessionsStage.php @@ -28,6 +28,7 @@ final class ListSessionsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$listSessions'; public const PROPERTIES = ['users' => 'users', 'allUsers' => 'allUsers']; /** @var Optional|BSONArray|PackedArray|array $users Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users. */ @@ -51,9 +52,4 @@ public function __construct( $this->users = $users; $this->allUsers = $allUsers; } - - public function getOperator(): string - { - return '$listSessions'; - } } diff --git a/src/Builder/Stage/LookupStage.php b/src/Builder/Stage/LookupStage.php index 85226c2b6..a9bf0d7ee 100644 --- a/src/Builder/Stage/LookupStage.php +++ b/src/Builder/Stage/LookupStage.php @@ -32,6 +32,7 @@ final class LookupStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$lookup'; public const PROPERTIES = [ 'as' => 'as', @@ -99,9 +100,4 @@ public function __construct( $this->pipeline = $pipeline; } - - public function getOperator(): string - { - return '$lookup'; - } } diff --git a/src/Builder/Stage/MatchStage.php b/src/Builder/Stage/MatchStage.php index 85273f057..0c88db2cf 100644 --- a/src/Builder/Stage/MatchStage.php +++ b/src/Builder/Stage/MatchStage.php @@ -25,6 +25,7 @@ final class MatchStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$match'; public const PROPERTIES = ['query' => 'query']; /** @var QueryInterface|array $query */ @@ -41,9 +42,4 @@ public function __construct(QueryInterface|array $query) $this->query = $query; } - - public function getOperator(): string - { - return '$match'; - } } diff --git a/src/Builder/Stage/MergeStage.php b/src/Builder/Stage/MergeStage.php index a1994ff13..2fc3e94da 100644 --- a/src/Builder/Stage/MergeStage.php +++ b/src/Builder/Stage/MergeStage.php @@ -33,6 +33,7 @@ final class MergeStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$merge'; public const PROPERTIES = [ 'into' => 'into', @@ -85,9 +86,4 @@ public function __construct( $this->whenMatched = $whenMatched; $this->whenNotMatched = $whenNotMatched; } - - public function getOperator(): string - { - return '$merge'; - } } diff --git a/src/Builder/Stage/OutStage.php b/src/Builder/Stage/OutStage.php index e155d060f..77959edc8 100644 --- a/src/Builder/Stage/OutStage.php +++ b/src/Builder/Stage/OutStage.php @@ -24,6 +24,7 @@ final class OutStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$out'; public const PROPERTIES = ['coll' => 'coll']; /** @var Document|Serializable|array|stdClass|string $coll Target database name to write documents from $out to. */ @@ -36,9 +37,4 @@ public function __construct(Document|Serializable|stdClass|array|string $coll) { $this->coll = $coll; } - - public function getOperator(): string - { - return '$out'; - } } diff --git a/src/Builder/Stage/PlanCacheStatsStage.php b/src/Builder/Stage/PlanCacheStatsStage.php index 315b17327..5cfd75674 100644 --- a/src/Builder/Stage/PlanCacheStatsStage.php +++ b/src/Builder/Stage/PlanCacheStatsStage.php @@ -21,13 +21,9 @@ final class PlanCacheStatsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$planCacheStats'; public function __construct() { } - - public function getOperator(): string - { - return '$planCacheStats'; - } } diff --git a/src/Builder/Stage/ProjectStage.php b/src/Builder/Stage/ProjectStage.php index a836114aa..4b1c0f350 100644 --- a/src/Builder/Stage/ProjectStage.php +++ b/src/Builder/Stage/ProjectStage.php @@ -27,6 +27,7 @@ final class ProjectStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$project'; public const PROPERTIES = ['specification' => 'specification']; /** @var stdClass $specification */ @@ -50,9 +51,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i $specification = (object) $specification; $this->specification = $specification; } - - public function getOperator(): string - { - return '$project'; - } } diff --git a/src/Builder/Stage/RedactStage.php b/src/Builder/Stage/RedactStage.php index 6c56828b8..a1db25265 100644 --- a/src/Builder/Stage/RedactStage.php +++ b/src/Builder/Stage/RedactStage.php @@ -24,6 +24,7 @@ final class RedactStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$redact'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$redact'; - } } diff --git a/src/Builder/Stage/ReplaceRootStage.php b/src/Builder/Stage/ReplaceRootStage.php index 8e9fe719c..f88bf07b2 100644 --- a/src/Builder/Stage/ReplaceRootStage.php +++ b/src/Builder/Stage/ReplaceRootStage.php @@ -25,6 +25,7 @@ final class ReplaceRootStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$replaceRoot'; public const PROPERTIES = ['newRoot' => 'newRoot']; /** @var Document|ResolvesToObject|Serializable|array|stdClass $newRoot */ @@ -37,9 +38,4 @@ public function __construct(Document|Serializable|ResolvesToObject|stdClass|arra { $this->newRoot = $newRoot; } - - public function getOperator(): string - { - return '$replaceRoot'; - } } diff --git a/src/Builder/Stage/ReplaceWithStage.php b/src/Builder/Stage/ReplaceWithStage.php index d320af933..84d6ffda4 100644 --- a/src/Builder/Stage/ReplaceWithStage.php +++ b/src/Builder/Stage/ReplaceWithStage.php @@ -26,6 +26,7 @@ final class ReplaceWithStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$replaceWith'; public const PROPERTIES = ['expression' => 'expression']; /** @var Document|ResolvesToObject|Serializable|array|stdClass $expression */ @@ -38,9 +39,4 @@ public function __construct(Document|Serializable|ResolvesToObject|stdClass|arra { $this->expression = $expression; } - - public function getOperator(): string - { - return '$replaceWith'; - } } diff --git a/src/Builder/Stage/SampleStage.php b/src/Builder/Stage/SampleStage.php index fd0cb4ed4..c00b2bb26 100644 --- a/src/Builder/Stage/SampleStage.php +++ b/src/Builder/Stage/SampleStage.php @@ -21,6 +21,7 @@ final class SampleStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$sample'; public const PROPERTIES = ['size' => 'size']; /** @var int $size The number of documents to randomly select. */ @@ -33,9 +34,4 @@ public function __construct(int $size) { $this->size = $size; } - - public function getOperator(): string - { - return '$sample'; - } } diff --git a/src/Builder/Stage/SearchMetaStage.php b/src/Builder/Stage/SearchMetaStage.php index 579cb4cb4..88f05bec1 100644 --- a/src/Builder/Stage/SearchMetaStage.php +++ b/src/Builder/Stage/SearchMetaStage.php @@ -25,6 +25,7 @@ final class SearchMetaStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$searchMeta'; public const PROPERTIES = ['meta' => 'meta']; /** @var Document|Serializable|array|stdClass $meta */ @@ -37,9 +38,4 @@ public function __construct(Document|Serializable|stdClass|array $meta) { $this->meta = $meta; } - - public function getOperator(): string - { - return '$searchMeta'; - } } diff --git a/src/Builder/Stage/SearchStage.php b/src/Builder/Stage/SearchStage.php index 60bdceb4f..188a2ece4 100644 --- a/src/Builder/Stage/SearchStage.php +++ b/src/Builder/Stage/SearchStage.php @@ -25,6 +25,7 @@ final class SearchStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$search'; public const PROPERTIES = ['search' => 'search']; /** @var Document|Serializable|array|stdClass $search */ @@ -37,9 +38,4 @@ public function __construct(Document|Serializable|stdClass|array $search) { $this->search = $search; } - - public function getOperator(): string - { - return '$search'; - } } diff --git a/src/Builder/Stage/SetStage.php b/src/Builder/Stage/SetStage.php index 534955887..45c545474 100644 --- a/src/Builder/Stage/SetStage.php +++ b/src/Builder/Stage/SetStage.php @@ -28,6 +28,7 @@ final class SetStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$set'; public const PROPERTIES = ['field' => 'field']; /** @var stdClass $field */ @@ -51,9 +52,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i $field = (object) $field; $this->field = $field; } - - public function getOperator(): string - { - return '$set'; - } } diff --git a/src/Builder/Stage/SetWindowFieldsStage.php b/src/Builder/Stage/SetWindowFieldsStage.php index 9e5d43d46..ba8d63edf 100644 --- a/src/Builder/Stage/SetWindowFieldsStage.php +++ b/src/Builder/Stage/SetWindowFieldsStage.php @@ -28,6 +28,7 @@ final class SetWindowFieldsStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$setWindowFields'; public const PROPERTIES = ['sortBy' => 'sortBy', 'output' => 'output', 'partitionBy' => 'partitionBy']; /** @var Document|Serializable|array|stdClass $sortBy Specifies the field(s) to sort the documents by in the partition. Uses the same syntax as the $sort stage. Default is no sorting. */ @@ -57,9 +58,4 @@ public function __construct( $this->output = $output; $this->partitionBy = $partitionBy; } - - public function getOperator(): string - { - return '$setWindowFields'; - } } diff --git a/src/Builder/Stage/ShardedDataDistributionStage.php b/src/Builder/Stage/ShardedDataDistributionStage.php index ebfaa912e..fe07d282a 100644 --- a/src/Builder/Stage/ShardedDataDistributionStage.php +++ b/src/Builder/Stage/ShardedDataDistributionStage.php @@ -22,13 +22,9 @@ final class ShardedDataDistributionStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$shardedDataDistribution'; public function __construct() { } - - public function getOperator(): string - { - return '$shardedDataDistribution'; - } } diff --git a/src/Builder/Stage/SkipStage.php b/src/Builder/Stage/SkipStage.php index 66d49e442..aab0242d8 100644 --- a/src/Builder/Stage/SkipStage.php +++ b/src/Builder/Stage/SkipStage.php @@ -21,6 +21,7 @@ final class SkipStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$skip'; public const PROPERTIES = ['skip' => 'skip']; /** @var int $skip */ @@ -33,9 +34,4 @@ public function __construct(int $skip) { $this->skip = $skip; } - - public function getOperator(): string - { - return '$skip'; - } } diff --git a/src/Builder/Stage/SortByCountStage.php b/src/Builder/Stage/SortByCountStage.php index 8121a900f..5e8f8821a 100644 --- a/src/Builder/Stage/SortByCountStage.php +++ b/src/Builder/Stage/SortByCountStage.php @@ -24,6 +24,7 @@ final class SortByCountStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sortByCount'; public const PROPERTIES = ['expression' => 'expression']; /** @var ExpressionInterface|Type|array|bool|float|int|null|stdClass|string $expression */ @@ -36,9 +37,4 @@ public function __construct(Type|ExpressionInterface|stdClass|array|bool|float|i { $this->expression = $expression; } - - public function getOperator(): string - { - return '$sortByCount'; - } } diff --git a/src/Builder/Stage/SortStage.php b/src/Builder/Stage/SortStage.php index 311de214b..f913d2897 100644 --- a/src/Builder/Stage/SortStage.php +++ b/src/Builder/Stage/SortStage.php @@ -28,6 +28,7 @@ final class SortStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$sort'; public const PROPERTIES = ['sort' => 'sort']; /** @var stdClass $sort */ @@ -51,9 +52,4 @@ public function __construct(Type|ExpressionInterface|Sort|stdClass|array|bool|fl $sort = (object) $sort; $this->sort = $sort; } - - public function getOperator(): string - { - return '$sort'; - } } diff --git a/src/Builder/Stage/UnionWithStage.php b/src/Builder/Stage/UnionWithStage.php index fe96c396b..25ced13de 100644 --- a/src/Builder/Stage/UnionWithStage.php +++ b/src/Builder/Stage/UnionWithStage.php @@ -30,6 +30,7 @@ final class UnionWithStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$unionWith'; public const PROPERTIES = ['coll' => 'coll', 'pipeline' => 'pipeline']; /** @var string $coll The collection or view whose pipeline results you wish to include in the result set. */ @@ -57,9 +58,4 @@ public function __construct( $this->pipeline = $pipeline; } - - public function getOperator(): string - { - return '$unionWith'; - } } diff --git a/src/Builder/Stage/UnsetStage.php b/src/Builder/Stage/UnsetStage.php index d84abc2c4..43575d8d5 100644 --- a/src/Builder/Stage/UnsetStage.php +++ b/src/Builder/Stage/UnsetStage.php @@ -26,6 +26,7 @@ final class UnsetStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Single; + public const NAME = '$unset'; public const PROPERTIES = ['field' => 'field']; /** @var list $field */ @@ -47,9 +48,4 @@ public function __construct(FieldPath|string ...$field) $this->field = $field; } - - public function getOperator(): string - { - return '$unset'; - } } diff --git a/src/Builder/Stage/UnwindStage.php b/src/Builder/Stage/UnwindStage.php index c9a436891..9959f462b 100644 --- a/src/Builder/Stage/UnwindStage.php +++ b/src/Builder/Stage/UnwindStage.php @@ -23,6 +23,7 @@ final class UnwindStage implements StageInterface, OperatorInterface { public const ENCODE = Encode::Object; + public const NAME = '$unwind'; public const PROPERTIES = [ 'path' => 'path', @@ -59,9 +60,4 @@ public function __construct( $this->includeArrayIndex = $includeArrayIndex; $this->preserveNullAndEmptyArrays = $preserveNullAndEmptyArrays; } - - public function getOperator(): string - { - return '$unwind'; - } } diff --git a/src/Builder/Type/CombinedFieldQuery.php b/src/Builder/Type/CombinedFieldQuery.php index 1693c2811..59f5a8554 100644 --- a/src/Builder/Type/CombinedFieldQuery.php +++ b/src/Builder/Type/CombinedFieldQuery.php @@ -59,6 +59,7 @@ static function (array $fieldQueries, QueryInterface|FieldQueryInterface|Type|st ); // Validate FieldQuery types and non-duplicate operators + /** @var array $seenOperators */ $seenOperators = []; foreach ($this->fieldQueries as $fieldQuery) { if ($fieldQuery instanceof stdClass) { @@ -66,7 +67,7 @@ static function (array $fieldQueries, QueryInterface|FieldQueryInterface|Type|st } if ($fieldQuery instanceof FieldQueryInterface && $fieldQuery instanceof OperatorInterface) { - $operator = $fieldQuery->getOperator(); + $operator = $fieldQuery::NAME; } elseif (is_array($fieldQuery)) { if (count($fieldQuery) !== 1) { throw new InvalidArgumentException(sprintf('Operator must contain exactly one key, %d given', count($fieldQuery))); diff --git a/src/Builder/Type/Encode.php b/src/Builder/Type/Encode.php index 792f07e83..d03491623 100644 --- a/src/Builder/Type/Encode.php +++ b/src/Builder/Type/Encode.php @@ -24,11 +24,6 @@ enum Encode */ case Object; - /** - * Same as Object, but only parameters are returned. The operator name will not be used. - */ - case FlatObject; - /** * Get the single parameter value */ diff --git a/src/Builder/Type/OperatorInterface.php b/src/Builder/Type/OperatorInterface.php index 52b1aaa9b..43d9f3f84 100644 --- a/src/Builder/Type/OperatorInterface.php +++ b/src/Builder/Type/OperatorInterface.php @@ -15,5 +15,6 @@ interface OperatorInterface /** @var array */ public const PROPERTIES = []; - public function getOperator(): string; + /** @var string|null */ + public const NAME = null; } diff --git a/src/Builder/Type/QueryObject.php b/src/Builder/Type/QueryObject.php index e07877f3f..d2298837a 100644 --- a/src/Builder/Type/QueryObject.php +++ b/src/Builder/Type/QueryObject.php @@ -56,11 +56,11 @@ private function __construct(array $queriesOrArrayOfQueries) foreach ($queriesOrArrayOfQueries as $fieldPath => $query) { if ($query instanceof QueryInterface) { if ($query instanceof OperatorInterface) { - if (isset($seenQueryOperators[$query->getOperator()])) { - throw new InvalidArgumentException(sprintf('Query operator "%s" cannot be used multiple times in the same query.', $query->getOperator())); + if (isset($seenQueryOperators[$query::NAME])) { + throw new InvalidArgumentException(sprintf('Query operator "%s" cannot be used multiple times in the same query.', $query::NAME)); } - $seenQueryOperators[$query->getOperator()] = true; + $seenQueryOperators[$query::NAME] = true; } $queries[] = $query;