You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-07 13:22:56 +03:00
refactor!: redis 8 compatibility improvements and test infrastructure updates (#2893)
* churn(test): use redislabs/client-libs-test for testing This switches our testing infrastructure from redis/redis-stack to redislabs/client-libs-test Docker image across all packages. This change also updates the default Docker version from 7.4.0-v1 to 8.0-M04-pre. * churn(test): verify CONFIG SET / GET compatibility with Redis 8 - Add tests for Redis 8 search configuration settings - Deprecate Redis Search CONFIG commands in favor of standard CONFIG - Test read-only config restrictions for Redis 8 * churn(test): handle Redis 8 coordinate precision in GEOPOS - Update GEOPOS tests to handle increased precision in Redis 8 (17 decimal places vs 14) - Add precision-aware coordinate comparison helper - Add comprehensive test suite for coordinate comparison function * test(search): adapt SUGGET tests for Redis 8 empty results - Update tests to expect empty array ([]) instead of null for SUGGET variants - Affects sugGet, sugGetWithPayloads, sugGetWithScores, and sugGetWithScoresWithPayloads * test(search): support Redis 8 INFO indexes_all field - Add indexes_all field introduced in Redis 8 to index definition test * refactor!(search): simplify PROFILE commands to return raw response - BREAKING CHANGE: FT.PROFILE now returns raw response, letting users implement their own parsing * test: improve version-specific test coverage - Add `testWithClientIfVersionWithinRange` method to run tests for specific Redis versions - Refactor TestUtils to handle version comparisons more accurately - Update test utilities across Redis modules to run tests against multiple versions, and not against latest only
This commit is contained in:
@@ -1,37 +1,35 @@
|
||||
import { CommandParser } from '@redis/client/dist/lib/client/parser';
|
||||
import { Command, ReplyUnion } from "@redis/client/dist/lib/RESP/types";
|
||||
import AGGREGATE, { AggregateRawReply, FtAggregateOptions, parseAggregateOptions } from "./AGGREGATE";
|
||||
import { ProfileOptions, ProfileRawReply, ProfileReply, transformProfile } from "./PROFILE_SEARCH";
|
||||
import { Command, ReplyUnion, UnwrapReply } from '@redis/client/dist/lib/RESP/types';
|
||||
import AGGREGATE, { AggregateRawReply, FtAggregateOptions, parseAggregateOptions } from './AGGREGATE';
|
||||
import { ProfileOptions, ProfileRawReplyResp2, ProfileReplyResp2, } from './PROFILE_SEARCH';
|
||||
|
||||
export default {
|
||||
NOT_KEYED_COMMAND: true,
|
||||
IS_READ_ONLY: true,
|
||||
parseCommand(
|
||||
parser: CommandParser,
|
||||
index: string,
|
||||
query: string,
|
||||
options?: ProfileOptions & FtAggregateOptions
|
||||
) {
|
||||
parser.push('FT.PROFILE', index, 'AGGREGATE');
|
||||
|
||||
if (options?.LIMITED) {
|
||||
parser.push('LIMITED');
|
||||
IS_READ_ONLY: true,
|
||||
parseCommand(
|
||||
parser: CommandParser,
|
||||
index: string,
|
||||
query: string,
|
||||
options?: ProfileOptions & FtAggregateOptions
|
||||
) {
|
||||
parser.push('FT.PROFILE', index, 'AGGREGATE');
|
||||
|
||||
if (options?.LIMITED) {
|
||||
parser.push('LIMITED');
|
||||
}
|
||||
|
||||
parser.push('QUERY', query);
|
||||
|
||||
parseAggregateOptions(parser, options)
|
||||
},
|
||||
transformReply: {
|
||||
2: (reply: UnwrapReply<ProfileRawReplyResp2<AggregateRawReply>>): ProfileReplyResp2 => {
|
||||
return {
|
||||
results: AGGREGATE.transformReply[2](reply[0]),
|
||||
profile: reply[1]
|
||||
}
|
||||
|
||||
parser.push('QUERY', query);
|
||||
|
||||
parseAggregateOptions(parser, options)
|
||||
},
|
||||
transformReply: {
|
||||
2: (reply: ProfileAggeregateRawReply): ProfileReply => {
|
||||
return {
|
||||
results: AGGREGATE.transformReply[2](reply[0]),
|
||||
profile: transformProfile(reply[1])
|
||||
}
|
||||
},
|
||||
3: undefined as unknown as () => ReplyUnion
|
||||
},
|
||||
unstableResp3: true
|
||||
} as const satisfies Command;
|
||||
|
||||
type ProfileAggeregateRawReply = ProfileRawReply<AggregateRawReply>;
|
||||
3: (reply: ReplyUnion): ReplyUnion => reply
|
||||
},
|
||||
unstableResp3: true
|
||||
} as const satisfies Command;
|
||||
|
Reference in New Issue
Block a user