Skip to content

Commit 41c0181

Browse files
committed
add hscanNoValuesIterator
1 parent acd18f2 commit 41c0181

File tree

4 files changed

+34
-16
lines changed

4 files changed

+34
-16
lines changed

packages/client/lib/client/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -901,6 +901,19 @@ export default class RedisClient<
901901
} while (cursor !== '0');
902902
}
903903

904+
async* hScanValuesIterator(
905+
this: RedisClientType<M, F, S, RESP, TYPE_MAPPING>,
906+
key: RedisArgument,
907+
options?: ScanCommonOptions & ScanIteratorOptions
908+
) {
909+
let cursor = options?.cursor ?? '0';
910+
do {
911+
const reply = await this.hScanNoValues(key, cursor, options);
912+
cursor = reply.cursor;
913+
yield reply.fields;
914+
} while (cursor !== '0');
915+
}
916+
904917
async* sScanIterator(
905918
this: RedisClientType<M, F, S, RESP, TYPE_MAPPING>,
906919
key: RedisArgument,

packages/client/lib/commands/HSCAN_VALUES.spec.ts renamed to packages/client/lib/commands/HSCAN_NOVALUES.spec.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,54 @@
11
import { strict as assert } from 'node:assert';
22
import testUtils, { GLOBAL } from '../test-utils';
3-
import HSCAN_VALUES from './HSCAN_VALUES';
3+
import HSCAN_NOVALUES from './HSCAN_NOVALUES';
44

55
describe('HSCAN_VALUES', () => {
66
describe('transformArguments', () => {
77
it('cusror only', () => {
88
assert.deepEqual(
9-
HSCAN_VALUES.transformArguments('key', '0'),
10-
['HSCAN', 'key', '0', 'VALUES']
9+
HSCAN_NOVALUES.transformArguments('key', '0'),
10+
['HSCAN', 'key', '0', 'NOVALUES']
1111
);
1212
});
1313

1414
it('with MATCH', () => {
1515
assert.deepEqual(
16-
HSCAN_VALUES.transformArguments('key', '0', {
16+
HSCAN_NOVALUES.transformArguments('key', '0', {
1717
MATCH: 'pattern'
1818
}),
19-
['HSCAN', 'key', '0', 'MATCH', 'pattern', 'VALUES']
19+
['HSCAN', 'key', '0', 'MATCH', 'pattern', 'NOVALUES']
2020
);
2121
});
2222

2323
it('with COUNT', () => {
2424
assert.deepEqual(
25-
HSCAN_VALUES.transformArguments('key', '0', {
25+
HSCAN_NOVALUES.transformArguments('key', '0', {
2626
COUNT: 1
2727
}),
28-
['HSCAN', 'key', '0', 'COUNT', '1', 'VALUES']
28+
['HSCAN', 'key', '0', 'COUNT', '1', 'NOVALUES']
2929
);
3030
});
3131

3232
it('with MATCH & COUNT', () => {
3333
assert.deepEqual(
34-
HSCAN_VALUES.transformArguments('key', '0', {
34+
HSCAN_NOVALUES.transformArguments('key', '0', {
3535
MATCH: 'pattern',
3636
COUNT: 1
3737
}),
38-
['HSCAN', 'key', '0', 'MATCH', 'pattern', 'COUNT', '1', 'VALUES']
38+
['HSCAN', 'key', '0', 'MATCH', 'pattern', 'COUNT', '1', 'NOVALUES']
3939
);
4040
});
4141
});
4242

4343
testUtils.testWithClient('client.hScanValues', async client => {
4444
const [, reply] = await Promise.all([
4545
client.hSet('key', 'field', 'value'),
46-
client.hScanValues('key', '0')
46+
client.hScanNoValues('key', '0')
4747
]);
4848

4949
assert.deepEqual(reply, {
5050
cursor: '0',
51-
entries: [
51+
fields: [
5252
'field',
5353
]
5454
});

packages/client/lib/commands/HSCAN_VALUES.ts renamed to packages/client/lib/commands/HSCAN_NOVALUES.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ export default {
1010
options?: ScanCommonOptions
1111
) {
1212
const args = pushScanArguments(['HSCAN', key], cursor, options);
13-
args.push('VALUES');
13+
args.push('NOVALUES');
1414

1515
return args;
1616
},
17-
transformReply: undefined as unknown as () => [BlobStringReply, Array<BlobStringReply>]
17+
transformReply([cursor, fields]: [BlobStringReply, Array<BlobStringReply>]) {
18+
return {
19+
cursor,
20+
fields
21+
}
22+
}
1823
} as const satisfies Command;

packages/client/lib/commands/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ import HRANDFIELD_COUNT_WITHVALUES from './HRANDFIELD_COUNT_WITHVALUES';
144144
import HRANDFIELD_COUNT from './HRANDFIELD_COUNT';
145145
import HRANDFIELD from './HRANDFIELD';
146146
import HSCAN from './HSCAN';
147-
import HSCAN_VALUES from './HSCAN_VALUES';
147+
import HSCAN_NOVALUES from './HSCAN_NOVALUES';
148148
import HSET from './HSET';
149149
import HSETNX from './HSETNX';
150150
import HSTRLEN from './HSTRLEN';
@@ -624,8 +624,8 @@ export default {
624624
hRandField: HRANDFIELD,
625625
HSCAN,
626626
hScan: HSCAN,
627-
HSCAN_VALUES,
628-
hScanValues: HSCAN_VALUES,
627+
HSCAN_NOVALUES,
628+
hScanNoValues: HSCAN_NOVALUES,
629629
HSET,
630630
hSet: HSET,
631631
HSETNX,

0 commit comments

Comments
 (0)