mirror of https://gitee.com/bigwinds/arangodb
Fixed graph tests
This commit is contained in:
parent
8a7a1800f0
commit
5228984679
|
@ -252,13 +252,11 @@ function post_graph_graph (req, res) {
|
|||
}
|
||||
|
||||
var name = json._key;
|
||||
var vertices = json.edgeDefinitions[0].from[0];
|
||||
var edges = json.edgeDefinitions[0].collection;
|
||||
var vertices = json.vertices;
|
||||
var edges = json.edges;
|
||||
|
||||
var waitForSync = false;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
var g = new graph.Graph(name, vertices, edges, waitForSync);
|
||||
|
@ -483,9 +481,7 @@ function delete_graph_graph (req, res) {
|
|||
}
|
||||
|
||||
var waitForSync = g._gdb.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
@ -576,9 +572,7 @@ function post_graph_vertex (req, res, g) {
|
|||
}
|
||||
|
||||
var waitForSync = g._vertices.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
@ -779,9 +773,7 @@ function delete_graph_vertex (req, res, g) {
|
|||
}
|
||||
|
||||
var waitForSync = g._vertices.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
@ -823,9 +815,7 @@ function update_graph_vertex (req, res, g, isPatch) {
|
|||
}
|
||||
|
||||
var waitForSync = g._vertices.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
@ -1477,9 +1467,7 @@ function post_graph_edge (req, res, g) {
|
|||
}
|
||||
|
||||
var waitForSync = g._edges.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
@ -1686,9 +1674,7 @@ function delete_graph_edge (req, res, g) {
|
|||
}
|
||||
|
||||
var waitForSync = g._edges.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
@ -1730,9 +1716,7 @@ function update_graph_edge (req, res, g, isPatch) {
|
|||
}
|
||||
|
||||
var waitForSync = g._edges.properties().waitForSync;
|
||||
if (req.parameters.waitForSync &&
|
||||
(req.parameters.waitForSync === "true" ||
|
||||
req.parameters.waitForSync === true)) {
|
||||
if (req.parameters.waitForSync) {
|
||||
waitForSync = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -212,11 +212,10 @@ Graph.prototype.initialize = function (name, vertices, edges) {
|
|||
edges = edges.name();
|
||||
}
|
||||
|
||||
var newEdgeDefinition = [{"collection": edges, "from" :[vertices], "to": [vertices]}];
|
||||
|
||||
results = GraphAPI.postGraph({
|
||||
_key: name,
|
||||
edgeDefinitions: newEdgeDefinition
|
||||
vertices: vertices,
|
||||
edges: edges
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -222,9 +222,15 @@ AQLStatement.prototype.allowsRestrict = function() {
|
|||
};
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// --SECTION-- AQL Generator
|
||||
// --SECTION-- AQL Generator for fluent interface
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Starting point of the fluent interface.
|
||||
///
|
||||
/// Only for internal use.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
var AQLGenerator = function(graph) {
|
||||
this.stack = [];
|
||||
this.bindVars = {
|
||||
|
@ -235,6 +241,12 @@ var AQLGenerator = function(graph) {
|
|||
this.lastVar = "";
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Dispose and reset the current cursor of the query
|
||||
///
|
||||
/// Only for internal use.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
AQLGenerator.prototype._clearCursor = function() {
|
||||
if (this.cursor) {
|
||||
this.cursor.dispose();
|
||||
|
@ -242,12 +254,28 @@ AQLGenerator.prototype._clearCursor = function() {
|
|||
}
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief Execute the query and keep the cursor
|
||||
///
|
||||
/// Only for internal use.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
AQLGenerator.prototype._createCursor = function() {
|
||||
if (!this.cursor) {
|
||||
this.cursor = this.execute();
|
||||
}
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @brief General edge query, takes direction as parameter
|
||||
///
|
||||
/// This will create the general AQL statement to load edges
|
||||
/// connected to the vertices selected in the step before.
|
||||
/// Will also bind the options into bindVars.
|
||||
///
|
||||
/// Only for internal use, user gets different functions for directions
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
AQLGenerator.prototype._edges = function(edgeExample, options) {
|
||||
this._clearCursor();
|
||||
this.options = options || {};
|
||||
|
@ -273,6 +301,79 @@ AQLGenerator.prototype._edges = function(edgeExample, options) {
|
|||
return this;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// @fn JSF_general_graph_fluent_aql_edges
|
||||
/// @brief select all connected edges
|
||||
///
|
||||
/// @FUN{graph-query.edges(@FA{examples})}
|
||||
///
|
||||
/// Creates an AQL statement to select all edges for each of the vertices selected
|
||||
/// in the step before.
|
||||
/// This will include `inbound` as well as `outbound` edges.
|
||||
/// The resulting set of edges can be filtered by defining one or more @FA{examples}.
|
||||
///
|
||||
/// @EXAMPLES
|
||||
///
|
||||
/// To request unfiltered edges:
|
||||
///
|
||||
/// @EXAMPLE_ARANGOSH_OUTPUT{generalGraphFluentAQLEdgesUnfiltered}
|
||||
/// var graph = require("org/arangodb/general-graph");
|
||||
/// var edgeDefinition = [];
|
||||
/// edgeDefinition.push(graph._undirectedRelationDefinition("friend", "user"));
|
||||
/// var g = graph._create("social", edgeDefinition);
|
||||
/// var a = g.user.save({name: "Alice"});
|
||||
/// var b = g.user.save({name: "Bob"});
|
||||
/// var c = g.user.save({name: "Charly"});
|
||||
/// var d = g.user.save({name: "Diana"});
|
||||
/// var e1 = g.friend.save(a._id, b._id, {type: "married"});
|
||||
/// var e2 = g.friend.save(a._id, c._id, {type: "friend"});
|
||||
/// var e3 = g.friend.save(c._id, d._id, {type: "married"});
|
||||
/// var e4 = g.friend.save(b,_id, d._id, {type: "friend"});
|
||||
/// var query = g._vertices([{name: "Alice"}, {name: "Bob"}]);
|
||||
/// query.edges().toArray();
|
||||
/// @END_EXAMPLE_ARANGOSH_OUTPUT
|
||||
///
|
||||
/// To request filtered edges by a single example:
|
||||
///
|
||||
/// @EXAMPLE_ARANGOSH_OUTPUT{generalGraphFluentAQLEdgesFilteredSingle}
|
||||
/// var graph = require("org/arangodb/general-graph");
|
||||
/// var edgeDefinition = [];
|
||||
/// edgeDefinition.push(graph._undirectedRelationDefinition("friend", "user"));
|
||||
/// var g = graph._create("social", edgeDefinition);
|
||||
/// var a = g.user.save({name: "Alice"});
|
||||
/// var b = g.user.save({name: "Bob"});
|
||||
/// var c = g.user.save({name: "Charly"});
|
||||
/// var d = g.user.save({name: "Diana"});
|
||||
/// var e1 = g.friend.save(a._id, b._id, {type: "married"});
|
||||
/// var e2 = g.friend.save(a._id, c._id, {type: "friend"});
|
||||
/// var e3 = g.friend.save(c._id, d._id, {type: "married"});
|
||||
/// var e4 = g.friend.save(b,_id, d._id, {type: "friend"});
|
||||
/// var query = g._vertices([{name: "Alice"}, {name: "Bob"}]);
|
||||
/// query.edges({type: "married"}).toArray();
|
||||
/// @END_EXAMPLE_ARANGOSH_OUTPUT
|
||||
///
|
||||
/// To request filtered edges by multiple examples:
|
||||
///
|
||||
/// @EXAMPLE_ARANGOSH_OUTPUT{generalGraphFluentAQLEdgesFilteredMultiple}
|
||||
/// var graph = require("org/arangodb/general-graph");
|
||||
/// var edgeDefinition = [];
|
||||
/// edgeDefinition.push(graph._undirectedRelationDefinition("friend", "user"));
|
||||
/// var g = graph._create("social", edgeDefinition);
|
||||
/// var a = g.user.save({name: "Alice"});
|
||||
/// var b = g.user.save({name: "Bob"});
|
||||
/// var c = g.user.save({name: "Charly"});
|
||||
/// var d = g.user.save({name: "Diana"});
|
||||
/// var e1 = g.friend.save(a._id, b._id, {type: "married"});
|
||||
/// var e2 = g.friend.save(a._id, c._id, {type: "friend"});
|
||||
/// var e3 = g.friend.save(c._id, d._id, {type: "married"});
|
||||
/// var e4 = g.friend.save(b,_id, d._id, {type: "friend"});
|
||||
/// var query = g._vertices([{name: "Alice"}, {name: "Bob"}]);
|
||||
/// query.edges([{type: "married"}, {type: "friend"}]).toArray();
|
||||
/// @END_EXAMPLE_ARANGOSH_OUTPUT
|
||||
/// To define a relation between several vertex collections:
|
||||
///
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
AQLGenerator.prototype.edges = function(example) {
|
||||
return this._edges(example, {direction: "any"});
|
||||
};
|
||||
|
|
|
@ -318,7 +318,6 @@ Vertex.prototype.setProperty = function (name, value) {
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Graph.prototype.initialize = function (name, vertices, edges, waitForSync) {
|
||||
|
||||
this._name = name;
|
||||
var gdb = db._collection("_graphs");
|
||||
var graphProperties;
|
||||
|
@ -415,8 +414,7 @@ Graph.prototype.initialize = function (name, vertices, edges, waitForSync) {
|
|||
|
||||
if (graphProperties === null) {
|
||||
|
||||
// check if edge is used in a graph
|
||||
//hole alle graphen nud schau nach O.o
|
||||
// check if edge is used in a graph
|
||||
gdb.toArray().forEach(
|
||||
function(singleGraph) {
|
||||
var sGEDs = singleGraph.edgeDefinitions;
|
||||
|
@ -455,7 +453,9 @@ Graph.prototype.initialize = function (name, vertices, edges, waitForSync) {
|
|||
}
|
||||
}
|
||||
else {
|
||||
if (graphProperties.vertices !== vertices || graphProperties.edges !== edges) {
|
||||
if (graphProperties.edgeDefinitions[0].from[0] !== vertices
|
||||
|| graphProperties.edgeDefinitions[0].to[0] !== vertices
|
||||
|| graphProperties.edgeDefinitions[0].collection !== edges) {
|
||||
throw "graph with that name already exists!";
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue