nci/resources/builds.js

104 lines
2.0 KiB
JavaScript
Raw Normal View History

2015-04-10 19:23:52 +00:00
'use strict';
var Steppy = require('twostep').Steppy,
_ = require('underscore'),
logger = require('../lib/logger')('builds resource');
module.exports = function(app) {
2016-01-06 20:24:41 +00:00
var resource = app.dataio.resource('builds');
2015-04-10 19:23:52 +00:00
2015-07-05 17:18:51 +00:00
resource.use('readAll', function(req, res, next) {
Steppy(
function() {
2015-07-09 20:12:24 +00:00
var data = req.data || {};
var start = {};
if (data.projectName) {
start.projectName = data.projectName;
}
2015-07-11 18:09:28 +00:00
start.descCreateDate = data.descCreateDate || '';
2015-07-09 20:12:24 +00:00
var findParams = _(data).pick('offset', 'limit');
findParams.start = start;
findParams.limit = findParams.limit || 20;
2016-01-06 20:24:41 +00:00
app.builds.find(findParams, this.slot());
},
function(err, builds) {
2015-07-22 20:18:47 +00:00
// omit big fields not needed for list
_(builds).each(function(build) {
delete build.stepTimings;
if (build.scm) {
delete build.scm.changes;
}
2015-07-26 13:05:54 +00:00
build.project = _(build.project).pick(
'name', 'scm', 'avgBuildDuration'
);
2015-07-22 20:18:47 +00:00
});
res.send(builds);
},
2015-07-05 17:18:51 +00:00
next
);
});
2015-07-05 17:18:51 +00:00
resource.use('read', function(req, res, next) {
2015-05-17 13:48:16 +00:00
Steppy(
function() {
2016-01-06 20:24:41 +00:00
app.builds.get(req.data.id, this.slot());
2015-05-17 13:48:16 +00:00
},
function(err, build) {
2016-01-06 20:24:41 +00:00
res.send(build);
2015-05-17 13:48:16 +00:00
},
2015-07-05 17:18:51 +00:00
next
2015-05-17 13:48:16 +00:00
);
});
2015-10-03 14:14:41 +00:00
resource.use('getBuildLogTail', function(req, res, next) {
Steppy(
function() {
2016-01-06 20:24:41 +00:00
app.builds.getLogLinesTail({
buildId: req.data.buildId,
2015-10-03 14:14:41 +00:00
limit: req.data.length
2016-01-06 20:24:41 +00:00
}, this.slot());
2015-10-03 14:14:41 +00:00
},
2016-01-06 20:24:41 +00:00
function(err, tail) {
res.send(tail);
2015-10-03 14:14:41 +00:00
},
next
);
});
resource.use('getBuildLogLines', function(req, res, next) {
Steppy(
function() {
2016-01-06 20:24:41 +00:00
app.builds.getLogLines(
_(req.data).pick('buildId', 'from', 'to'),
this.slot()
);
2015-10-03 14:14:41 +00:00
},
2016-01-06 20:24:41 +00:00
function(err, logLinesResult) {
res.send(logLinesResult);
2015-10-03 14:14:41 +00:00
},
next
);
});
resource.use('cancel', function(req, res, next) {
Steppy(
function() {
var buildId = req.data.buildId;
logger.log('Cancel build: "%s"', buildId);
2016-01-06 20:24:41 +00:00
app.builds.cancel({buildId: buildId}, this.slot());
},
function() {
res.send();
},
next
);
});
return resource;
2015-04-10 19:23:52 +00:00
};