1
0
Fork 0
arangodb/js/client/modules/@arangodb/arangosh.js

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 ' ;