From 2ee1ccdb0fd603011db037ffae44bb0fc8982310 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Fri, 12 Jun 2026 07:39:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(data):=20IAsyncProjectRepository=20?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=AF=BC=E8=88=AA=E4=BB=93=E5=82=A8=E6=8A=BD?= =?UTF-8?q?=E8=B1=A1(=E8=96=84=E5=B0=81=E8=A3=85,=E8=BF=94=E5=9B=9ENavRequ?= =?UTF-8?q?est,Async=E5=90=8E=E7=BC=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/repo/IAsyncProjectRepository.hpp | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/data/repo/IAsyncProjectRepository.hpp diff --git a/src/data/repo/IAsyncProjectRepository.hpp b/src/data/repo/IAsyncProjectRepository.hpp new file mode 100644 index 0000000..9f9ed26 --- /dev/null +++ b/src/data/repo/IAsyncProjectRepository.hpp @@ -0,0 +1,28 @@ +#pragma once +#include + +namespace geopro::data { + +class NavRequest; + +// 导航异步仓储抽象(薄封装:一方法一请求,返回自管理句柄 emit done(QVariant)/failed(msg))。 +// 汇聚/链式编排由 WorkbenchNavController 负责(它知道完整序列与状态)。 +// 方法与同步 IProjectRepository 一一对应(加 Async 后缀消歧:同名不同返回类型不能同类共存); +// payload 类型见各方法注释(控制器 qvariant_cast)。 +class IAsyncProjectRepository { +public: + virtual ~IAsyncProjectRepository() = default; + virtual NavRequest* listWorkspacesAsync() = 0; // std::vector + virtual NavRequest* switchWorkspaceAsync(const std::string& tenantId) = 0; // bool(解析器内 setToken 副作用) + virtual NavRequest* pageProjectsAsync(const std::string& nameFilter, + const std::string& typeId, int pageNo, int pageSize) = 0; // ProjectListPage + virtual NavRequest* listProjectTypesAsync() = 0; // std::vector + virtual NavRequest* loadStructureAsync(const std::string& projectId) = 0; // std::vector + virtual NavRequest* loadRowsAsync(const std::string& projectId, const std::string& parentId, + int parentConfType, int classifyType, int pageNo) = 0; // DsPage + virtual NavRequest* loadObjectDetailAsync(const std::string& objectId, int confType) = 0; // DynamicForm + virtual NavRequest* loadDatasetFormAsync(const std::string& dsObjectId) = 0; // DynamicForm + virtual NavRequest* loadExceptionsByTmAsync(const std::string& tmObjectId) = 0; // std::vector +}; + +} // namespace geopro::data