You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
JavaScript
82 lines
2.0 KiB
JavaScript
/*
|
|
* Copyright DataStax, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
'use strict';
|
|
|
|
/**
|
|
* Graph module.
|
|
* @module datastax/graph
|
|
*/
|
|
|
|
const GraphResultSet = require('./result-set');
|
|
const getCustomTypeSerializers = require('./custom-type-serializers');
|
|
const { asInt, asDouble, asFloat, asTimestamp, asUdt, UdtGraphWrapper, GraphTypeWrapper} = require('./wrappers');
|
|
const { Edge, Element, Path, Property, Vertex, VertexProperty } = require('./structure');
|
|
|
|
class EnumValue {
|
|
constructor(typeName, elementName) {
|
|
this.typeName = typeName;
|
|
this.elementName = elementName;
|
|
}
|
|
|
|
toString() {
|
|
return this.elementName;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Represents a collection of tokens for more concise Traversal definitions.
|
|
*/
|
|
const t = {
|
|
id: new EnumValue('T', 'id'),
|
|
key: new EnumValue('T', 'key'),
|
|
label: new EnumValue('T', 'label'),
|
|
value: new EnumValue('T', 'value'),
|
|
};
|
|
|
|
/**
|
|
* Represents the edge direction.
|
|
*/
|
|
const direction = {
|
|
'both': new EnumValue('Direction', 'BOTH'),
|
|
'in': new EnumValue('Direction', 'IN'),
|
|
'out': new EnumValue('Direction', 'OUT')
|
|
};
|
|
|
|
// `in` is a reserved keyword depending on the context
|
|
// TinkerPop JavaScript GLV only exposes `in` but it can lead to issues for TypeScript users and others.
|
|
// Expose an extra property to represent `Direction.IN`.
|
|
direction.in_ = direction.in;
|
|
|
|
module.exports = {
|
|
Edge,
|
|
Element,
|
|
Path,
|
|
Property,
|
|
Vertex,
|
|
VertexProperty,
|
|
|
|
asInt,
|
|
asDouble,
|
|
asFloat,
|
|
asTimestamp,
|
|
asUdt,
|
|
direction,
|
|
getCustomTypeSerializers,
|
|
GraphResultSet,
|
|
GraphTypeWrapper,
|
|
t,
|
|
UdtGraphWrapper
|
|
}; |