Scalable IoT solution for real-time body position data
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.9 KiB

const express = require('express')
const router = express.Router();
const mongoose = require('mongoose');
const {celebrate} = require('celebrate');
const {requireAuth} = require('../middlewares/middleware');
const {athleteUpdateSchema, guid} = require('../schemas/joi');
const Athlete = mongoose.model('Athlete');
router.get('/api/athletes',
requireAuth,
async (req, res) => {
const athletes = await Athlete.find();
res.send(athletes);
});
router.get('/api/athletes/:id',
requireAuth,
celebrate(guid),
async (req, res) => {
const athlete = await Athlete.findById(req.params.id);
res.send(athlete)
});
router.get('/api/athletes/:id/edit',
requireAuth,
celebrate(guid),
async (req, res) => {
const athlete = await Athlete.findById(req.params.id)
res.send(athlete)
}
)
;
router.put('/api/athletes/:id',
requireAuth,
celebrate(athleteUpdateSchema, guid),
async (req, res) => {
const {name, _trainer} = req.body
const updateAthlete = {name, _trainer}
if (_trainer === '') {
updateAthlete._trainer = undefined
await Athlete.findByIdAndUpdate(req.params.id, updateAthlete, {}, (err, athlete) => {
if (err)
return res.status(400).json({errors: 'Something went wrong!'});
return res.send(athlete)
})
} else if (name || _trainer)
await Athlete.findByIdAndUpdate(req.params.id, updateAthlete, {}, (err, athlete) => {
if (err)
return res.status(400).json({errors: 'Something went wrong!'});
res.send(athlete)
})
});
router.delete('/api/athlete/:id',
requireAuth,
celebrate(guid),
async (req, res) => {
await Athlete.findByIdAndDelete(req.params.id)
}
)
;
module.exports = router;