Predis to v2.2.2

This commit is contained in:
the-djmaze 2024-04-08 16:29:55 +02:00
parent 9510347d3a
commit 969dca5f7e
449 changed files with 22013 additions and 2 deletions

View file

@ -0,0 +1,49 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Traits\With;
use Predis\Command\Command;
use UnexpectedValueException;
/**
* @mixin Command
*/
trait WithCoord
{
public function setArguments(array $arguments)
{
$argumentsLength = count($arguments);
if (
static::$withCoordArgumentPositionOffset >= $argumentsLength
|| false === $arguments[static::$withCoordArgumentPositionOffset]
) {
parent::setArguments($arguments);
return;
}
$argument = $arguments[static::$withCoordArgumentPositionOffset];
if (true === $argument) {
$argument = 'WITHCOORD';
} else {
throw new UnexpectedValueException('Wrong WITHCOORD argument type');
}
$argumentsBefore = array_slice($arguments, 0, static::$withCoordArgumentPositionOffset);
$argumentsAfter = array_slice($arguments, static::$withCoordArgumentPositionOffset + 1);
parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter));
}
}

View file

@ -0,0 +1,45 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Traits\With;
use UnexpectedValueException;
trait WithDist
{
public function setArguments(array $arguments)
{
$argumentsLength = count($arguments);
if (
static::$withDistArgumentPositionOffset >= $argumentsLength
|| false === $arguments[static::$withDistArgumentPositionOffset]
) {
parent::setArguments($arguments);
return;
}
$argument = $arguments[static::$withDistArgumentPositionOffset];
if (true === $argument) {
$argument = 'WITHDIST';
} else {
throw new UnexpectedValueException('Wrong WITHDIST argument type');
}
$argumentsBefore = array_slice($arguments, 0, static::$withDistArgumentPositionOffset);
$argumentsAfter = array_slice($arguments, static::$withDistArgumentPositionOffset + 1);
parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter));
}
}

View file

@ -0,0 +1,45 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Traits\With;
use UnexpectedValueException;
trait WithHash
{
public function setArguments(array $arguments)
{
$argumentsLength = count($arguments);
if (
static::$withHashArgumentPositionOffset >= $argumentsLength
|| false === $arguments[static::$withHashArgumentPositionOffset]
) {
parent::setArguments($arguments);
return;
}
$argument = $arguments[static::$withHashArgumentPositionOffset];
if (true === $argument) {
$argument = 'WITHHASH';
} else {
throw new UnexpectedValueException('Wrong WITHHASH argument type');
}
$argumentsBefore = array_slice($arguments, 0, static::$withHashArgumentPositionOffset);
$argumentsAfter = array_slice($arguments, static::$withHashArgumentPositionOffset + 1);
parent::setArguments(array_merge($argumentsBefore, [$argument], $argumentsAfter));
}
}

View file

@ -0,0 +1,68 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Traits\With;
use Predis\Command\Command;
/**
* Handles last argument passed into command as WITHSCORES.
*
* @mixin Command
*/
trait WithScores
{
public function setArguments(array $arguments)
{
$withScores = array_pop($arguments);
if (is_bool($withScores) && $withScores) {
$arguments[] = 'WITHSCORES';
} elseif (!is_bool($withScores)) {
$arguments[] = $withScores;
}
parent::setArguments($arguments);
}
/**
* Checks for the presence of the WITHSCORES modifier.
*
* @return bool
*/
private function isWithScoreModifier(): bool
{
$arguments = parent::getArguments();
$lastArgument = (!empty($arguments)) ? $arguments[count($arguments) - 1] : null;
return is_string($lastArgument) && strtoupper($lastArgument) === 'WITHSCORES';
}
public function parseResponse($data)
{
if ($this->isWithScoreModifier()) {
$result = [];
for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) {
if (is_array($data[$i])) {
$result[$data[$i][0]] = $data[$i][1]; // Relay
} elseif (array_key_exists($i + 1, $data)) {
$result[$data[$i]] = $data[++$i];
}
}
return $result;
}
return $data;
}
}

View file

@ -0,0 +1,34 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Traits\With;
use Predis\Command\Command;
/**
* @mixin Command
*/
trait WithValues
{
public function setArguments(array $arguments)
{
$withValues = array_pop($arguments);
if (is_bool($withValues) && $withValues) {
$arguments[] = 'WITHVALUES';
} elseif (!is_bool($withValues)) {
$arguments[] = $withValues;
}
parent::setArguments($arguments);
}
}