diff --git a/server/api/index.js b/server/api/index.js index e190fbb..8a2860e 100644 --- a/server/api/index.js +++ b/server/api/index.js @@ -2,7 +2,7 @@ const router = require('express').Router(); // endpoint routing const adminRouter = require('./admin'); -const submissionsRouter = require('./submissions'); +const submissionsRouter = require('../router/submission.route'); router.use('/admin', adminRouter); router.use('/submissions', submissionsRouter); diff --git a/server/router/submission.route.js b/server/router/submission.route.js index e69de29..7753f94 100644 --- a/server/router/submission.route.js +++ b/server/router/submission.route.js @@ -0,0 +1,102 @@ +const router = require('express').Router(); +const Submission = require('../models/submission.model'); + +/** + * @swagger + * /api/submissions: + * get: + * summary: Retrieve a list of all of the submissions + * produces: + * - application/json + * tags: + * - submissions + */ +router.get('/', async ({ res }) => { + res.status(200).send(await Submission.find({})); +}); + +/** + * @swagger + * /api/submissions/{teamID}/{submissionID}: + * get: + * summary: Retrieves the specified submission from the specified team + * produces: + * - application/json + * parameters: + * - in: path + * name: submissionID + * required: true + * type: string + * description: The submission ID + * tags: + * - submissions + */ +router.get('/:submissionID', async (req, res) => { + await Submission.findById(req.params.submissionID, (err, submission) => { + if (err) res.status(500).send(err); + res.status(200).send(submission); + }); +}); + +/** + * @swagger + * /api/submissions/{teamID}/create: + * post: + * summary: Creates a new submission + * responses: + * 200: + * produces: + * - application/json + * parameters: + * - in: path + * name: teamID + * required: true + * type: string + * description: The team ID + * - in: path + * name: submissionID + * required: true + * type: string + * description: The submission ID + * tags: + * - submissions + */ +router.post('/', (req, res) => { + // console.log(req.body); + Submission.create( + { + urls: req.body.urls, + attributes: { + description: req.body.description, + technologies: req.body.technologies, + title: req.body.title, + }, + + // categories: req.body.categories, + // there is no teamId, state, categories, flags, + // provided in the form. also, no way to handle + // images atm. + }, + (err, submission) => { + if (err) { + res.status(500).send(err); + } else { + res.status(200).json({ + message: 'success', + id: submission.id, + }); + } + }, + ); +}); + +// update a submission with new info +router.patch('/:submissionID', async (req, res) => { + await Submission.findOneAndUpdate(req.params.submissionID, req.body, { + new: true, + }); + + res.status(200).send(await Submission.findById(req.params.submissionID)); +}); + +module.exports = router; \ No newline at end of file