use super::GraphStoreError;
use crate::lifecycle::QueryControl;
use crate::property_graph::GraphGeneration;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct GraphMaintenancePolicy {
pub automatic: bool,
pub reclaim_after_bytes: u64,
}
impl Default for GraphMaintenancePolicy {
fn default() -> Self {
Self {
automatic: true,
reclaim_after_bytes: 64 * 1024 * 1024,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct GraphMaintenanceReport {
pub generation: GraphGeneration,
pub replaced_physical_refs: u64,
pub new_pack_bytes: u64,
pub relocated_bytes: u64,
pub drained_packs: u32,
pub reclaimed_bytes: u64,
pub removed_bytes: u64,
pub cycle_complete: bool,
}
impl crate::lifecycle::Store {
pub fn set_graph_maintenance_policy(
&self,
policy: GraphMaintenancePolicy,
) -> Result<(), GraphStoreError> {
self.set_native_graph_maintenance_policy(policy)
.map_err(Into::into)
}
pub fn graph_maintain_step(
&self,
control: &QueryControl,
) -> Result<GraphMaintenanceReport, GraphStoreError> {
self.maintain_native_graph_step(control).map_err(Into::into)
}
pub fn graph_maintain_cycle(
&self,
control: &QueryControl,
) -> Result<GraphMaintenanceReport, GraphStoreError> {
self.maintain_native_graph_cycle(control)
.map_err(Into::into)
}
}