users.controller.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { NextFunction, Request, Response, Router } from 'express';
  2. import { dtoValidationMiddleware } from '../middlewares/validation';
  3. import { UserService } from './users.service';
  4. import { milvusService } from '../milvus';
  5. import { CreateUserDto, UpdateUserDto } from './dto';
  6. export class UserController {
  7. private router: Router;
  8. private userService: UserService;
  9. constructor() {
  10. this.userService = new UserService(milvusService);
  11. this.router = Router();
  12. }
  13. generateRoutes() {
  14. this.router.get('/', this.getUsers.bind(this));
  15. this.router.post(
  16. '/',
  17. dtoValidationMiddleware(CreateUserDto),
  18. this.createUsers.bind(this)
  19. );
  20. this.router.put(
  21. '/',
  22. dtoValidationMiddleware(UpdateUserDto),
  23. this.updateUsers.bind(this)
  24. );
  25. this.router.delete('/:username', this.deleteUser.bind(this));
  26. return this.router;
  27. }
  28. async getUsers(req: Request, res: Response, next: NextFunction) {
  29. try {
  30. const result = await this.userService.getUsers();
  31. res.send(result);
  32. } catch (error) {
  33. next(error);
  34. }
  35. }
  36. async createUsers(req: Request, res: Response, next: NextFunction) {
  37. const { username, password } = req.body;
  38. try {
  39. const result = await this.userService.createUser({ username, password });
  40. res.send(result);
  41. } catch (error) {
  42. next(error);
  43. }
  44. }
  45. async updateUsers(req: Request, res: Response, next: NextFunction) {
  46. const { username, oldPassword, newPassword } = req.body;
  47. try {
  48. const result = await this.userService.updateUser({
  49. username,
  50. oldPassword,
  51. newPassword,
  52. });
  53. res.send(result);
  54. } catch (error) {
  55. next(error);
  56. }
  57. }
  58. async deleteUser(req: Request, res: Response, next: NextFunction) {
  59. const { username } = req.params;
  60. try {
  61. const result = await this.userService.deleteUser({ username });
  62. res.send(result);
  63. } catch (error) {
  64. next(error);
  65. }
  66. }
  67. }