schema.controller.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { NextFunction, Request, Response, Router } from 'express';
  2. import { dtoValidationMiddleware } from '../middleware/validation';
  3. import { SchemaService } from './schema.service';
  4. import { ManageIndexDto } from './dto';
  5. export class SchemaController {
  6. private router: Router;
  7. private schemaService: SchemaService;
  8. constructor() {
  9. this.schemaService = new SchemaService();
  10. this.router = Router();
  11. }
  12. generateRoutes() {
  13. this.router.post(
  14. '/index',
  15. dtoValidationMiddleware(ManageIndexDto),
  16. this.manageIndex.bind(this)
  17. );
  18. this.router.get('/index', this.describeIndex.bind(this));
  19. this.router.post('/index/flush', this.clearCache.bind(this));
  20. return this.router;
  21. }
  22. async manageIndex(req: Request, res: Response, next: NextFunction) {
  23. const { type, collection_name, index_name, extra_params, field_name } =
  24. req.body;
  25. try {
  26. const result =
  27. type.toLocaleLowerCase() === 'create'
  28. ? await this.schemaService.createIndex({
  29. collection_name,
  30. extra_params,
  31. field_name,
  32. index_name,
  33. })
  34. : await this.schemaService.dropIndex({
  35. collection_name,
  36. field_name,
  37. index_name,
  38. });
  39. res.send(result);
  40. } catch (error) {
  41. next(error);
  42. }
  43. }
  44. async describeIndex(req: Request, res: Response, next: NextFunction) {
  45. const data = '' + req.query?.collection_name;
  46. try {
  47. const result = await this.schemaService.describeIndex({
  48. collection_name: data,
  49. });
  50. res.send(result);
  51. } catch (error) {
  52. next(error);
  53. }
  54. }
  55. async clearCache(req: Request, res: Response, next: NextFunction) {
  56. try {
  57. const result = await this.schemaService.clearCache();
  58. res.send(result);
  59. } catch (error) {
  60. next(error);
  61. }
  62. }
  63. }