示例#1
0
var unregisterFunction = function (name) {
  'use strict';

  var func = null;

  validateName(name);

  try {
    func = getStorage().document(name.toUpperCase());
  }
  catch (err1) {
  }

  if (func === null) {
    var err = new ArangoError();
    err.errorNum = arangodb.errors.ERROR_QUERY_FUNCTION_NOT_FOUND.code;
    err.errorMessage = internal.sprintf(arangodb.errors.ERROR_QUERY_FUNCTION_NOT_FOUND.message, name);

    throw err;
  }

  getStorage().remove(func._id);
  internal.reloadAqlFunctions();

  return true;
};
示例#2
0
var registerFunction = function (name, code, isDeterministic) {
  // validate input
  validateName(name);

  code = stringifyFunction(code, name);

  var testCode = "(function() { var callback = " + code + "; return callback; })()";
    
  try {
    internal.executeScript(testCode, undefined, "(user function " + name + ")"); 
  }
  catch (err1) {
    var err = new ArangoError();
    err.errorNum = arangodb.errors.ERROR_QUERY_FUNCTION_INVALID_CODE.code;
    err.errorMessage = arangodb.errors.ERROR_QUERY_FUNCTION_INVALID_CODE.message;
    
    throw err;
  }

  var result = db._executeTransaction({
    collections: {
      write: getStorage().name()
    },
    action: function (params) {
      var exists = false;
      var collection = require("internal").db._collection(params.collection);
      var name = params.name;

      try {
        var doc = collection.document(name.toUpperCase());
        if (doc !== null) {
          collection.remove(doc._key);
          exists = true;
        }
      }
      catch (err2) {
      }
  
      var data = {
        _key: name.toUpperCase(),
        name: name,
        code: params.code,
        isDeterministic: params.isDeterministic || false
      };
    
      collection.save(data);
      return exists;
    },
    params: {
      name: name,
      code: code,
      isDeterministic: isDeterministic,
      collection: getStorage().name() 
    }
  });

  internal.reloadAqlFunctions();

  return result;
};
示例#3
0
文件: functions.js 项目: X4/ArangoDB
var unregisterFunctionsGroup = function (group) {
  if (group.length === 0) {
    var err = new ArangoError();
    err.errorNum = arangodb.errors.ERROR_BAD_PARAMETER.code;
    err.errorMessage = arangodb.errors.ERROR_BAD_PARAMETER.message;
  }

  var deleted = 0;
  
  getFiltered(group).forEach(function (f) {
    getStorage().remove(f._id);
    deleted++;
  });
  
  if (deleted > 0) {
    internal.reloadAqlFunctions();
  }

  return deleted;
};
示例#4
0
文件: functions.js 项目: X4/ArangoDB
var registerFunction = function (name, code, isDeterministic) {
  // validate input
  validateName(name);

  code = stringifyFunction(code, name);

  var testCode = "(function() { var callback = " + code + "; return callback; })()";
    
  try {
    var res = internal.executeScript(testCode, undefined, "(user function " + name + ")"); 
  }
  catch (err1) {
    var err = new ArangoError();
    err.errorNum = arangodb.errors.ERROR_QUERY_FUNCTION_INVALID_CODE.code;
    err.errorMessage = arangodb.errors.ERROR_QUERY_FUNCTION_INVALID_CODE.message;
  }

  var exists = false;
    
  try {
    unregisterFunction(name);
    exists = true;
  }
  catch (err2) {
  }

  var data = {
    _key: name.toUpperCase(),
    name: name,
    code: code,
    isDeterministic: isDeterministic || false
  };
    
  getStorage().save(data);
  internal.reloadAqlFunctions();

  return exists;
};
示例#5
0
 callback : function (req, res) {
   internal.reloadAqlFunctions();
   actions.resultOk(req, res, actions.HTTP_OK);
 }