use crate::db_type::{KeyOptions, Result, ToInput, ToKeyDefinition};
use crate::transaction::internal::private_readable_transaction::PrivateReadableTransaction;
use crate::transaction::internal::r_transaction::InternalRTransaction;
use crate::transaction::internal::rw_transaction::InternalRwTransaction;
pub struct RLen<'db, 'txn> {
pub(crate) internal: &'txn InternalRTransaction<'db>,
}
impl RLen<'_, '_> {
pub fn primary<T: ToInput>(&self) -> Result<u64> {
let model = T::native_db_model();
let result = self.internal.primary_len(model)?;
Ok(result)
}
pub fn secondary<T: ToInput>(&self, key_def: impl ToKeyDefinition<KeyOptions>) -> Result<u64> {
let model = T::native_db_model();
let result = self.internal.secondary_len(model, key_def)?;
Ok(result)
}
}
pub struct RwLen<'db, 'txn> {
pub(crate) internal: &'txn InternalRwTransaction<'db>,
}
impl RwLen<'_, '_> {
pub fn primary<T: ToInput>(&self) -> Result<u64> {
let model = T::native_db_model();
let result = self.internal.primary_len(model)?;
Ok(result)
}
pub fn secondary<T: ToInput>(&self, key_def: impl ToKeyDefinition<KeyOptions>) -> Result<u64> {
let model = T::native_db_model();
let result = self.internal.secondary_len(model, key_def)?;
Ok(result)
}
}