diff --git a/index-scheduler/src/index_mapper.rs b/index-scheduler/src/index_mapper.rs index b314ee861..43d72b51d 100644 --- a/index-scheduler/src/index_mapper.rs +++ b/index-scheduler/src/index_mapper.rs @@ -88,4 +88,21 @@ impl IndexMapper { Ok(index) } + + /// Swap two index name. + pub fn swap(&self, wtxn: &mut RwTxn, lhs: &str, rhs: &str) -> Result<()> { + let lhs_uuid = self + .index_mapping + .get(wtxn, lhs)? + .ok_or(Error::IndexNotFound(lhs.to_string()))?; + let rhs_uuid = self + .index_mapping + .get(wtxn, rhs)? + .ok_or(Error::IndexNotFound(rhs.to_string()))?; + + self.index_mapping.put(wtxn, lhs, &rhs_uuid)?; + self.index_mapping.put(wtxn, rhs, &lhs_uuid)?; + + Ok(()) + } }