Skip to content

Commit 3547b20

Browse files
leibaleAvital-Fine
and
Avital-Fine
authored
Graph (#1887)
* init * implement graph commands * add graph to packages table * fix ts.infoDebug * fix redisearch tests * Update INFO_DEBUG.ts * fix INFO.spec.ts * test QUERY and SLOWLOG Co-authored-by: Avital-Fine <[email protected]>
1 parent 46b831c commit 3547b20

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+563
-39
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ node-redis is a modern, high performance [Redis](https://redis.io) client for No
1111

1212
## Packages
1313

14-
| Name | Description |
14+
| Name | Description |
1515
|---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1616
| [redis](./) | [![Downloads](https://img.shields.io/npm/dm/redis.svg)](https://www.npmjs.com/package/redis) [![Version](https://img.shields.io/npm/v/redis.svg)](https://www.npmjs.com/package/redis) |
1717
| [@node-redis/client](./packages/client) | [![Downloads](https://img.shields.io/npm/dm/@node-redis/client.svg)](https://www.npmjs.com/package/@node-redis/client) [![Version](https://img.shields.io/npm/v/@node-redis/client.svg)](https://www.npmjs.com/package/@node-redis/client) [![Docs](https://img.shields.io/badge/-documentation-dc382c)](https://redis.js.org/documentation/client/) |
1818
| [@node-redis/bloom](./packages/bloom) | [![Downloads](https://img.shields.io/npm/dm/@node-redis/bloom.svg)](https://www.npmjs.com/package/@node-redis/bloom) [![Version](https://img.shields.io/npm/v/@node-redis/bloom.svg)](https://www.npmjs.com/package/@node-redis/bloom) [![Docs](https://img.shields.io/badge/-documentation-dc382c)](https://redis.js.org/documentation/bloom/) [Redis Bloom](https://oss.redis.com/redisbloom/) commands |
19+
| [@node-redis/graph](./packages/graph) | [![Downloads](https://img.shields.io/npm/dm/@node-redis/graph.svg)](https://www.npmjs.com/package/@node-redis/graph) [![Version](https://img.shields.io/npm/v/@node-redis/graph.svg)](https://www.npmjs.com/package/@node-redis/graph) [![Docs](https://img.shields.io/badge/-documentation-dc382c)](https://redis.js.org/documentation/graph/) [Redis Graph](https://oss.redis.com/redisgraph/) commands |
1920
| [@node-redis/json](./packages/json) | [![Downloads](https://img.shields.io/npm/dm/@node-redis/json.svg)](https://www.npmjs.com/package/@node-redis/json) [![Version](https://img.shields.io/npm/v/@node-redis/json.svg)](https://www.npmjs.com/package/@node-redis/json) [![Docs](https://img.shields.io/badge/-documentation-dc382c)](https://redis.js.org/documentation/json/) [Redis JSON](https://oss.redis.com/redisjson/) commands |
2021
| [@node-redis/search](./packages/search) | [![Downloads](https://img.shields.io/npm/dm/@node-redis/search.svg)](https://www.npmjs.com/package/@node-redis/search) [![Version](https://img.shields.io/npm/v/@node-redis/search.svg)](https://www.npmjs.com/package/@node-redis/search) [![Docs](https://img.shields.io/badge/-documentation-dc382c)](https://redis.js.org/documentation/search/) [Redis Search](https://oss.redis.com/redisearch/) commands |
2122
| [@node-redis/time-series](./packages/time-series) | [![Downloads](https://img.shields.io/npm/dm/@node-redis/time-series.svg)](https://www.npmjs.com/package/@node-redis/time-series) [![Version](https://img.shields.io/npm/v/@node-redis/time-series.svg)](https://www.npmjs.com/package/@node-redis/time-series) [![Docs](https://img.shields.io/badge/-documentation-dc382c)](https://redis.js.org/documentation/time-series/) [Redis Time-Series](https://oss.redis.com/redistimeseries/) commands |

index.ts

+3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
11
import { createClient as _createClient, createCluster as _createCluster, RedisClientOptions, RedisClientType, RedisClusterOptions, RedisClusterType } from '@node-redis/client';
22
import { RedisScripts } from '@node-redis/client/dist/lib/commands';
33
import RedisBloomModules from '@node-redis/bloom';
4+
import RedisGraph from '@node-redis/graph';
45
import RedisJSON from '@node-redis/json';
56
import RediSearch from '@node-redis/search';
67
import RedisTimeSeries from '@node-redis/time-series';
78

89
export * from '@node-redis/client';
910
export * from '@node-redis/bloom';
11+
export * from '@node-redis/graph';
1012
export * from '@node-redis/json';
1113
export * from '@node-redis/search';
1214
export * from '@node-redis/time-series';
1315

1416
const modules = {
1517
...RedisBloomModules,
18+
graph: RedisGraph,
1619
json: RedisJSON,
1720
ft: RediSearch,
1821
ts: RedisTimeSeries

package-lock.json

+55-18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/bloom/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"devDependencies": {
1919
"@istanbuljs/nyc-config-typescript": "^1.0.2",
2020
"@node-redis/test-utils": "*",
21-
"@types/node": "^17.0.10",
21+
"@types/node": "^17.0.13",
2222
"nyc": "^15.1.0",
2323
"release-it": "^14.12.4",
2424
"source-map-support": "^0.5.21",

packages/bloom/tsconfig.json

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
"include": [
77
"./lib/**/*.ts"
88
],
9+
"exclude": [
10+
"./lib/test-utils.ts",
11+
"./lib/**/*.spec.ts"
12+
],
913
"typedocOptions": {
1014
"entryPoints": [
1115
"./lib"

packages/client/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
"devDependencies": {
2323
"@istanbuljs/nyc-config-typescript": "^1.0.2",
2424
"@node-redis/test-utils": "*",
25-
"@types/node": "^17.0.10",
25+
"@types/node": "^17.0.13",
2626
"@types/redis-parser": "^3.0.0",
27-
"@types/sinon": "^10.0.8",
27+
"@types/sinon": "^10.0.9",
2828
"@types/yallist": "^4.0.1",
2929
"@typescript-eslint/eslint-plugin": "^5.10.1",
3030
"@typescript-eslint/parser": "^5.10.1",

packages/graph/.nycrc.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"extends": "@istanbuljs/nyc-config-typescript",
3+
"exclude": ["**/*.spec.ts", "lib/test-utils.ts"]
4+
}

packages/graph/.release-it.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"git": {
3+
"tagName": "graph@${version}",
4+
"commitMessage": "Release ${tagName}",
5+
"tagAnnotation": "Release ${tagName}"
6+
},
7+
"npm": {
8+
"publishArgs": ["--access", "public"]
9+
}
10+
}

packages/graph/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# @node-redis/graph
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { strict as assert } from 'assert';
2+
import testUtils, { GLOBAL } from '../test-utils';
3+
import { transformArguments } from './CONFIG_GET';
4+
5+
describe('CONFIG GET', () => {
6+
it('transformArguments', () => {
7+
assert.deepEqual(
8+
transformArguments('TIMEOUT'),
9+
['GRAPH.CONFIG', 'GET', 'TIMEOUT']
10+
);
11+
});
12+
13+
testUtils.testWithClient('client.graph.configGet', async client => {
14+
assert.deepEqual(
15+
await client.graph.configGet('TIMEOUT'),
16+
[
17+
'TIMEOUT',
18+
0
19+
]
20+
);
21+
}, GLOBAL.SERVERS.OPEN);
22+
});
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export const IS_READ_ONLY = true;
2+
3+
export function transformArguments(configKey: string): Array<string> {
4+
return ['GRAPH.CONFIG', 'GET', configKey];
5+
}
6+
7+
type ConfigItem = [
8+
configKey: string,
9+
value: number
10+
];
11+
12+
export declare function transformReply(): ConfigItem | Array<ConfigItem>;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { strict as assert } from 'assert';
2+
import testUtils, { GLOBAL } from '../test-utils';
3+
import { transformArguments } from './CONFIG_SET';
4+
5+
describe('CONFIG SET', () => {
6+
it('transformArguments', () => {
7+
assert.deepEqual(
8+
transformArguments('TIMEOUT', 0),
9+
['GRAPH.CONFIG', 'SET', 'TIMEOUT', '0']
10+
);
11+
});
12+
13+
testUtils.testWithClient('client.graph.configSet', async client => {
14+
assert.equal(
15+
await client.graph.configSet('TIMEOUT', 0),
16+
'OK'
17+
);
18+
}, GLOBAL.SERVERS.OPEN);
19+
});
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export function transformArguments(configKey: string, value: number): Array<string> {
2+
return [
3+
'GRAPH.CONFIG',
4+
'SET',
5+
configKey,
6+
value.toString()
7+
];
8+
}
9+
10+
export declare function transformReply(): 'OK';
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { strict as assert } from 'assert';
2+
import testUtils, { GLOBAL } from '../test-utils';
3+
import { transformArguments } from './DELETE';
4+
5+
describe('', () => {
6+
it('transformArguments', () => {
7+
assert.deepEqual(
8+
transformArguments('key'),
9+
['GRAPH.DELETE', 'key']
10+
);
11+
});
12+
13+
testUtils.testWithClient('client.graph.delete', async client => {
14+
await client.graph.query('key', 'RETURN 1');
15+
16+
assert.equal(
17+
typeof await client.graph.delete('key'),
18+
'string'
19+
);
20+
}, GLOBAL.SERVERS.OPEN);
21+
});

packages/graph/lib/commands/DELETE.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export const FIRST_KEY_INDEX = 1;
2+
3+
export function transformArguments(key: string): Array<string> {
4+
return ['GRAPH.DELETE', key];
5+
}
6+
7+
export declare function transformReply(): string;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { strict as assert } from 'assert';
2+
import testUtils, { GLOBAL } from '../test-utils';
3+
import { transformArguments } from './EXPLAIN';
4+
5+
describe('EXPLAIN', () => {
6+
it('transformArguments', () => {
7+
assert.deepEqual(
8+
transformArguments('key', 'RETURN 0'),
9+
['GRAPH.EXPLAIN', 'key', 'RETURN 0']
10+
);
11+
});
12+
13+
testUtils.testWithClient('client.graph.explain', async client => {
14+
const reply = await client.graph.explain('key', 'RETURN 0');
15+
assert.ok(Array.isArray(reply));
16+
assert.ok(!reply.find(x => typeof x !== 'string'));
17+
}, GLOBAL.SERVERS.OPEN);
18+
});

0 commit comments

Comments
 (0)