use reifydb_core::{interface::catalog::identity::Role, key::role::RoleKey};
use reifydb_transaction::transaction::Transaction;
use crate::{CatalogStore, Result, store::role::convert_role};
impl CatalogStore {
pub(crate) fn list_all_roles(rx: &mut Transaction<'_>) -> Result<Vec<Role>> {
let mut result = Vec::new();
let stream = rx.range(RoleKey::full_scan(), 1024)?;
for entry in stream {
let multi = entry?;
result.push(convert_role(multi));
}
Ok(result)
}
}
#[cfg(test)]
mod tests {
use reifydb_engine::test_harness::create_test_admin_transaction;
use reifydb_transaction::transaction::Transaction;
use crate::CatalogStore;
#[test]
fn test_list_roles() {
let mut txn = create_test_admin_transaction();
CatalogStore::create_role(&mut txn, "admin").unwrap();
CatalogStore::create_role(&mut txn, "editor").unwrap();
let roles = CatalogStore::list_all_roles(&mut Transaction::Admin(&mut txn)).unwrap();
assert_eq!(roles.len(), 2);
}
}