use reifydb_core::{
interface::catalog::{id::NamespaceId, namespace::Namespace},
internal,
};
use reifydb_transaction::transaction::Transaction;
use reifydb_type::error::Error;
use crate::{CatalogStore, Result};
impl CatalogStore {
pub(crate) fn get_namespace(rx: &mut Transaction<'_>, namespace: NamespaceId) -> Result<Namespace> {
CatalogStore::find_namespace(rx, namespace)?.ok_or_else(|| {
Error(Box::new(internal!(
"Namespace with ID {:?} not found in catalog. This indicates a critical catalog inconsistency.",
namespace
)))
})
}
}
#[cfg(test)]
pub mod tests {
use reifydb_engine::test_harness::create_test_admin_transaction;
use reifydb_transaction::transaction::Transaction;
use crate::{CatalogStore, store::namespace::NamespaceId, test_utils::create_namespace};
#[test]
fn test_ok() {
let mut txn = create_test_admin_transaction();
create_namespace(&mut txn, "namespace_one");
create_namespace(&mut txn, "namespace_two");
create_namespace(&mut txn, "namespace_three");
let result =
CatalogStore::get_namespace(&mut Transaction::Admin(&mut txn), NamespaceId(16386)).unwrap();
assert_eq!(result.id(), NamespaceId(16386));
assert_eq!(result.name(), "namespace_two");
}
#[test]
fn test_not_found() {
let mut txn = create_test_admin_transaction();
create_namespace(&mut txn, "namespace_one");
create_namespace(&mut txn, "namespace_two");
create_namespace(&mut txn, "namespace_three");
let err = CatalogStore::get_namespace(&mut Transaction::Admin(&mut txn), NamespaceId(23)).unwrap_err();
assert_eq!(err.code, "INTERNAL_ERROR");
assert!(err.message.contains("NamespaceId(23)"));
assert!(err.message.contains("not found in catalog"));
}
}