3
0
Fork 0
xnode/lib-build/debug-server/node_lib/model/xnode-base-command.js

76 lines
2.2 KiB
JavaScript
Raw Permalink Normal View History

2022-11-13 00:46:38 +00:00
var logger = require('winston').loggers.get('main');
var mongoose = require('mongoose');
var tmongoose = require('../lib/node-ff-tcrud').build.backend.mongoose;
var modelName = __filename.split('/').pop().split('.')[0];
var modelBackend = modelName.split('-').join('_');
var modelMeta = {
net_id: {
type: String,
index: { unique: false },
tfield: {
tvalidate: { io: 'string' },
},
},
command: {
type: String,
tfield: {
tvalidate: { io: 'string' },
},
},
insert_ip: {
type: String,
tfield: {
tvalidate: { io: 'string' },
},
},
insert_date: {
type: Date,
default: Date.now,
tfield: {
tlist: { tenable: false },
},
},
send_date: {
type: Date
},
done_date: {
type: Date
}
};
var modelSchema = new mongoose.Schema(modelMeta);
modelSchema.statics = tmongoose.buildStaticsModelValidated(modelMeta,modelSchema, {
findByNetIdLimit10: function (net_id, callback) {
logger.debug(modelBackend+'.findByNetId net_id='+net_id);
this.find({net_id:net_id}).sort('-insert_date').limit(10).exec(callback);
},
findOpenByNetId: function (net_id, callback) {
logger.debug(modelBackend+'.findOpenByNetId net_id='+net_id);
this.find({net_id:net_id}).where('send_date',null).sort('insert_date').limit(1).exec(callback);
},
findOpenCommandLimit5: function (callback) {
logger.debug(modelBackend+'.findOpenCommands');
var dateLastHour = new Date(new Date().getTime() - 30*60*1000); // soft limit on long open errors.
this.find({insert_date: { $gt: dateLastHour}}).where('send_date',null).sort('insert_date').limit(5).exec(callback);
},
findSendCommandLimit5: function (callback) {
logger.debug(modelBackend+'.findSendCommands');
var dateLastHour = new Date(new Date().getTime() - 60*60*1000);
this.find({send_date: { $gt: dateLastHour}}).sort('-insert_date').limit(5).exec(callback);
},
insert: function (net_id,command,insert_ip, next) {
var xcmd = new this();
xcmd.net_id = net_id;
xcmd.command = command;
xcmd.insert_ip = insert_ip;
xcmd.save(function(err,xcmd) {
if (err) { return next(err); }
logger.debug(modelBackend+'.insert _id='+xcmd._id+' net_id='+xcmd.net_id);
});
}
});
module.exports = mongoose.model(modelName, modelSchema, modelBackend);