/**
* @namespace Route
* @property {module:Student} Student
*/
/** Student Resource Routes
* Routing the Controller Object through resource endpoints
* @module Student
* @requires express
*/
'use strict'
/**
* express module
* @const
*/
import express from 'express'
/**
* passport module
* @const
*/
import passport from 'passport'
/**
* Student Controller Module
* @const
*/
import StudentController from '../controllers/Student.Controller'
/**
* Protected Route Middleware
* @const
*/
const protect = passport.authenticate('jwt', {
session: false
})
/**
* Express router to mount user related functions on.
* @type {object}
* @const
*/
let router = express.Router()
/**
* Student Controller Object
* @type {object}
* @const
*/
let st = new StudentController()
/**
* GET /student/
* Auth Required
* @name /student/
* @function
* @return {json} -Welcome Endpoint Msg.
* @todo write comments
*/
router.get('/', protect, (req, res) => {
res.json({
'msg': 'Welcome to Student endpoints'
})
})
/**
* POST /student/
* Save student Endpoint
* Auth Required
* @name /student/
* @function
* @todo write comments
*/
router.post('/', protect, (req, res) => {
st.save(req, res)
})
/**
* GET /student/:id
* Get student by ID Endpoint
* Auth Required
* @name /student/:id
* @function
* @todo write comments
*/
router.get('/:id', protect, (req, res) => {
st.getById(req, res)
})
/**
* PUT /student/:id
* Update student by ID Endpoint
* Auth Required
* @name /student/:id
* @function
* @todo write comments
*/
router.put('/:id', protect, (req, res) => {
st.updateById(req, res)
})
/**
* DELETE /student/:id
* Remove student by ID Endpoint
* Auth Required
* @name /student/:id
* @function
* @todo write comments
*/
router.delete('/:id', protect, (req, res) => {
st.removeById(req, res)
})
/**
* GET /student/login/:student_login
* Get Student By Login
* Auth Required
* @name /student/login/:student_login
* @function
* @todo write comments
*/
router.get('/login/:login', protect, (req, res) => {
st.studentByLogin(req, res)
})
/**
* PUT /student/login/:student_login
* Update Student By Login
* Auth Required
* @name /student/login/:student_login
* @function
* @todo write comments
*/
router.put('/login/:login', protect, (req, res) => {
st.updateByLogin(req, res)
})
/**
* DELETE /student/login/:student_login
* Remove Student By Login
* Auth Required
* @name /student/login/:student_login
* @function
* @todo write comments
*/
router.delete('/login/:login', protect, (req, res) => {
st.removeByLogin(req, res)
})
export default router