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