index.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import express from "express";
  2. import { CollectionsService } from "./collections.service";
  3. import { milvusService } from "../connect";
  4. const router = express.Router();
  5. export const collectionsService = new CollectionsService(milvusService);
  6. router.get("/", async (req, res, next) => {
  7. const type = parseInt("" + req.query?.type, 10);
  8. try {
  9. const result =
  10. type === 1
  11. ? await collectionsService.getLoadedColletions()
  12. : await collectionsService.getAllCollections();
  13. res.send(result);
  14. } catch (error) {
  15. next(error);
  16. }
  17. });
  18. router.get("/statistics", async (req, res, next) => {
  19. try {
  20. const result = await collectionsService.getStatistics();
  21. res.send(result);
  22. } catch (error) {
  23. next(error);
  24. }
  25. });
  26. router.post("/", async (req, res, next) => {
  27. const createCollectionData = req.body;
  28. try {
  29. const result = await collectionsService.createCollection(
  30. createCollectionData
  31. );
  32. res.send(result);
  33. } catch (error) {
  34. next(error);
  35. }
  36. });
  37. router.delete("/:name", async (req, res, next) => {
  38. const name = req.params?.name;
  39. try {
  40. const result = await collectionsService.dropCollection({
  41. collection_name: name,
  42. });
  43. res.send(result);
  44. } catch (error) {
  45. next(error);
  46. }
  47. });
  48. router.get("/:name", async (req, res, next) => {
  49. const name = req.params?.name;
  50. try {
  51. const result = await collectionsService.describeCollection({
  52. collection_name: name,
  53. });
  54. res.send(result);
  55. } catch (error) {
  56. next(error);
  57. }
  58. });
  59. router.get("/:name/statistics", async (req, res, next) => {
  60. const name = req.params?.name;
  61. try {
  62. const result = await collectionsService.getCollectionStatistics({
  63. collection_name: name,
  64. });
  65. res.send(result);
  66. } catch (error) {
  67. next(error);
  68. }
  69. });
  70. router.get("/indexes/status", async (req, res, next) => {
  71. try {
  72. const result = await collectionsService.getCollectionsIndexStatus();
  73. res.send(result);
  74. } catch (error) {
  75. next(error);
  76. }
  77. });
  78. router.put("/:name/load", async (req, res, next) => {
  79. const name = req.params?.name;
  80. try {
  81. const result = await collectionsService.loadCollection({
  82. collection_name: name,
  83. });
  84. res.send(result);
  85. } catch (error) {
  86. next(error);
  87. }
  88. });
  89. router.put("/:name/release", async (req, res, next) => {
  90. const name = req.params?.name;
  91. try {
  92. const result = await collectionsService.releaseCollection({
  93. collection_name: name,
  94. });
  95. res.send(result);
  96. } catch (error) {
  97. next(error);
  98. }
  99. });
  100. router.post("/:name/insert", async (req, res, next) => {
  101. const name = req.params?.name;
  102. const data = req.body;
  103. try {
  104. const result = await collectionsService.insert({
  105. collection_name: name,
  106. ...data,
  107. });
  108. res.send(result);
  109. } catch (error) {
  110. next(error);
  111. }
  112. });
  113. router.post("/:name/search", async (req, res, next) => {
  114. const name = req.params?.name;
  115. const data = req.body;
  116. try {
  117. const result = await collectionsService.vectorSearch({
  118. collection_name: name,
  119. ...data,
  120. });
  121. res.send(result);
  122. } catch (error) {
  123. next(error);
  124. }
  125. });
  126. export { router };