/*jshint strict: false */ /*global AQL_PARSE, AQL_EXPLAIN, AQL_EXECUTE */ //////////////////////////////////////////////////////////////////////////////// /// @brief ArangoStatement /// /// @file /// /// DISCLAIMER /// /// Copyright 2012 triagens GmbH, Cologne, Germany /// /// 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. /// /// Copyright holder is triAGENS GmbH, Cologne, Germany /// /// @author Jan Steemann /// @author Copyright 2012, triAGENS GmbH, Cologne, Germany //////////////////////////////////////////////////////////////////////////////// module.isSystem = true; var ArangoStatement = require("@arangodb/arango-statement-common").ArangoStatement; var GeneralArrayCursor = require("@arangodb/simple-query-common").GeneralArrayCursor; //////////////////////////////////////////////////////////////////////////////// /// @brief parse a query and return the results //////////////////////////////////////////////////////////////////////////////// ArangoStatement.prototype.parse = function () { var result = AQL_PARSE(this._query); return { bindVars : result.parameters, collections : result.collections, ast: result.ast }; }; //////////////////////////////////////////////////////////////////////////////// /// @brief explain a query and return the results //////////////////////////////////////////////////////////////////////////////// ArangoStatement.prototype.explain = function (options) { var opts = this._options || { }; if (typeof opts === 'object' && typeof options === 'object') { Object.keys(options).forEach(function(o) { // copy options opts[o] = options[o]; }); } return AQL_EXPLAIN(this._query, this._bindVars, opts); }; //////////////////////////////////////////////////////////////////////////////// /// @brief execute the query /// /// This will return a cursor with the query results in case of success. //////////////////////////////////////////////////////////////////////////////// ArangoStatement.prototype.execute = function () { var opts = this._options || { }; if (typeof opts === 'object') { opts._doCount = this._doCount; if (this._cache !== undefined) { opts.cache = this._cache; } } var result = AQL_EXECUTE(this._query, this._bindVars, opts); return new GeneralArrayCursor(result.json, 0, null, result); }; exports.ArangoStatement = ArangoStatement;