mirror of https://gitee.com/bigwinds/arangodb
154 lines
4.6 KiB
JavaScript
154 lines
4.6 KiB
JavaScript
////////////////////////////////////////////////////////////////////////////////
|
|
/// DISCLAIMER
|
|
///
|
|
/// Copyright 2019 ArangoDB 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 ArangoDB GmbH, Cologne, Germany
|
|
///
|
|
/// @author Andrey Abramov
|
|
/// @author Vasiliy Nabatchikov
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
const internal = require('internal');
|
|
const arangosh = require('@arangodb/arangosh');
|
|
const errors = require('@arangodb').errors;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief ArangoAnalyzer instance
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
function ArangoAnalyzer(data) {
|
|
this._data = data;
|
|
}
|
|
|
|
ArangoAnalyzer.prototype.features = function() {
|
|
return this._data['features'];
|
|
};
|
|
|
|
ArangoAnalyzer.prototype.name = function() {
|
|
return this._data['name'];
|
|
};
|
|
|
|
ArangoAnalyzer.prototype.properties = function() {
|
|
return this._data['properties'];
|
|
};
|
|
|
|
ArangoAnalyzer.prototype.type = function() {
|
|
return this._data['type'];
|
|
};
|
|
|
|
ArangoAnalyzer.prototype._help = function () {
|
|
var help = arangosh.createHelpHeadline('ArangoAnalyzers help') +
|
|
'ArangoAnalyzer constructor: ' + '\n' +
|
|
' > var analyzer = require("@arangodb/analyzers").analyzer(<name>); ' + '\n' +
|
|
' ' + '\n' +
|
|
'Administration Functions: ' + '\n' +
|
|
' name() analyzer name ' + '\n' +
|
|
' type() analyzer type ' + '\n' +
|
|
' properties() analyzer properties ' + '\n' +
|
|
' features() analyzer features ' + '\n' +
|
|
' _help() this help ' + '\n' +
|
|
' ' + '\n' +
|
|
'Attributes: ' + '\n' +
|
|
' _data server-side definition ';
|
|
internal.print(help);
|
|
};
|
|
|
|
exports.ArangoAnalyzer = ArangoAnalyzer;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief return the base url for analyzers usage
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
var _baseurl = function(suffix) {
|
|
var url = '/_api/analyzer';
|
|
|
|
if (suffix) {
|
|
url += '/' + encodeURIComponent(suffix);
|
|
}
|
|
|
|
return url;
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief exported members and functions
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exports.analyzer = function(name) {
|
|
var db = internal.db;
|
|
var url = _baseurl(name);
|
|
var result = db._connection.GET(url);
|
|
|
|
if (result.hasOwnProperty('error')
|
|
&& result.hasOwnProperty('error')
|
|
&& errors.ERROR_ARANGO_DOCUMENT_NOT_FOUND.code === result.errorNum) {
|
|
return null;
|
|
}
|
|
|
|
arangosh.checkRequestResult(result);
|
|
|
|
return new ArangoAnalyzer(result);
|
|
};
|
|
|
|
exports.remove = function(name) {
|
|
var db = internal.db;
|
|
var url = _baseurl(name);
|
|
var result = db._connection.DELETE(url);
|
|
|
|
return arangosh.checkRequestResult(result);
|
|
};
|
|
|
|
exports.save = function(name, type, properties, features) {
|
|
var body = {};
|
|
|
|
if (name !== undefined) {
|
|
body['name'] = name;
|
|
}
|
|
|
|
if (type !== undefined) {
|
|
body['type'] = type;
|
|
}
|
|
|
|
if (properties !== undefined) {
|
|
body['properties'] = properties;
|
|
}
|
|
|
|
if (features !== undefined) {
|
|
body['features'] = features;
|
|
}
|
|
|
|
var db = internal.db;
|
|
var url = _baseurl();
|
|
var result = db._connection.POST(url, body);
|
|
|
|
return arangosh.checkRequestResult(result);
|
|
};
|
|
|
|
exports.toArray = function() {
|
|
var db = internal.db;
|
|
var url = _baseurl();
|
|
var result = db._connection.GET(url);
|
|
|
|
arangosh.checkRequestResult(result);
|
|
|
|
var list = [];
|
|
|
|
for (var i = 0; i < result.result.length; ++i) {
|
|
list.push(new ArangoAnalyzer(result.result[i]));
|
|
}
|
|
|
|
return list;
|
|
};
|