From 988cab7784378adff1eac6c9f9f639be44bdc776 Mon Sep 17 00:00:00 2001 From: Jeffrey Lovitz Date: Thu, 25 Feb 2021 12:05:51 -0500 Subject: [PATCH 1/3] Add support for Point datatype --- src/resultSet.js | 19 +++++++++++++++++++ test/redisGraphAPITest.js | 12 ++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/resultSet.js b/src/resultSet.js index 7cc108f74c..731b14e507 100644 --- a/src/resultSet.js +++ b/src/resultSet.js @@ -38,6 +38,7 @@ const ResultSetValueTypes = { VALUE_NODE: 8, VALUE_PATH: 9, VALUE_MAP: 10, + VALUE_POINT: 11, }; /** @@ -278,6 +279,20 @@ class ResultSet { return m; } + /** + * Parse a raw Point representation into a lat-lon Map object. + * @async + * @param {object[]} rawPoint 2-valued lat-lon array representation + * @returns {Promise} Map object with latitude and longitude keys. + */ + async parsePoint(rawPoint) { + let m = {}; + m["latitude"] = Number(rawPoint[0]) + m["longitude"] = Number(rawPoint[1]) + + return m; + } + /** * Parse a raw value into its actual value. * @async @@ -326,6 +341,10 @@ class ResultSet { scalar = await this.parseMap(value); break; + case ResultSetValueTypes.VALUE_POINT: + scalar = await this.parsePoint(value); + break; + case ResultSetValueTypes.VALUE_UNKNOWN: console.log("Unknown scalar type\n"); break; diff --git a/test/redisGraphAPITest.js b/test/redisGraphAPITest.js index 5db5a9f5bd..d40489de22 100644 --- a/test/redisGraphAPITest.js +++ b/test/redisGraphAPITest.js @@ -305,6 +305,18 @@ describe("RedisGraphAPI Test", () => { assert.ok(!resultSet.hasNext()); }); + it("test point", async () => { + // return point value + let resultSet = await api.query("RETURN point({latitude: 32, longitude: 34})"); + assert.equal(resultSet.size(), 1); + assert.ok(resultSet.hasNext()); + + let record = resultSet.next(); + let expected = {latitude: 32, longitude: 34} + assert.deepStrictEqual(expected, record.get(0)); + assert.ok(!resultSet.hasNext()); + }); + it("test multi thread", async () => { await api.query("CREATE (:person {name:'roi', age:34})"); var promises = []; From 0cebf9bb9550f76a269497a79bb302997ada6015 Mon Sep 17 00:00:00 2001 From: swilly22 Date: Fri, 26 Feb 2021 13:05:25 +0200 Subject: [PATCH 2/3] remove unnecessary async --- src/resultSet.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/resultSet.js b/src/resultSet.js index 731b14e507..1ba2bf2ab1 100644 --- a/src/resultSet.js +++ b/src/resultSet.js @@ -281,11 +281,10 @@ class ResultSet { /** * Parse a raw Point representation into a lat-lon Map object. - * @async * @param {object[]} rawPoint 2-valued lat-lon array representation * @returns {Promise} Map object with latitude and longitude keys. */ - async parsePoint(rawPoint) { + parsePoint(rawPoint) { let m = {}; m["latitude"] = Number(rawPoint[0]) m["longitude"] = Number(rawPoint[1]) @@ -308,13 +307,16 @@ class ResultSet { case ResultSetValueTypes.VALUE_NULL: scalar = null; break; + case ResultSetValueTypes.VALUE_STRING: scalar = String(value); break; + case ResultSetValueTypes.VALUE_INTEGER: case ResultSetValueTypes.VALUE_DOUBLE: scalar = Number(value); break; + case ResultSetValueTypes.VALUE_BOOLEAN: if (value === "true") { scalar = true; @@ -324,15 +326,19 @@ class ResultSet { console.log("Unknown boolean type\n"); } break; + case ResultSetValueTypes.VALUE_ARRAY: scalar = this.parseArray(value); break; + case ResultSetValueTypes.VALUE_NODE: scalar = await this.parseNode(value); break; + case ResultSetValueTypes.VALUE_EDGE: scalar = await this.parseEdge(value); break; + case ResultSetValueTypes.VALUE_PATH: scalar = await this.parsePath(value); break; @@ -342,7 +348,7 @@ class ResultSet { break; case ResultSetValueTypes.VALUE_POINT: - scalar = await this.parsePoint(value); + scalar = this.parsePoint(value); break; case ResultSetValueTypes.VALUE_UNKNOWN: From e0c2aeac1b4c884e1a549205a5f80ad46894dccd Mon Sep 17 00:00:00 2001 From: leibale Date: Fri, 26 Feb 2021 13:10:44 -0500 Subject: [PATCH 3/3] fix resultSet.parsePoint jsdoc --- src/resultSet.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/resultSet.js b/src/resultSet.js index 1ba2bf2ab1..4698e97948 100644 --- a/src/resultSet.js +++ b/src/resultSet.js @@ -282,7 +282,7 @@ class ResultSet { /** * Parse a raw Point representation into a lat-lon Map object. * @param {object[]} rawPoint 2-valued lat-lon array representation - * @returns {Promise} Map object with latitude and longitude keys. + * @returns {{ latitude: number, longitude: number }} Map object with latitude and longitude keys. */ parsePoint(rawPoint) { let m = {};