use crate::format::IndexMetadata;
use crate::transaction::TaggedRewriteAssembly;
use std::sync::Arc;
#[derive(Debug, Clone, Default)]
#[non_exhaustive]
pub enum FragReuseUpdate {
#[default]
None,
Rewrite(Arc<TaggedRewriteAssembly>),
Trim,
}
#[derive(Debug, Clone)]
pub struct PreparedIndices {
manifest_version: Option<u64>,
original: Vec<IndexMetadata>,
prepared: Vec<IndexMetadata>,
frag_reuse: FragReuseUpdate,
}
impl PreparedIndices {
pub(crate) fn new(
manifest_version: Option<u64>,
original: Vec<IndexMetadata>,
prepared: Vec<IndexMetadata>,
frag_reuse: FragReuseUpdate,
) -> Self {
Self {
manifest_version,
original,
prepared,
frag_reuse,
}
}
pub fn manifest_version(&self) -> Option<u64> {
self.manifest_version
}
pub fn original(&self) -> &[IndexMetadata] {
&self.original
}
pub fn prepared(&self) -> &[IndexMetadata] {
&self.prepared
}
pub fn frag_reuse_update(&self) -> &FragReuseUpdate {
&self.frag_reuse
}
pub(crate) fn into_parts(self) -> (Vec<IndexMetadata>, Vec<IndexMetadata>, FragReuseUpdate) {
(self.original, self.prepared, self.frag_reuse)
}
}