UNPKG

alphascript-server

Version:

CRUD operations for mongo and other functionalities to get started quickly in any CMS project

108 lines (96 loc) 3.23 kB
var api = require('../../'); var moment = require('moment'); var errorList = { DB_GENERIC: 'Não foi possível estabelecer ligação com o servidor de momento, por favor tente novamente mais tarde', PDF_GENERIC: 'Não foi possível gerar o PDF de momento, por favor tente novamente mais tarde' }; var main = module.exports = { get: function (req, res) { api.common.Error.find().sort({ created_at: -1 }).limit(100).lean().exec(function (err, items) { if (err) { logError(err); return res.status(500).send(errorList.DB_GENERIC); } res.json(items); }); }, log: logError, mongoHandler: function (err, res, next) { if (!err) return next(); var error = "Impossível concretizar operação na base de dados: "; switch (err.code) { case 2: //"BadValue" error += "Valor inválido"; break; case 9: //"FailedToParse" error += "Conversão inválida"; break; case 12: //"UnsupportedFormat" error += "Formato não suportado"; break; case 14: //"TypeMismatch" error += "Tipo de dados inesperado"; break; case 16: //"InvalidLength" error += "Tamanho inválido"; break; case 20: //"IllegalOperation" error += "Operação ilegal"; break; case 21: //"EmptyArrayOperation" error += "Conjunto vazio"; break; case 25: //"RemoteValidationError" error += "Registo inválido"; break; case 24: //"LockTimeout" case 46: //"LockBusy" case 50: //"ExceededTimeLimit" case 89: //"NetworkTimeout" case 107: //"LockFailed" case 208: //"TooManyLocks" error += "Servidor verificou periodo de muito trafego, por favor tente novamente"; break; case 56: //"EmptyFieldName" error += "Campo vazio"; break; case 146: //"ExceededMemoryLimit" error += "O seu pedido excedeu o limite de memória imposto"; break; case 14031: //"OutOfDiskSpace" error += "O seu pedido excedeu o limite de espaço imposto"; break; case 17280: //"KeyTooLong" error += "Chave do campo demasiado longa"; break; case 57: //"DottedFieldName" error += "Chave do campo contém carater ponto '.'"; break; case 84: //"DuplicateKeyValue" case 11000: //"DuplicateKey" error += "Registo duplicado"; break; case 116: //"DocTooLargeForCapped" error += "Registo excede o tamanho limite autorizado"; break; default: if (err.name !== "ValidationError") return next(err); if (typeof err.errors !== 'object') return next(err); for (var field in err.errors) return next(new api.AlphaError(err.errors[field].message)); } next(new api.AlphaError(error)); } }; for (var key in errorList) { main[key] = errorList[key]; } function logError(err, req) { if (!err) return; console.error(moment().format('YYYY-MM-DD HH:mm:ss')); console.error(err); var obj = { description: err }; if (typeof req !== 'undefined') obj.data = req.headers; var error = new api.common.Error(obj); error.save(); return err; }