use reifydb_core::{interface::catalog::id::NamespaceId, key::namespace::NamespaceKey};
use reifydb_transaction::transaction::{Transaction, admin::AdminTransaction};
use crate::{
CatalogStore, Result,
store::namespace::shape::namespace::{GRPC, ID, LOCAL_NAME, NAME, PARENT_ID, SHAPE},
};
impl CatalogStore {
pub(crate) fn update_namespace_grpc(
txn: &mut AdminTransaction,
namespace_id: NamespaceId,
grpc: Option<String>,
) -> Result<()> {
let existing = Self::get_namespace(&mut Transaction::Admin(&mut *txn), namespace_id)?;
let mut row = SHAPE.allocate();
SHAPE.set_u64(&mut row, ID, existing.id().0);
SHAPE.set_utf8(&mut row, NAME, existing.name());
SHAPE.set_u64(&mut row, PARENT_ID, existing.parent_id().0);
if let Some(ref grpc) = grpc {
SHAPE.set_utf8(&mut row, GRPC, grpc);
}
SHAPE.set_utf8(&mut row, LOCAL_NAME, existing.local_name());
txn.set(&NamespaceKey::encoded(namespace_id), row)?;
Ok(())
}
}