Mise à jour de routes

This commit is contained in:
Julien Gautier
2024-01-11 16:53:43 +01:00
parent 54524591dd
commit e1a0ba340c
6 changed files with 503 additions and 43 deletions
+67 -1
View File
@@ -7,7 +7,7 @@ const auth = require('../auth');
router.get('/', auth.required, function (req, res, next) {
var limit = 20;
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
@@ -37,6 +37,11 @@ router.get('/', auth.required, function (req, res, next) {
'$sum': 1
}
}
}, {
'$sort':
{
'_id': 1
},
}
];
Promise.all([
@@ -62,7 +67,68 @@ router.get('/', auth.required, function (req, res, next) {
*/
}).catch(next);
}).catch(next);
});
router.get('/allByDate', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var limit = 50;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$project': {
'_id': 0,
'aeronef': 1,
'imat': 1,
'year': {
'$year': '$date'
}
}
}, {
'$group': {
'_id': {
'aeronef': '$aeronef',
'imat': '$imat',
'year': '$year'
},
'count': {
'$sum': 1
}
}
}, {
'$sort': {
'_id': 1
}
}
];
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var aeronefs = result;
//console.log(aeronefs);
return res.json({
aeronefs: aeronefs,
aeronefsCount: aeronefs.length
});
}).catch(next);
}).catch(next);
});
module.exports = router;
+1 -1
View File
@@ -22,7 +22,7 @@ router.param('application', function (req, res, next, slug) {
router.get('/', auth.required, function (req, res, next) {
var query = {};
var limit = 20;
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
+215 -3
View File
@@ -5,9 +5,43 @@ var router = require('express').Router(),
User = mongoose.model('User');
const auth = require('../auth');
router.get('/', auth.required, function (req, res, next) {
var limit = 20;
var query = {};
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
if (typeof req.query.slug !== 'undefined') {
query.slug = req.query.slug;
}
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
if (user.role == 'Admin') {
return res.sendStatus(403);
}
Jump.find(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var canopies = result;
return res.json({
canopies: canopies,
canopiesCount: canopies.length
});
}).catch(next);
}).catch(next);
});
router.get('/allBySize', auth.required, function (req, res, next) {
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
@@ -30,13 +64,17 @@ router.get('/', auth.required, function (req, res, next) {
}, {
'$group': {
'_id': {
'voile': '$voile',
'taille': '$taille'
},
'count': {
'$sum': 1
}
}
}, {
'$sort':
{
'_id': 1
},
}
];
Promise.all([
@@ -52,7 +90,181 @@ router.get('/', auth.required, function (req, res, next) {
});
}).catch(next);
}).catch(next);
});
router.get('/allByYear', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$project': {
'_id': 0,
'taille': 1,
'year': {
'$year': '$date'
}
}
}, {
'$group': {
'_id': {
'taille': '$taille',
'year': '$year'
},
'count': {
'$sum': 1
}
}
}, {
'$sort': {
'_id': 1
}
}
];
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var canopies = result;
//console.log(dropzones);
return res.json({
canopies: canopies,
canopiesCount: canopies.length
});
}).catch(next);
}).catch(next);
});
router.get('/allModelBySize', auth.required, function (req, res, next) {
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$group': {
'_id': {
'taille': '$taille',
'voile': '$voile'
},
'count': {
'$sum': 1
}
}
}, {
'$sort':
{
'_id': 1
},
}
];
Promise.all([
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
]).then(function (results) {
var canopies = results[0];
return res.json({
canopies: canopies,
canopiesCount: canopies.length
});
}).catch(next);
}).catch(next);
});
router.get('/allModelByYear', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$project': {
'_id': 0,
'voile': 1,
'taille': 1,
'year': {
'$year': '$date'
}
}
}, {
'$group': {
'_id': {
'taille': '$taille',
'voile': '$voile',
'year': '$year'
},
'count': {
'$sum': 1
}
}
}, {
'$sort': {
'_id': 1
}
}
];
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var canopies = result;
//console.log(dropzones);
return res.json({
canopies: canopies,
canopiesCount: canopies.length
});
}).catch(next);
}).catch(next);
});
module.exports = router;
+80 -16
View File
@@ -7,19 +7,18 @@ const auth = require('../auth');
router.get('/', auth.required, function (req, res, next) {
var limit = 20;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
var query = [
{
'$match': {
@@ -37,22 +36,87 @@ router.get('/', auth.required, function (req, res, next) {
'$sum': 1
}
}
}, {
'$sort':
{
'_id': 1
},
}
];
Promise.all([
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
]).then(function (results) {
var dropzones = results[0];
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var dropzones = result;
return res.json({
dropzones: dropzones,
dropzonesCount: dropzones.length
});
}).catch(next);
}).catch(next);
});
router.get('/allByDate', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$project': {
'_id': 0,
'lieu': 1,
'oaci': 1,
'year': {
'$year': '$date'
}
}
}, {
'$group': {
'_id': {
'lieu': '$lieu',
'oaci': '$oaci',
'year': '$year'
},
'count': {
'$sum': 1
}
}
}, {
'$sort': {
'_id': 1
}
}
];
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var dropzones = result;
//console.log(dropzones);
return res.json({
dropzones: dropzones,
dropzonesCount: dropzones.length
});
}).catch(next);
}).catch(next);
});
module.exports = router;
+133 -21
View File
@@ -17,9 +17,12 @@ router.param('jump', function (req, res, next, slug) {
}).catch(next);
});
/**
* return all jumps
*/
router.get('/', auth.required, function (req, res, next) {
var query = {};
var limit = 20;
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
@@ -51,7 +54,7 @@ router.get('/', auth.required, function (req, res, next) {
Jump.find(query)
.limit(Number(limit))
.skip(Number(offset))
.sort({ numero: 'asc' })
.sort({ numero: 'desc' })
.populate('author')
.exec(),
Jump.count(query).exec(),
@@ -71,8 +74,71 @@ router.get('/', auth.required, function (req, res, next) {
}).catch(next);
});
router.get('/allByDate', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
var limit = 120;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
if (typeof req.query.offset !== 'undefined') {
offset = req.query.offset;
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$project': {
'_id': 0,
'year': {
'$year': '$date'
},
'month': {
'$month': '$date'
}
}
}, {
'$group': {
'_id': {
'year': '$year',
'month': '$month'
},
'count': {
'$sum': 1
}
}
}, {
'$sort': {
'_id': 1
}
}
];
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.exec()
.then(function (result) {
var jumps = result;
//console.log(jumps);
return res.json({
jumps: jumps,
jumpsCount: jumps.length
});
}).catch(next);
}).catch(next);
});
router.get('/feed', auth.required, function (req, res, next) {
var limit = 20;
var limit = 25;
var offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
@@ -106,6 +172,64 @@ router.get('/feed', auth.required, function (req, res, next) {
});
});
/**
* return last jump
*/
router.get('/last', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
}
/*Jump.findOne({ slug: slug })
.populate('author')
.then(function (jump) {
if (!jump) {
return res.sendStatus(404);
}
req.jump = jump;
return next();
}).catch(next);*/
Jump.find({})
.limit(1)
.skip(0)
.sort({ numero: 'desc' })
.populate('author')
.exec()
.then(function (jumps) {
if (!jumps) {
return res.sendStatus(404);
}
req.lastjump = jumps[0];
if (req.lastjump.author._id.toString() !== req.payload.id.toString()) {
return res.sendStatus(403);
}
return res.json({ jump: req.lastjump.toJSONFor(user) });
}).catch(next);
}).catch(next);
});
/**
* return a jump
*/
router.get('/:jump', auth.required, function (req, res, next) {
Promise.all([
req.payload ? User.findById(req.payload.id) : null
/*req.jump.populate('author')*/
]).then(function (results) {
var user = results[0];
if (!user) {
return res.sendStatus(401);
}
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
return res.sendStatus(403);
}
return res.json({ jump: req.jump.toJSONFor(user) });
}).catch(next);
});
/**
* save a jump
*/
router.post('/', auth.required, function (req, res, next) {
Promise.all([
req.payload ? User.findById(req.payload.id) : null
@@ -128,23 +252,9 @@ router.post('/', auth.required, function (req, res, next) {
}).catch(next);
});
// return a jump
router.get('/:jump', auth.required, function (req, res, next) {
Promise.all([
req.payload ? User.findById(req.payload.id) : null
/*req.jump.populate('author')*/
]).then(function (results) {
var user = results[0];
if (!user) {
return res.sendStatus(401);
}
if (req.jump.author._id.toString() !== req.payload.id.toString()) {
return res.sendStatus(403);
}
return res.json({ jump: req.jump.toJSONFor(user) });
}).catch(next);
});
/**
* update a jump
*/
router.put('/:jump', auth.required, function (req, res, next) {
Promise.all([
req.payload ? User.findById(req.payload.id) : null
@@ -217,7 +327,9 @@ router.put('/:jump', auth.required, function (req, res, next) {
}).catch(next);
});
// delete jump
/**
* delete a jump
*/
router.delete('/:jump', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
+7 -1
View File
@@ -36,6 +36,9 @@ router.put('/user', auth.required, function (req, res, next) {
if (typeof req.body.user.licence !== 'undefined') {
user.licence = req.body.user.licence;
}
if (typeof req.body.user.poids !== 'undefined') {
user.poids = req.body.user.poids;
}
if (typeof req.body.user.image !== 'undefined') {
user.image = req.body.user.image;
}
@@ -106,8 +109,11 @@ router.post('/users', function (req, res, next) {
if (typeof req.body.user.licence !== 'undefined') {
user.licence = req.body.user.licence;
}
if (typeof req.body.user.poids !== 'undefined') {
user.poids = req.body.user.poids;
}
user.setPassword(req.body.user.password);
user.role = 'User'; // valeurs possibles : 'User' or 'Admin'
user.role = 'User';
user.save().then(function () {
return res.json({ user: user.toAuthJSON() });