config.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import express from 'express'
  2. import Config from '../models/config'
  3. const config = express.Router()
  4. config.post('/:key', async (req, res, next) => {
  5. const { key } = req.params
  6. const { value, description } = req.body
  7. if (!value) {
  8. const error = Error('Parameter value is mandatory.')
  9. error.statusCode = 400
  10. next(error)
  11. }
  12. try {
  13. const configPair = new Config({ key, value, description })
  14. await configPair.save()
  15. res.json(configPair)
  16. } catch (error) {
  17. error.statusCode = 400
  18. next(error)
  19. }
  20. })
  21. config.get('/:key?', async (req, res) => {
  22. const { key } = req.params
  23. const config = key ? await Config.findOne({ key }) : await Config.find().select({ key: 1, value: 1, description: 1 })
  24. res.json({ config })
  25. })
  26. config.put('/:key', async (req, res) => {
  27. const { key } = req.params
  28. const { value, description } = req.body
  29. if (!value) {
  30. const error = Error('Parameter value is mandatory.')
  31. error.statusCode = 400
  32. next(error)
  33. }
  34. const config = await Config.findOneAndUpdate({ key }, { value, description })
  35. if (!config) {
  36. const error = Error('Key not found.')
  37. error.statusCode = 404
  38. next(error)
  39. }
  40. res.json({...config, value, description})
  41. })
  42. config.delete('/:key', async (req, res, next) => {
  43. const { key } = req.params
  44. const deleted = await Config.findOneAndRemove({ key })
  45. if (deleted) {
  46. res.json({ key })
  47. } else {
  48. const error = Error('Key not found.')
  49. error.statusCode = 404
  50. next(error)
  51. }
  52. })
  53. export async function listConfigs () {
  54. return await Config.find()
  55. }
  56. export default config