Skip to content

Commit fe16dc0

Browse files
Avital-Fineleibale
andauthored
Support BIT|BYTE option (#2035)
* Support BIT|BYTE option * clean code * clean code * clean code Co-authored-by: leibale <leibale1998@gmail.com>
1 parent 24cd9ba commit fe16dc0

File tree

4 files changed

+40
-10
lines changed

4 files changed

+40
-10
lines changed

packages/client/lib/commands/BITCOUNT.spec.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,27 @@ describe('BITCOUNT', () => {
1111
);
1212
});
1313

14-
it('with range', () => {
15-
assert.deepEqual(
16-
transformArguments('key', {
17-
start: 0,
18-
end: 1
19-
}),
20-
['BITCOUNT', 'key', '0', '1']
21-
);
14+
describe('with range', () => {
15+
it('simple', () => {
16+
assert.deepEqual(
17+
transformArguments('key', {
18+
start: 0,
19+
end: 1
20+
}),
21+
['BITCOUNT', 'key', '0', '1']
22+
);
23+
});
24+
25+
it('with mode', () => {
26+
assert.deepEqual(
27+
transformArguments('key', {
28+
start: 0,
29+
end: 1,
30+
mode: 'BIT'
31+
}),
32+
['BITCOUNT', 'key', '0', '1', 'BIT']
33+
);
34+
});
2235
});
2336
});
2437

packages/client/lib/commands/BITCOUNT.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export const IS_READ_ONLY = true;
77
interface BitCountRange {
88
start: number;
99
end: number;
10+
mode?: 'BYTE' | 'BIT';
1011
}
1112

1213
export function transformArguments(
@@ -20,6 +21,10 @@ export function transformArguments(
2021
range.start.toString(),
2122
range.end.toString()
2223
);
24+
25+
if (range?.mode) {
26+
args.push(range.mode);
27+
}
2328
}
2429

2530
return args;

packages/client/lib/commands/BITPOS.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,19 @@ describe('BITPOS', () => {
1818
);
1919
});
2020

21-
it('with start, end', () => {
21+
it('with start and end', () => {
2222
assert.deepEqual(
2323
transformArguments('key', 1, 1, -1),
2424
['BITPOS', 'key', '1', '1', '-1']
2525
);
2626
});
27+
28+
it('with start, end and mode', () => {
29+
assert.deepEqual(
30+
transformArguments('key', 1, 1, -1, 'BIT'),
31+
['BITPOS', 'key', '1', '1', '-1', 'BIT']
32+
);
33+
});
2734
});
2835

2936
testUtils.testWithClient('client.bitPos', async client => {

packages/client/lib/commands/BITPOS.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export function transformArguments(
99
key: RedisCommandArgument,
1010
bit: BitValue,
1111
start?: number,
12-
end?: number
12+
end?: number,
13+
mode?: 'BYTE' | 'BIT'
1314
): RedisCommandArguments {
1415
const args = ['BITPOS', key, bit.toString()];
1516

@@ -21,6 +22,10 @@ export function transformArguments(
2122
args.push(end.toString());
2223
}
2324

25+
if (mode) {
26+
args.push(mode);
27+
}
28+
2429
return args;
2530
}
2631

0 commit comments

Comments
 (0)