1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

JSON.STRAPPEND

This commit is contained in:
Leibale
2023-08-01 14:52:08 -04:00
parent fd016ee1b2
commit d0801921e7
3 changed files with 43 additions and 52 deletions

View File

@@ -178,7 +178,7 @@ Some command arguments/replies have changed to align more closely to data types
- `TOPK.QUERY`: `Array<number>` -> `Array<boolean>` - `TOPK.QUERY`: `Array<number>` -> `Array<boolean>`
- `GRAPH.SLOWLOG`: `timestamp` has been changed from `Date` to `number` - `GRAPH.SLOWLOG`: `timestamp` has been changed from `Date` to `number`
- `JSON.ARRINDEX`: `start` and `end` arguments moved to `{ range: { start: number; end: number; }; }` [^future-proofing] - `JSON.ARRINDEX`: `start` and `end` arguments moved to `{ range: { start: number; end: number; }; }` [^future-proofing]
- `JSON.ARRLEN`, `JSON.CLEAR`, `JSON.DEBUG MEMORY`, `JSON.DEL`, `JSON.FORGET`, `JSON.OBJKEYS`, `JSON.OBJLEN`, `JSON.STRLEN`, `JSON.TYPE`: `path` argument moved to `{ path: string; }` [^future-proofing] - `JSON.ARRLEN`, `JSON.CLEAR`, `JSON.DEBUG MEMORY`, `JSON.DEL`, `JSON.FORGET`, `JSON.OBJKEYS`, `JSON.OBJLEN`, `JSON.STRAPPEND`, `JSON.STRLEN`, `JSON.TYPE`: `path` argument moved to `{ path: string; }` [^future-proofing]
- : `path` argument moved to `{ path: string; }` [^future-proofing] - : `path` argument moved to `{ path: string; }` [^future-proofing]
- `TS.[M][REV]RANGE`: `enum TimeSeriesBucketTimestamp` -> `const TIME_SERIES_BUCKET_TIMESTAMP` [^enum-to-constants], `enum TimeSeriesReducers` -> `const TIME_SERIES_REDUCERS` [^enum-to-constants], the `ALIGN` argument has been moved into `AGGREGRATION` - `TS.[M][REV]RANGE`: `enum TimeSeriesBucketTimestamp` -> `const TIME_SERIES_BUCKET_TIMESTAMP` [^enum-to-constants], `enum TimeSeriesReducers` -> `const TIME_SERIES_REDUCERS` [^enum-to-constants], the `ALIGN` argument has been moved into `AGGREGRATION`
- `TS.SYNUPDATE`: `Array<string | Array<string>>` -> `Record<string, Array<string>>` - `TS.SYNUPDATE`: `Array<string | Array<string>>` -> `Record<string, Array<string>>`

View File

@@ -1,30 +1,32 @@
// import { strict as assert } from 'assert'; import { strict as assert } from 'assert';
// import testUtils, { GLOBAL } from '../test-utils'; import testUtils, { GLOBAL } from '../test-utils';
// import { transformArguments } from './STRAPPEND'; import STRAPPEND from './STRAPPEND';
// describe('STRAPPEND', () => { describe('JSON.STRAPPEND', () => {
// describe('transformArguments', () => { describe('transformArguments', () => {
// it('without path', () => { it('simple', () => {
// assert.deepEqual( assert.deepEqual(
// transformArguments('key', 'append'), STRAPPEND.transformArguments('key', 'append'),
// ['JSON.STRAPPEND', 'key', '"append"'] ['JSON.STRAPPEND', 'key', '"append"']
// ); );
// }); });
// it('with path', () => { it('with path', () => {
// assert.deepEqual( assert.deepEqual(
// transformArguments('key', '$', 'append'), STRAPPEND.transformArguments('key', 'append', {
// ['JSON.STRAPPEND', 'key', '$', '"append"'] path: '$'
// ); }),
// }); ['JSON.STRAPPEND', 'key', '$', '"append"']
// }); );
});
});
// testUtils.testWithClient('client.json.strAppend', async client => { testUtils.testWithClient('client.json.strAppend', async client => {
// await client.json.set('key', '$', ''); const [, reply] = await Promise.all([
client.json.set('key', '$', ''),
client.json.strAppend('key', 'append')
]);
// assert.deepEqual( assert.deepEqual(reply, 6);
// await client.json.strAppend('key', '$', 'append'), }, GLOBAL.SERVERS.OPEN);
// [6] });
// );
// }, GLOBAL.SERVERS.OPEN);
// });

View File

@@ -1,32 +1,21 @@
// import { transformRedisJsonArgument } from '.'; import { RedisArgument, Command, NullReply, NumberReply, ArrayReply } from '@redis/client/dist/lib/RESP/types';
// export const FIRST_KEY_INDEX = 1; export interface JsonStrAppendOptions {
path?: RedisArgument;
// type AppendArguments = [key: string, append: string]; }
// type AppendWithPathArguments = [key: string, path: string, append: string];
// export function transformArguments(...[key, pathOrAppend, append]: AppendArguments | AppendWithPathArguments): Array<string> {
// const args = ['JSON.STRAPPEND', key];
// if (append !== undefined && append !== null) {
// args.push(pathOrAppend, transformRedisJsonArgument(append));
// } else {
// args.push(transformRedisJsonArgument(pathOrAppend));
// }
// return args;
// }
// export declare function transformReply(): number | Array<number>;
import { SimpleStringReply, Command } from '@redis/client/dist/lib/RESP/types';
export default { export default {
FIRST_KEY_INDEX: 1, FIRST_KEY_INDEX: 1,
IS_READ_ONLY: false, IS_READ_ONLY: false,
transformArguments() { transformArguments(key: RedisArgument, append: RedisArgument, options?: JsonStrAppendOptions) {
return ['JSON.STRAPPEND']; const args = ['JSON.STRAPPEND', key];
if (options?.path) {
args.push(options.path);
}
args.push(append);
return args;
}, },
transformReply: undefined as unknown as () => SimpleStringReply transformReply: undefined as unknown as () => NumberReply | ArrayReply<NullReply | NumberReply>
} as const satisfies Command; } as const satisfies Command;