diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesAsyncCommandsImpl.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesAsyncCommandsImpl.java index e89b866..34dd90b 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesAsyncCommandsImpl.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesAsyncCommandsImpl.java @@ -269,6 +269,11 @@ public RedisFuture> tsQueryIndex(V... filters){ return dispatch(timeSeriesCommandBuilder.queryIndex(filters)); } + @Override + public RedisFuture tsDel(K key, TimeRange timeRange){ + return dispatch(timeSeriesCommandBuilder.tsDel(key, timeRange)); + } + @Override public RedisFuture ftCreate(K index, Field... fields) { return ftCreate(index, null, fields); diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesReactiveCommandsImpl.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesReactiveCommandsImpl.java index 0a5f3a0..742aca2 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesReactiveCommandsImpl.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/RedisModulesReactiveCommandsImpl.java @@ -268,6 +268,9 @@ public Flux tsInfoDebug(K key) { @Override public Flux tsQueryIndex(V... filters){return createDissolvingFlux(()->timeSeriesCommandBuilder.queryIndex(filters));} + @Override + public Mono tsDel(K key, TimeRange timeRange) { return createMono(()->timeSeriesCommandBuilder.tsDel(key, timeRange));} + @Override public Mono ftCreate(K index, Field... fields) { return ftCreate(index, null, fields); diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/async/RedisTimeSeriesAsyncCommands.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/async/RedisTimeSeriesAsyncCommands.java index 3bf3b06..a826391 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/async/RedisTimeSeriesAsyncCommands.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/async/RedisTimeSeriesAsyncCommands.java @@ -78,4 +78,6 @@ public interface RedisTimeSeriesAsyncCommands { RedisFuture> tsInfoDebug(K key); RedisFuture> tsQueryIndex(V... filters); + + RedisFuture tsDel(K key, TimeRange range); } diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/reactive/RedisTimeSeriesReactiveCommands.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/reactive/RedisTimeSeriesReactiveCommands.java index 7a98a38..59f2427 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/reactive/RedisTimeSeriesReactiveCommands.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/reactive/RedisTimeSeriesReactiveCommands.java @@ -71,4 +71,6 @@ public interface RedisTimeSeriesReactiveCommands { Flux tsInfoDebug(K key); Flux tsQueryIndex(V... filters); + + Mono tsDel(K key, TimeRange range); } diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/sync/RedisTimeSeriesCommands.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/sync/RedisTimeSeriesCommands.java index 867f9a4..6d9899e 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/sync/RedisTimeSeriesCommands.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/api/sync/RedisTimeSeriesCommands.java @@ -76,4 +76,6 @@ public interface RedisTimeSeriesCommands { List tsInfoDebug(K key); List tsQueryIndex(V... filter); + + Long tsDel(K key, TimeRange range); } diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterAsyncCommandsImpl.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterAsyncCommandsImpl.java index 69f6ba9..75c0e7f 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterAsyncCommandsImpl.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterAsyncCommandsImpl.java @@ -434,6 +434,9 @@ public RedisFuture> tsInfoDebug(K key) { @Override public RedisFuture> tsQueryIndex(V... filters){return delegate.tsQueryIndex(filters);} + @Override + public RedisFuture tsDel(K key, TimeRange timeRange){return delegate.tsDel(key, timeRange);} + @Override public RedisFuture jsonDel(K key) { return delegate.jsonDel(key); diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterReactiveCommandsImpl.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterReactiveCommandsImpl.java index acedf98..1dc65e0 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterReactiveCommandsImpl.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/cluster/RedisModulesAdvancedClusterReactiveCommandsImpl.java @@ -442,6 +442,8 @@ public Flux tsInfoDebug(K key) { @Override public Flux tsQueryIndex(V... filters){ return delegate.tsQueryIndex(filters);} + @Override + public Mono tsDel(K key, TimeRange timeRange) { return delegate.tsDel(key, timeRange);} @Override public Mono jsonDel(K key) { return delegate.jsonDel(key); diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/protocol/TimeSeriesCommandType.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/protocol/TimeSeriesCommandType.java index 4fe632d..1f75a16 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/protocol/TimeSeriesCommandType.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/protocol/TimeSeriesCommandType.java @@ -11,7 +11,7 @@ */ public enum TimeSeriesCommandType implements ProtocolKeyword { - ADD, ALTER, CREATE, CREATERULE, DELETERULE, MADD, INCRBY, DECRBY, RANGE, REVRANGE, MRANGE, MREVRANGE, GET, MGET, INFO, QUERYINDEX; + ADD, ALTER, CREATE, CREATERULE, DELETERULE, MADD, INCRBY, DECRBY, RANGE, REVRANGE, MRANGE, MREVRANGE, GET, MGET, INFO, QUERYINDEX, DEL; private static final String PREFIX = "TS."; diff --git a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/timeseries/TimeSeriesCommandBuilder.java b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/timeseries/TimeSeriesCommandBuilder.java index 3a3c140..dcaae2e 100644 --- a/subprojects/lettucemod/src/main/java/com/redis/lettucemod/timeseries/TimeSeriesCommandBuilder.java +++ b/subprojects/lettucemod/src/main/java/com/redis/lettucemod/timeseries/TimeSeriesCommandBuilder.java @@ -216,4 +216,13 @@ public Command> queryIndex(V... filters){ } return createCommand(TimeSeriesCommandType.QUERYINDEX, new ValueListOutput<>(codec), args); } + + public Command tsDel(K key, TimeRange timeRange){ + notNullKey(key); + notNull(timeRange, "time range"); + CommandArgs args = args(key); + timeRange.build(args); + + return createCommand(TimeSeriesCommandType.DEL, new IntegerOutput<>(codec), args); + } } diff --git a/subprojects/lettucemod/src/test/java/com/redis/lettucemod/RedisStackTests.java b/subprojects/lettucemod/src/test/java/com/redis/lettucemod/RedisStackTests.java index 8c09238..788be9a 100644 --- a/subprojects/lettucemod/src/test/java/com/redis/lettucemod/RedisStackTests.java +++ b/subprojects/lettucemod/src/test/java/com/redis/lettucemod/RedisStackTests.java @@ -116,6 +116,24 @@ void tsQueryIndex(){ assertTrue(res.contains(key2)); } + @Test + void tsDel(){ + String key = "tsDel:key"; + connection.sync().del(key); + assertEquals("OK", connection.sync().tsCreate(key, CreateOptions.builder().build())); + for(int i = 0; i < 5; i ++){ + connection.sync().tsAdd(key, Sample.of(42)); + + try { + Thread.sleep(20); + } catch (InterruptedException e) { + // ignored + } + } + + assertEquals(5, connection.sync().tsDel(key, TimeRange.from(0).to(Long.MAX_VALUE).build())); + } + @Test void tsMrange() { RedisTimeSeriesCommands ts = connection.sync();