nyx_schedule
Version:
nyx任务调度
106 lines (90 loc) • 3.15 kB
JavaScript
var express = require("express");
var scheduleRouter = express.Router();
var http = require("http")
var Promise = require("bluebird");
var db = require("../lib/db");
module.exports = function (schedule) {
/**
* 定义一个任务
*/
scheduleRouter.get("/define", function (req, res, next) {
console.log(req.query);
var name = req.query.name; //job 名称
var projectName = req.query.project || "" //所属项目
var start = req.query.start; //开始时间
var end = req.query.end || null; //结束时间
var interval = req.query.interval;
var serviceUrl = req.query.serviceUrl; //服务地址
schedule.define({
name: name
, start: new Date(parseInt(start))
, end: end ? new Date(end) : null
, interval: interval
, serviceUrl: serviceUrl
, project: projectName
, disabled: 1
}).then(function () {
res.json({ success: true })
}).catch(function (err) {
res.json({ success: false, message: err.message });
});
})
/**
* 得到所有job
*/
scheduleRouter.get("/jobs", function (req, res, next) {
var start = req.query.startIndex || 0;
var count = req.query.count || 200;
schedule.jobs({start:start , count:count}).map(function(job){
console.log(job);
return job.toJSON();
}).then(function(jobJSONs){
res.json(jobJSONs);
}).catch(function(err){
res.json({sucess:false , message: err.message})
})
})
/**
* 移除一个任务
* @param name 任务名称
*/
scheduleRouter.get("/disable/:name", function (req, res, next) {
var name = req.params.name; //job名称
setDisable(name, 0).then(function (data) {
res.json({ success: true })
}).catch(function (err) {
res.json({ success: false, message: err.meaasge })
});
})
scheduleRouter.get("/enable/:name", function (req, res, next) {
var name = req.params.name; //job名称
setDisable(name, 1).then(function (data) {
res.json({ success: true })
}).catch(function (err) {
res.json({ success: false, message: err.meaasge })
});
})
function setDisable(name, state) {
return db.findJob(name).then(function (jobData) {
if (!jobData) {
throw new Error("没有匹配的job");
}
jobData.disabled = state;
jobData.locked_time = null;
return db.saveOrUpdate(jobData);
});
}
/**
* 得到任务信息
* @param name 任务名称
*/
scheduleRouter.get("/info/:name", function (req, res, next) {
var name = req.params.name;
return schedule.findJob(name).then(function (job) {
res.json(job.toJSON());
}).catch(function(err){
res.json({success:false, message:err.message})
});
})
return scheduleRouter;
}