UNPKG

nyx_schedule

Version:

nyx任务调度

106 lines (90 loc) 3.15 kB
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; }