blob: b0fc67f4e0937cd5ee43fe1a79f8fffd6dcb7a2b [file] [log] [blame]
//Dashboard endpoints
var mongojs = require("mongojs");
db = mongojs.connect("xdata", ["logs", "sessions", "feedback"]);
// http://docs.mongodb.org/manual/reference/operator/aggregation/cond/
module.exports = function(app){
app.get('/sessions', function(req, res){
// Allow CORS
var origin = (req.headers.origin || "*");
res.header("Access-Control-Allow-Origin", origin);
var query = [{$group: {
'_id':'$sessionID',
'component': {'$min': '$component.name'},
'user': {'$min': '$client'},
'start': {'$min': '$timestamp'},
'stop': {'$max': '$timestamp'},
nLogs: {'$sum': 1},
nUserLogs: { $sum:
{ $cond:
[{ $eq: [ "$type", "USERACTION" ] } , 1, 0]
}
}
}}
];
if (req.params.id) {
var match = [{$match: {sessionID: req.params.id}}];
query = match.concat(query);
}
db.logs.aggregate(query, function(err, result) {
res.json(result);
})
});
app.get('/sessions/:id', function(req, res){
// Allow CORS
var origin = (req.headers.origin || "*");
res.header("Access-Control-Allow-Origin", origin);
var query = {
sessionID: req.params.id
};
db.logs.find(query, function(err, result) {
res.json(result);
})
});
app.get('/stats/activities', function(req, res) {
var query = [
{'$match': {'type': 'USERACTION'}},
{'$group': {
'_id':'$parms.activity',
'nLogs': {'$sum': 1},
'components': {'$addToSet': '$component.name'},
'wfStates': {'$addToSet': '$parms.wf_state'}
}
}
]
db.logs.aggregate(query, function(err, result) {
res.json(result);
})
})
}