From a9e5c086584d3e697188be7003f564e7e2137135 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Thu, 19 Mar 2026 21:39:03 +0800 Subject: Add method to convert local IDs to remote IDs --- .../workspace/src/workspace/manager/id_aliases.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/systems/workspace/src/workspace/manager/id_aliases.rs b/systems/workspace/src/workspace/manager/id_aliases.rs index f3f83d2..a5a509c 100644 --- a/systems/workspace/src/workspace/manager/id_aliases.rs +++ b/systems/workspace/src/workspace/manager/id_aliases.rs @@ -1,5 +1,9 @@ use constants::workspace::dirs::workspace_dir_id_mapping; -use sheet_system::index_source::{IndexSource, alias::IndexSourceAliasesManager}; +use sheet_system::index_source::{ + IndexSource, + alias::{IndexSourceAliasesManager, convert_to_remote}, + error::IDAliasError, +}; use crate::workspace::{error::WorkspaceOperationError, manager::WorkspaceManager}; @@ -24,6 +28,20 @@ impl WorkspaceManager { }) } + /// Attempt to convert a local ID to a remote ID. + pub async fn try_convert_to_remote( + &self, + local_id: u32, + ) -> Result, WorkspaceOperationError> { + let aliases_dir = self.get_space().local_path(workspace_dir_id_mapping())?; + match convert_to_remote(aliases_dir, local_id).await { + Ok(remote_id) => Ok(Some(remote_id)), + Err(IDAliasError::AliasNotFound(_)) => Ok(None), + Err(IDAliasError::Io(e)) => Err(WorkspaceOperationError::Io(e)), + Err(e) => Err(WorkspaceOperationError::IDAliasError(e)), + } + } + /// Write a alias between local and remote IDs pub async fn write_id_alias( &self, -- cgit