Implémentation SkydiverId API

This commit is contained in:
Rampeur
2024-05-08 20:37:33 +02:00
parent eb64f2c411
commit a4d2b76bc5
43 changed files with 2772 additions and 1267 deletions
+52 -156
View File
@@ -1,14 +1,14 @@
var router = require('express').Router(),
mongoose = require('mongoose'),
Canopy = mongoose.model('Canopy'),
Jump = mongoose.model('Jump'),
User = mongoose.model('User');
const auth = require('../auth');
const auth = require('../auth'),
queries = require('../queries');
router.get('/', auth.required, function (req, res, next) {
var query = {};
var limit = 25;
var offset = 0;
let query = {};
let limit = 25;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
@@ -21,17 +21,17 @@ router.get('/', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
if (user.role == 'Admin') {
return res.sendStatus(403);
return res.status(403).json({ errors: { "Forbidden": "Vous ne disposez pas des autorisations suffisantes" } });
}
Jump.find(query)
.limit(Number(limit))
.skip(Number(offset))
.limit(Number(limit))
.exec()
.then(function (result) {
var canopies = result;
let canopies = result;
return res.json({
canopies: canopies,
canopiesCount: canopies.length
@@ -41,8 +41,8 @@ router.get('/', auth.required, function (req, res, next) {
});
router.get('/allBySize', auth.required, function (req, res, next) {
var limit = 25;
var offset = 0;
let limit = 25;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
@@ -52,38 +52,17 @@ router.get('/allBySize', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
var query = [
{
'$match': {
'$expr': {
'$eq': [ '$author' , { '$toObjectId': user._id.toString() } ]
}
}
}, {
'$group': {
'_id': {
'taille': '$taille'
},
'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];
let query = queries.getCanopiesBySizeQuery(user._id.toString());
Jump.aggregate(query)
.skip(Number(offset))
.limit(Number(limit))
.exec()
.then(function (result) {
let canopies = result.map(function (data) {
return { taille: data._id.taille, count: data.count };
});
return res.json({
canopies: canopies,
canopiesCount: canopies.length
@@ -92,57 +71,28 @@ router.get('/allBySize', auth.required, function (req, res, next) {
}).catch(next);
});
router.get('/allByYear', auth.required, function (req, res, next) {
router.get('/allBySizeByYear', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
var limit = 25;
var offset = 0;
let limit = 25;
let 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
}
}
];
let query = queries.getCanopiesBySizeByYearQuery(user._id.toString());
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.limit(Number(limit))
.exec()
.then(function (result) {
var canopies = result;
let canopies = result.map(function (data) {
return { taille: data._id.taille, year: data._id.year, count: data.count };
});
//console.log(dropzones);
return res.json({
canopies: canopies,
@@ -152,9 +102,9 @@ router.get('/allByYear', auth.required, function (req, res, next) {
}).catch(next);
});
router.get('/allModelBySize', auth.required, function (req, res, next) {
var limit = 25;
var offset = 0;
router.get('/allBySizeByModel', auth.required, function (req, res, next) {
let limit = 25;
let offset = 0;
if (typeof req.query.limit !== 'undefined') {
limit = req.query.limit;
}
@@ -164,39 +114,17 @@ router.get('/allModelBySize', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
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];
let query = queries.getCanopiesBySizeByModelQuery(user._id.toString());
Jump.aggregate(query)
.skip(Number(offset))
.limit(Number(limit))
.exec()
.then(function (result) {
let canopies = result.map(function (data) {
return { taille: data._id.taille, voile: data._id.voile, count: data.count };
});
return res.json({
canopies: canopies,
canopiesCount: canopies.length
@@ -205,60 +133,28 @@ router.get('/allModelBySize', auth.required, function (req, res, next) {
}).catch(next);
});
router.get('/allModelByYear', auth.required, function (req, res, next) {
router.get('/allBySizeByModelByYear', auth.required, function (req, res, next) {
User.findById(req.payload.id).then(function (user) {
if (!user) {
return res.sendStatus(401);
return res.status(401).json({ errors: { "Unauthorized": "autentification requise" } });
}
var limit = 25;
var offset = 0;
let limit = 25;
let 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
}
}
];
let query = queries.getCanopiesBySizeByModelByYearQuery(user._id.toString());
Jump.aggregate(query)
.limit(Number(limit))
.skip(Number(offset))
.limit(Number(limit))
.exec()
.then(function (result) {
var canopies = result;
//console.log(dropzones);
let canopies = result.map(function (data) {
return { taille: data._id.taille, voile: data._id.voile, year: data._id.year, count: data.count };
});
return res.json({
canopies: canopies,
canopiesCount: canopies.length