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.

user.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const User = require("../database/models/user")
  2. const { getUserValidator, getIdValidator, getUpdatedUserValidator } = require("../validators/users")
  3. const mediator = require('../mediator/userMediator')
  4. const getUsers = async (req, res, next) => {
  5. const allUsers = await User.find({})
  6. return res.status(200).send(allUsers)
  7. }
  8. const getUser = async (req, res, next) => {
  9. try {
  10. const id = req.params.id
  11. const errId = getIdValidator.validate(id).error
  12. if (errId) {
  13. return res.status(404).send(errId.message)
  14. }
  15. const result = await mediator.getUser(id)
  16. if (!result.succeeded) {
  17. return res.status(400).send(result.error)
  18. }
  19. return res.status(200).json(result.value)
  20. } catch (e) {
  21. next(e)
  22. }
  23. }
  24. const createUser = async (req, res, next) => {
  25. try {
  26. const userModel = req.body
  27. const err = getUserValidator.validate(userModel).error
  28. if (err) {
  29. return res.status(404).send(err.message)
  30. }
  31. const result = await mediator.createUser(userModel)
  32. if (!result.succeeded) {
  33. return res.status(400).send(result.error)
  34. }
  35. return res.status(201).json(result.value)
  36. } catch (e) {
  37. next(e)
  38. }
  39. }
  40. const updateUser = async (req, res, next) => {
  41. try {
  42. const id = req.params.id
  43. const errId = getIdValidator.validate(id).error
  44. if (errId) {
  45. return res.status(400).send(errId.message)
  46. }
  47. const objBody = req.body
  48. const err = getUpdatedUserValidator.validate(objBody).error
  49. if (err) {
  50. return res.status(400).send(err.message)
  51. }
  52. const result = await mediator.updateUser(id, objBody)
  53. if (!result.succeeded) {
  54. return res.status(400).send(result.error)
  55. }
  56. return res.status(200).send(result.value)
  57. } catch (e) {
  58. next(e)
  59. }
  60. }
  61. const deleteUser = async (req, res, next) => {
  62. try {
  63. const id = req.params.id
  64. const errId = getIdValidator.validate(id).error
  65. if (errId) {
  66. return res.status(400).send(errId.message)
  67. }
  68. const result = await mediator.deleteUser(id)
  69. if (!result.succeeded) {
  70. return res.status(400).send(result.error)
  71. }
  72. return res.status(204).send(result.value)
  73. } catch (e) {
  74. next(e)
  75. }
  76. }
  77. const updateUserContacts = async (req, res, next) => {
  78. try {
  79. const userFound = true
  80. if (!userFound) {
  81. return res.status(404).send('user not found')
  82. }
  83. if (!req.body) {
  84. return res.status(400).send('invalid input parameters')
  85. }
  86. return res.status(200).send('user contacts updated successfully')
  87. } catch (e) {
  88. next(e)
  89. }
  90. }
  91. module.exports = { getUsers, getUser, createUser, updateUserContacts, updateUser, deleteUser }