Skip to content

Add TS.READ command support - #95

Merged
mumez merged 10 commits into
developfrom
feature/ts-support_v810
Sep 7, 2026
Merged

mumez merged 10 commits into
developfrom
feature/ts-support_v810

Conversation

@mumez

@mumez mumez commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds support for Redis 8.10's TS.READ command (optionally-blocking cursor read of a time series) to the RediStick-TimeSeries package.

Changes

  • RsTsReadOptions: new value class implementing the BLOCK milliseconds min_count / MAX_COUNT max_count options for TS.READ, following the existing Options-pattern idiom.
  • RsRedisEndpoint >> tsRead:cursor: / tsRead:cursor:using:: new endpoint methods, reusing the existing RsTsRange class >> normalizeTimestamp: for cursor normalization (literal timestamp or -/+/$ sentinels) and the existing tsParseRangeSamples: helper for reply parsing.
  • RsTsReadOptionsTest: 6 new unit tests for RsTsReadOptions.
  • RsTsTest: 8 new integration test methods covering basic reads, sentinel cursors, MAX_COUNT, and BLOCK (both immediate-return and timeout-with-partial-results cases).
  • doc/plans/2026-09-07-ts-read-implementation.md and doc/scripting-features/feature-ts-read.scripting.md: implementation plan and the AgenticBrowser orchestration script used to implement it.

Commits Included

81e2c56 Add TS.READ implementation plan and orchestration script
09ee944 Fix lint findings in TS.READ implementation
6dd9739 Add RsRedisEndpoint>>tsRead:cursor: for TS.READ support
78ffe40 Add RsTsReadOptions for TS.READ BLOCK/MAX_COUNT options

Files Changed

doc/plans/2026-09-07-ts-read-implementation.md
doc/scripting-features/feature-ts-read.scripting.md
src/RediStick-TimeSeries-Tests/RsTsReadOptionsTest.class.st
src/RediStick-TimeSeries-Tests/RsTsTest.class.st
src/RediStick-TimeSeries/RsRedisEndpoint.extension.st
src/RediStick-TimeSeries/RsTsReadOptions.class.st

🤖 Generated with Claude Code

mumez and others added 10 commits September 7, 2026 15:20
Add missing class comment to RsTsReadOptions.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Documents the design (RsTsReadOptions, tsRead:cursor:/tsRead:cursor:using:)
and the AgenticBrowser orchestration used to implement it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Introduce `RsTsReadCursor` to encapsulate cursor logic and add a fluent
`tsRead:cursorBy:using:` API to `RsRedisEndpoint` for improved usability
and type safety. Updated existing tests and added new test cases for the
new cursor builder.
Move cursor validation from construction to #asArgumentValue to allow
reassignment of timestamps before the command is sent.
- Use semantic methods (earliest, latest, newest) instead of raw values
- Fix typo in timestamp: parameter name
Add validation checks for nil values and invalid string formats in
RsTsReadCursor>>validate to ensure only valid timestamps or sentinels
are sent to Redis.
Ensure both blockMilliseconds and blockMinCount are provided when using
the BLOCK option, as required by Redis.
@mumez
mumez merged commit 266b8f9 into develop Sep 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant