schema.controller.ts 2.3 KB

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