mirror of https://gitee.com/bigwinds/arangodb
165 lines
6.6 KiB
JavaScript
165 lines
6.6 KiB
JavaScript
/*jshint strict: false */
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief ArangoShell client API
|
|
///
|
|
/// @file
|
|
///
|
|
/// DISCLAIMER
|
|
///
|
|
/// Copyright 2013 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 Achim Brandt
|
|
/// @author Dr. Frank Celler
|
|
/// @author Copyright 2012-2013, triAGENS GmbH, Cologne, Germany
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
var internal = require("internal");
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief return a formatted type string for object
|
|
///
|
|
/// If the object has an id, it will be included in the string.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exports.getIdString = function (object, typeName) {
|
|
var result = "[object " + typeName;
|
|
|
|
if (object._id) {
|
|
result += ":" + object._id;
|
|
}
|
|
else if (object.data && object.data._id) {
|
|
result += ":" + object.data._id;
|
|
}
|
|
|
|
result += "]";
|
|
|
|
return result;
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief create a formatted headline text
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exports.createHelpHeadline = function (text) {
|
|
var i;
|
|
var p = "";
|
|
var x = Math.abs(78 - text.length) / 2;
|
|
|
|
for (i = 0; i < x; ++i) {
|
|
p += "-";
|
|
}
|
|
|
|
return "\n" + p + " " + text + " " + p + "\n";
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief handles error results
|
|
///
|
|
/// throws an exception in case of an an error
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// must came after the export of createHelpHeadline
|
|
var arangodb = require("@arangodb");
|
|
var ArangoError = arangodb.ArangoError;
|
|
|
|
exports.checkRequestResult = function (requestResult) {
|
|
if (requestResult === undefined) {
|
|
throw new ArangoError({
|
|
"error" : true,
|
|
"code" : 500,
|
|
"errorNum" : arangodb.ERROR_INTERNAL,
|
|
"errorMessage" : "Unknown error. Request result is empty"
|
|
});
|
|
}
|
|
|
|
if (requestResult.hasOwnProperty('error')) {
|
|
if (requestResult.error) {
|
|
if (requestResult.errorNum === arangodb.ERROR_TYPE_ERROR) {
|
|
throw new TypeError(requestResult.errorMessage);
|
|
}
|
|
|
|
const error = new ArangoError(requestResult);
|
|
error.message = requestResult.message;
|
|
throw error;
|
|
}
|
|
|
|
// remove the property from the original object
|
|
delete requestResult.error;
|
|
}
|
|
|
|
return requestResult;
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief general help
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exports.HELP = exports.createHelpHeadline("Help") +
|
|
'Predefined objects: ' + "\n" +
|
|
' arango: ArangoConnection ' + "\n" +
|
|
' db: ArangoDatabase ' + "\n" +
|
|
(internal.printBrowser ? '' :
|
|
' fm: FoxxManager ' + "\n") +
|
|
'Examples: ' + "\n" +
|
|
' > db._collections() list all collections ' + "\n" +
|
|
' > db._query(<query>).toArray() execute an AQL query ' + "\n" +
|
|
' > db._explain(<query>) explain an AQL query ' + "\n" +
|
|
' > help show help pages ' + "\n" +
|
|
' > exit ' + "\n" +
|
|
'Note: collection names and statuses may be cached in arangosh. ' + "\n" +
|
|
'To refresh the list of collections and their statuses, issue: ' + "\n" +
|
|
' > db._collections(); ' + "\n" +
|
|
' ' + "\n" +
|
|
(internal.printBrowser ?
|
|
'To cancel the current prompt, press CTRL + z. ' + "\n" +
|
|
' ' + "\n" +
|
|
'Please note that all variables defined with the var keyword will ' + "\n" +
|
|
'disappear when the command is finished. To introduce variables that' + "\n" +
|
|
'are persisting until the next command, omit the var keyword. ' + "\n\n" +
|
|
'Type \'tutorial\' for a tutorial or \'help\' to see common examples' :
|
|
'To cancel the current prompt, press CTRL + d. ' + "\n");
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief query help
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief extended help
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exports.helpExtended = exports.createHelpHeadline("More help") +
|
|
'Pager: ' + "\n" +
|
|
' > stop_pager() stop the pager output ' + "\n" +
|
|
' > start_pager() start the pager ' + "\n" +
|
|
'Pretty printing: ' + "\n" +
|
|
' > stop_pretty_print() stop pretty printing ' + "\n" +
|
|
' > start_pretty_print() start pretty printing ' + "\n" +
|
|
'Color output: ' + "\n" +
|
|
' > stop_color_print() stop color printing ' + "\n" +
|
|
' > start_color_print() start color printing ' + "\n" +
|
|
'Print function: ' + "\n" +
|
|
' > print(x) std. print function ' + "\n" +
|
|
' > print_plain(x) print without prettifying ' + "\n" +
|
|
' and without colors ' + "\n" +
|
|
' > clear() clear screen ' ;
|
|
|
|
|