Skip to content

Commit e148178

Browse files
committed
fix TS.INFO parsing
eliminate dependence on fixed positions of info properties
1 parent 3b53ffa commit e148178

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

src/TimeSeries.php

+25-5
Original file line numberDiff line numberDiff line change
@@ -491,20 +491,40 @@ public function getLastSamples(Filter $filter): array
491491
public function info(string $key): Metadata
492492
{
493493
$result = $this->redis->executeCommand(['TS.INFO', $key]);
494+
$result = $this->parseInfo($result);
494495

495496
$labels = [];
496-
foreach ($result[9] as $strLabel) {
497-
$labels[] = new Label($strLabel[0], $strLabel[1]);
497+
foreach ($result['labels'] as $label) {
498+
$labels[] = new Label($label[0], $label[1]);
498499
}
499500

500-
$sourceKey = $result[11] === false ? null : $result[11];
501+
$sourceKey = $result['sourceKey'] === false ? null : $result['sourceKey'];
501502

502503
$rules = [];
503-
foreach ($result[13] as $rule) {
504+
foreach ($result['rules'] as $rule) {
504505
$rules[$rule[0]] = new AggregationRule($rule[2], $rule[1]);
505506
}
506507

507-
return Metadata::fromRedis($result[1], $result[3], $result[5], $result[7], $labels, $sourceKey, $rules);
508+
return Metadata::fromRedis(
509+
$result['lastTimestamp'],
510+
$result['retentionTime'],
511+
$result['chunkCount'],
512+
$result['maxSamplesPerChunk'],
513+
$labels,
514+
$sourceKey,
515+
$rules
516+
);
517+
}
518+
519+
protected function parseInfo(array $info)
520+
{
521+
$chunks = array_chunk($result, 2);
522+
$props = [];
523+
foreach ($chunks as $chunk) {
524+
$props[$chunk[0]] = $chunk[1];
525+
}
526+
527+
return $props;
508528
}
509529

510530
/**

0 commit comments

Comments
 (0)