From f826cb5d388e62edf76e5802b0be5271b62a7e89 Mon Sep 17 00:00:00 2001 From: LSD Date: Fri, 3 Jul 2026 18:34:00 +0800 Subject: [PATCH] feat(mongo): add GridFS manager for MongoDB * feat(mongo): browse GridFS buckets and files Refs #2342 * feat(mongo): add GridFS manager for MongoDB * chore(i18n): autofill new translations --------- Co-authored-by: dbx-i18n-bot Co-authored-by: t8y2 <1156263951@qq.com> --- .../document/MongoBucketBrowser.vue | 271 ++++++++++++++++ .../document/MongoGridFsBrowser.vue | 211 +++++++++++++ .../src/components/layout/ContentArea.vue | 14 + .../src/components/sidebar/ConnectionTree.vue | 2 +- .../src/components/sidebar/TreeItem.vue | 33 +- apps/desktop/src/i18n/locales/en.ts | 34 ++ apps/desktop/src/i18n/locales/es.ts | 32 ++ apps/desktop/src/i18n/locales/it.ts | 32 ++ apps/desktop/src/i18n/locales/ja.ts | 32 ++ apps/desktop/src/i18n/locales/pt-BR.ts | 32 ++ apps/desktop/src/i18n/locales/zh-CN.ts | 32 ++ apps/desktop/src/i18n/locales/zh-TW.ts | 32 ++ apps/desktop/src/lib/api.ts | 7 + apps/desktop/src/lib/http.ts | 51 +++ .../desktop/src/lib/sidebarActiveTabTarget.ts | 25 ++ apps/desktop/src/lib/sidebarNodeOrdering.ts | 6 + apps/desktop/src/lib/sidebarTreeItemLayout.ts | 26 +- apps/desktop/src/lib/tabPresentation.ts | 16 + apps/desktop/src/lib/tauri.ts | 54 ++++ apps/desktop/src/lib/treeNodeClick.ts | 7 +- apps/desktop/src/stores/connectionStore.ts | 34 +- apps/desktop/src/stores/queryStore.ts | 54 ++++ apps/desktop/src/types/database.ts | 10 +- crates/dbx-core/src/db/mongo_driver.rs | 294 +++++++++++++++++- crates/dbx-core/src/db/vector_driver.rs | 57 +++- crates/dbx-core/src/document_ops.rs | 209 ++++++++++++- crates/dbx-web/src/main.rs | 7 + crates/dbx-web/src/routes/document_store.rs | 159 +++++++++- .../app-tests/openTabsPersistence.test.ts | 18 ++ .../app-tests/sidebarActiveTabTarget.test.ts | 44 +++ .../app-tests/sidebarNodeOrdering.test.ts | 20 ++ packages/app-tests/tabPresentation.test.ts | 39 +++ packages/app-tests/treeNodeClick.test.ts | 10 +- src-tauri/src/commands/document_cmd.rs | 87 ++++++ src-tauri/src/lib.rs | 7 + 35 files changed, 1959 insertions(+), 39 deletions(-) create mode 100644 apps/desktop/src/components/document/MongoBucketBrowser.vue create mode 100644 apps/desktop/src/components/document/MongoGridFsBrowser.vue diff --git a/apps/desktop/src/components/document/MongoBucketBrowser.vue b/apps/desktop/src/components/document/MongoBucketBrowser.vue new file mode 100644 index 0000000000..ac0ca7a0b7 --- /dev/null +++ b/apps/desktop/src/components/document/MongoBucketBrowser.vue @@ -0,0 +1,271 @@ + + + diff --git a/apps/desktop/src/components/document/MongoGridFsBrowser.vue b/apps/desktop/src/components/document/MongoGridFsBrowser.vue new file mode 100644 index 0000000000..3dc07a5fa1 --- /dev/null +++ b/apps/desktop/src/components/document/MongoGridFsBrowser.vue @@ -0,0 +1,211 @@ + + + diff --git a/apps/desktop/src/components/layout/ContentArea.vue b/apps/desktop/src/components/layout/ContentArea.vue index f73d41fc17..aab9bc3e66 100644 --- a/apps/desktop/src/components/layout/ContentArea.vue +++ b/apps/desktop/src/components/layout/ContentArea.vue @@ -39,6 +39,8 @@ const RedisDashboard = defineAsyncComponent(() => import("@/components/redis/Red const EtcdKeyBrowser = defineAsyncComponent(() => import("@/components/etcd/EtcdKeyBrowser.vue")); const ZooKeeperKeyBrowser = defineAsyncComponent(() => import("@/components/zookeeper/ZooKeeperKeyBrowser.vue")); const DocumentBrowser = defineAsyncComponent(() => import("@/components/document/DocumentBrowser.vue")); +const MongoGridFsBrowser = defineAsyncComponent(() => import("@/components/document/MongoGridFsBrowser.vue")); +const MongoBucketBrowser = defineAsyncComponent(() => import("@/components/document/MongoBucketBrowser.vue")); const VectorBrowser = defineAsyncComponent(() => import("@/components/vector/VectorBrowser.vue")); const MqAdminConsole = defineAsyncComponent(() => import("@/components/mq/MqAdminConsole.vue")); const NacosAdminConsole = defineAsyncComponent(() => import("@/components/nacos/NacosAdminConsole.vue")); @@ -1288,6 +1290,18 @@ defineExpose({ focusSearch, refreshData, handleModRTarget, requestQueryEditorExe + + + +