use crate::mvcc::commit::{PreparedLookup, RecordWriteKind};
use crate::mvcc::{PreparedRecordCommit, PreparedRecordWrite, VersionResult};
use crate::read_control::StorageReadControl;
pub(super) struct StructuralRecords<'a>(PreparedLookup<'a>);
impl<'a> StructuralRecords<'a> {
pub(super) fn new(
prepared: &'a PreparedRecordCommit,
control: &StorageReadControl,
) -> VersionResult<Self> {
PreparedLookup::new(prepared, control).map(Self)
}
pub(super) fn writes(&self) -> &PreparedLookup<'a> {
&self.0
}
pub(super) fn get(
&self,
key: &[u8],
control: &StorageReadControl,
) -> VersionResult<Option<PreparedRecordWrite>> {
Ok(self
.0
.get(key, control)?
.filter(|write| write.kind() == RecordWriteKind::Canonical))
}
}