Skip to content

Commit 632ea10

Browse files
authored
Merge pull request #67 from RedisGraph/point-datatype
Add support for Point datatype
2 parents 7fb89c8 + e0c2aea commit 632ea10

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/resultSet.js

+25
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const ResultSetValueTypes = {
3838
VALUE_NODE: 8,
3939
VALUE_PATH: 9,
4040
VALUE_MAP: 10,
41+
VALUE_POINT: 11,
4142
};
4243

4344
/**
@@ -278,6 +279,19 @@ class ResultSet {
278279
return m;
279280
}
280281

282+
/**
283+
* Parse a raw Point representation into a lat-lon Map object.
284+
* @param {object[]} rawPoint 2-valued lat-lon array representation
285+
* @returns {{ latitude: number, longitude: number }} Map object with latitude and longitude keys.
286+
*/
287+
parsePoint(rawPoint) {
288+
let m = {};
289+
m["latitude"] = Number(rawPoint[0])
290+
m["longitude"] = Number(rawPoint[1])
291+
292+
return m;
293+
}
294+
281295
/**
282296
* Parse a raw value into its actual value.
283297
* @async
@@ -293,13 +307,16 @@ class ResultSet {
293307
case ResultSetValueTypes.VALUE_NULL:
294308
scalar = null;
295309
break;
310+
296311
case ResultSetValueTypes.VALUE_STRING:
297312
scalar = String(value);
298313
break;
314+
299315
case ResultSetValueTypes.VALUE_INTEGER:
300316
case ResultSetValueTypes.VALUE_DOUBLE:
301317
scalar = Number(value);
302318
break;
319+
303320
case ResultSetValueTypes.VALUE_BOOLEAN:
304321
if (value === "true") {
305322
scalar = true;
@@ -309,15 +326,19 @@ class ResultSet {
309326
console.log("Unknown boolean type\n");
310327
}
311328
break;
329+
312330
case ResultSetValueTypes.VALUE_ARRAY:
313331
scalar = this.parseArray(value);
314332
break;
333+
315334
case ResultSetValueTypes.VALUE_NODE:
316335
scalar = await this.parseNode(value);
317336
break;
337+
318338
case ResultSetValueTypes.VALUE_EDGE:
319339
scalar = await this.parseEdge(value);
320340
break;
341+
321342
case ResultSetValueTypes.VALUE_PATH:
322343
scalar = await this.parsePath(value);
323344
break;
@@ -326,6 +347,10 @@ class ResultSet {
326347
scalar = await this.parseMap(value);
327348
break;
328349

350+
case ResultSetValueTypes.VALUE_POINT:
351+
scalar = this.parsePoint(value);
352+
break;
353+
329354
case ResultSetValueTypes.VALUE_UNKNOWN:
330355
console.log("Unknown scalar type\n");
331356
break;

test/redisGraphAPITest.js

+12
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,18 @@ describe("RedisGraphAPI Test", () => {
305305
assert.ok(!resultSet.hasNext());
306306
});
307307

308+
it("test point", async () => {
309+
// return point value
310+
let resultSet = await api.query("RETURN point({latitude: 32, longitude: 34})");
311+
assert.equal(resultSet.size(), 1);
312+
assert.ok(resultSet.hasNext());
313+
314+
let record = resultSet.next();
315+
let expected = {latitude: 32, longitude: 34}
316+
assert.deepStrictEqual(expected, record.get(0));
317+
assert.ok(!resultSet.hasNext());
318+
});
319+
308320
it("test multi thread", async () => {
309321
await api.query("CREATE (:person {name:'roi', age:34})");
310322
var promises = [];

0 commit comments

Comments
 (0)