You've already forked node-redis
mirror of
https://github.com/redis/node-redis.git
synced 2025-08-06 02:15:48 +03:00
fix ZUNIONSTORE
This commit is contained in:
@@ -1,56 +1,59 @@
|
||||
// import { strict as assert } from 'assert';
|
||||
// import testUtils, { GLOBAL } from '../test-utils';
|
||||
// import { transformArguments } from './ZUNIONSTORE';
|
||||
import { strict as assert } from 'assert';
|
||||
import testUtils, { GLOBAL } from '../test-utils';
|
||||
import ZUNIONSTORE from './ZUNIONSTORE';
|
||||
|
||||
// describe('ZUNIONSTORE', () => {
|
||||
// describe('transformArguments', () => {
|
||||
// it('key (string)', () => {
|
||||
// assert.deepEqual(
|
||||
// transformArguments('destination', 'key'),
|
||||
// ['ZUNIONSTORE', 'destination', '1', 'key']
|
||||
// );
|
||||
// });
|
||||
describe('ZUNIONSTORE', () => {
|
||||
describe('transformArguments', () => {
|
||||
it('key (string)', () => {
|
||||
assert.deepEqual(
|
||||
ZUNIONSTORE.transformArguments('destination', 'key'),
|
||||
['ZUNIONSTORE', 'destination', '1', 'key']
|
||||
);
|
||||
});
|
||||
|
||||
// it('keys (array)', () => {
|
||||
// assert.deepEqual(
|
||||
// transformArguments('destination', ['1', '2']),
|
||||
// ['ZUNIONSTORE', 'destination', '2', '1', '2']
|
||||
// );
|
||||
// });
|
||||
it('keys (array)', () => {
|
||||
assert.deepEqual(
|
||||
ZUNIONSTORE.transformArguments('destination', ['1', '2']),
|
||||
['ZUNIONSTORE', 'destination', '2', '1', '2']
|
||||
);
|
||||
});
|
||||
|
||||
// it('with WEIGHTS', () => {
|
||||
// assert.deepEqual(
|
||||
// transformArguments('destination', 'key', {
|
||||
// WEIGHTS: [1]
|
||||
// }),
|
||||
// ['ZUNIONSTORE', 'destination', '1', 'key', 'WEIGHTS', '1']
|
||||
// );
|
||||
// });
|
||||
it('with WEIGHTS', () => {
|
||||
assert.deepEqual(
|
||||
ZUNIONSTORE.transformArguments('destination', 'key', {
|
||||
WEIGHTS: [1]
|
||||
}),
|
||||
['ZUNIONSTORE', 'destination', '1', 'key', 'WEIGHTS', '1']
|
||||
);
|
||||
});
|
||||
|
||||
// it('with AGGREGATE', () => {
|
||||
// assert.deepEqual(
|
||||
// transformArguments('destination', 'key', {
|
||||
// AGGREGATE: 'SUM'
|
||||
// }),
|
||||
// ['ZUNIONSTORE', 'destination', '1', 'key', 'AGGREGATE', 'SUM']
|
||||
// );
|
||||
// });
|
||||
it('with AGGREGATE', () => {
|
||||
assert.deepEqual(
|
||||
ZUNIONSTORE.transformArguments('destination', 'key', {
|
||||
AGGREGATE: 'SUM'
|
||||
}),
|
||||
['ZUNIONSTORE', 'destination', '1', 'key', 'AGGREGATE', 'SUM']
|
||||
);
|
||||
});
|
||||
|
||||
// it('with WEIGHTS, AGGREGATE', () => {
|
||||
// assert.deepEqual(
|
||||
// transformArguments('destination', 'key', {
|
||||
// WEIGHTS: [1],
|
||||
// AGGREGATE: 'SUM'
|
||||
// }),
|
||||
// ['ZUNIONSTORE', 'destination', '1', 'key', 'WEIGHTS', '1', 'AGGREGATE', 'SUM']
|
||||
// );
|
||||
// });
|
||||
// });
|
||||
it('with WEIGHTS, AGGREGATE', () => {
|
||||
assert.deepEqual(
|
||||
ZUNIONSTORE.transformArguments('destination', 'key', {
|
||||
WEIGHTS: [1],
|
||||
AGGREGATE: 'SUM'
|
||||
}),
|
||||
['ZUNIONSTORE', 'destination', '1', 'key', 'WEIGHTS', '1', 'AGGREGATE', 'SUM']
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// testUtils.testWithClient('client.zUnionStore', async client => {
|
||||
// assert.equal(
|
||||
// await client.zUnionStore('destination', 'key'),
|
||||
// 0
|
||||
// );
|
||||
// }, GLOBAL.SERVERS.OPEN);
|
||||
// });
|
||||
testUtils.testAll('zUnionStore', async client => {
|
||||
assert.equal(
|
||||
await client.zUnionStore('destination', 'key'),
|
||||
0
|
||||
);
|
||||
}, {
|
||||
client: GLOBAL.SERVERS.OPEN,
|
||||
cluster: GLOBAL.CLUSTERS.OPEN
|
||||
});
|
||||
});
|
||||
|
@@ -1,29 +1,30 @@
|
||||
// import { RedisCommandArgument, RedisCommandArguments } from '.';
|
||||
// import { pushVariadicArgument } from './generic-transformers';
|
||||
import { RedisArgument, NumberReply, Command, } from '../RESP/types';
|
||||
import { RedisVariadicArgument, pushVariadicArgument } from './generic-transformers';
|
||||
|
||||
// export const FIRST_KEY_INDEX = 1;
|
||||
export interface ZUnionOptions {
|
||||
WEIGHTS?: Array<number>;
|
||||
AGGREGATE?: 'SUM' | 'MIN' | 'MAX';
|
||||
}
|
||||
|
||||
// interface ZUnionOptions {
|
||||
// WEIGHTS?: Array<number>;
|
||||
// AGGREGATE?: 'SUM' | 'MIN' | 'MAX';
|
||||
// }
|
||||
export default {
|
||||
FIRST_KEY_INDEX: 1,
|
||||
IS_READ_ONLY: false,
|
||||
transformArguments(
|
||||
destination: RedisArgument,
|
||||
keys: RedisVariadicArgument,
|
||||
options?: ZUnionOptions
|
||||
) {
|
||||
const args = pushVariadicArgument(['ZUNIONSTORE', destination], keys);
|
||||
|
||||
// export function transformArguments(
|
||||
// destination: RedisCommandArgument,
|
||||
// keys: Array<RedisCommandArgument> | RedisCommandArgument,
|
||||
// options?: ZUnionOptions
|
||||
// ): RedisCommandArguments {
|
||||
// const args = pushVariadicArgument(['ZUNIONSTORE', destination], keys);
|
||||
if (options?.WEIGHTS) {
|
||||
args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));
|
||||
}
|
||||
|
||||
// if (options?.WEIGHTS) {
|
||||
// args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));
|
||||
// }
|
||||
if (options?.AGGREGATE) {
|
||||
args.push('AGGREGATE', options.AGGREGATE);
|
||||
}
|
||||
|
||||
// if (options?.AGGREGATE) {
|
||||
// args.push('AGGREGATE', options.AGGREGATE);
|
||||
// }
|
||||
|
||||
// return args;
|
||||
// }
|
||||
|
||||
// export declare function transformReply(): number;
|
||||
return args;
|
||||
},
|
||||
transformReply: undefined as unknown as () => NumberReply
|
||||
} as const satisfies Command;
|
||||
|
@@ -171,6 +171,7 @@ import ZREVRANK from './ZREVRANK';
|
||||
import ZSCAN from './ZSCAN';
|
||||
import ZSCORE from './ZSCORE';
|
||||
import ZUNION from './ZUNION';
|
||||
import ZUNIONSTORE from './ZUNIONSTORE';
|
||||
import { Command } from '../RESP/types';
|
||||
|
||||
export default {
|
||||
@@ -520,5 +521,7 @@ export default {
|
||||
ZSCORE,
|
||||
zScore: ZSCORE,
|
||||
ZUNION,
|
||||
zUnion: ZUNION
|
||||
zUnion: ZUNION,
|
||||
ZUNIONSTORE,
|
||||
zUnionStore: ZUNIONSTORE,
|
||||
} as const satisfies Record<string, Command>;
|
||||
|
Reference in New Issue
Block a user