add method

Future<void> add({
  1. required String key,
  2. required RedisTimeSeriesTimestamp timestamp,
  3. required double value,
  4. Duration? retention,
  5. RedisTimeSeriesEncoding? encoding,
  6. int? chunkSize,
  7. RedisTimeSeriesDuplicatePolicy? duplicatePolicy,
  8. RedisTimeSeriesDuplicatePolicy? onDuplicate,
  9. List<({String label, String value})>? labels,
})

Append a sample to a time series. Equivalent to the TS.ADD command. Note: When the specified key does not exist, a new time series is created. https://redis.io/commands/ts.add

Implementation

Future<void> add({
  required String key,
  required RedisTimeSeriesTimestamp timestamp,
  required double value,
  Duration? retention,
  RedisTimeSeriesEncoding? encoding,
  int? chunkSize,
  RedisTimeSeriesDuplicatePolicy? duplicatePolicy,
  RedisTimeSeriesDuplicatePolicy? onDuplicate,
  List<({String label, String value})>? labels,
}) {
  return _client.execute([
    'TS.ADD',
    key,
    timestamp.value,
    value,
    if (retention != null) ...['RETENTION', retention.inMilliseconds],
    if (encoding != null) ...['ENCODING', encoding.toArgument()],
    if (chunkSize != null) ...['CHUNK_SIZE', chunkSize],
    if (duplicatePolicy != null) ...[
      'DUPLICATE_POLICY',
      duplicatePolicy.toArgument(),
    ],
    if (onDuplicate != null) ...['ON_DUPLICATE', onDuplicate.toArgument()],
    if (labels != null) ...[
      'LABELS',
      for (final label in labels) ...[label.label, label.value],
    ],
  ]);
}