feat(data): IAsyncProjectRepository 异步导航仓储抽象(薄封装,返回NavRequest,Async后缀)

This commit is contained in:
gaozheng 2026-06-12 07:39:41 +08:00
parent 4beb7a9523
commit 2ee1ccdb0f
1 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,28 @@
#pragma once
#include <string>
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<Workspace>
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<ProjectType>
virtual NavRequest* loadStructureAsync(const std::string& projectId) = 0; // std::vector<StructNode>
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<ExceptionRow>
};
} // namespace geopro::data