36 lines
1.6 KiB
C++
36 lines
1.6 KiB
C++
#pragma once
|
||
#include <string>
|
||
#include <vector>
|
||
#include "repo/RepoTypes.hpp"
|
||
|
||
namespace geopro::data {
|
||
|
||
// 仓储结果信封:网络可失败,故用显式 Result 而非抛异常,便于 UI 出错误/空状态。
|
||
template <class T>
|
||
struct RepoResult {
|
||
bool ok = false;
|
||
T value{};
|
||
std::string error;
|
||
};
|
||
|
||
// 导航仓储抽象(同步;呼应既有 IDatasetRepository 风格)。
|
||
class IProjectRepository {
|
||
public:
|
||
virtual ~IProjectRepository() = default;
|
||
virtual RepoResult<std::vector<Workspace>> listWorkspaces() = 0;
|
||
virtual RepoResult<bool> switchWorkspace(const std::string& tenantId) = 0;
|
||
// 项目分页:nameFilter 名称模糊(可空)、typeId 类型过滤(空=不限)、pageNo 从 1 起。
|
||
virtual RepoResult<ProjectListPage> pageProjects(const std::string& nameFilter,
|
||
const std::string& typeId, int pageNo,
|
||
int pageSize) = 0;
|
||
// 项目类型列表(弹窗类型过滤下拉)。
|
||
virtual RepoResult<std::vector<ProjectType>> listProjectTypes() = 0;
|
||
virtual RepoResult<std::vector<StructNode>> loadStructure(const std::string& projectId) = 0;
|
||
// 按 TM 分页拉数据/文件行:classifyType 3=数据 1=文件;pageNo 从 1 起,pageSize 固定 5。
|
||
virtual RepoResult<DsPage> loadTmRows(const std::string& projectId,
|
||
const std::string& tmObjectId, int classifyType,
|
||
int pageNo) = 0;
|
||
};
|
||
|
||
} // namespace geopro::data
|