reifydb_catalog/store/namespace/
get.rs1use reifydb_core::{
5 Error,
6 interface::{NamespaceDef, NamespaceId, QueryTransaction},
7};
8use reifydb_type::internal;
9
10use crate::CatalogStore;
11
12impl CatalogStore {
13 pub async fn get_namespace(
14 rx: &mut impl QueryTransaction,
15 namespace: NamespaceId,
16 ) -> crate::Result<NamespaceDef> {
17 CatalogStore::find_namespace(rx, namespace).await?.ok_or_else(|| {
18 Error(internal!(
19 "Namespace with ID {:?} not found in catalog. This indicates a critical catalog inconsistency.",
20 namespace
21 ))
22 })
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use reifydb_engine::test_utils::create_test_command_transaction;
29
30 use crate::{CatalogStore, store::namespace::NamespaceId, test_utils::create_namespace};
31
32 #[tokio::test]
33 async fn test_ok() {
34 let mut txn = create_test_command_transaction().await;
35
36 create_namespace(&mut txn, "namespace_one").await;
37 create_namespace(&mut txn, "namespace_two").await;
38 create_namespace(&mut txn, "namespace_three").await;
39
40 let result = CatalogStore::get_namespace(&mut txn, NamespaceId(1026)).await.unwrap();
41
42 assert_eq!(result.id, NamespaceId(1026));
43 assert_eq!(result.name, "namespace_two");
44 }
45
46 #[tokio::test]
47 async fn test_not_found() {
48 let mut txn = create_test_command_transaction().await;
49
50 create_namespace(&mut txn, "namespace_one").await;
51 create_namespace(&mut txn, "namespace_two").await;
52 create_namespace(&mut txn, "namespace_three").await;
53
54 let err = CatalogStore::get_namespace(&mut txn, NamespaceId(23)).await.unwrap_err();
55
56 assert_eq!(err.code, "INTERNAL_ERROR");
57 assert!(err.message.contains("NamespaceId(23)"));
58 assert!(err.message.contains("not found in catalog"));
59 }
60}