use super::{GarbageCollectionGeneration, RecordIdentifier, Result};
pub(crate) fn garbage_collection_log_entry(
repository_size: u64,
reclaimed_size: u64,
generation: GarbageCollectionGeneration,
compacted_nodes: u64,
root: RecordIdentifier,
) -> String {
let timestamp = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.map_or(0, |duration| duration.as_millis());
format!(
"{repository_size},{reclaimed_size},{timestamp},{},{},{compacted_nodes},{}:{}\n",
generation.generation, generation.full_generation, root.segment, root.record_number as i32,
)
}
pub(crate) fn append_garbage_collection_log_entry(
directory: &std::path::Path,
line: &str,
) -> Result<()> {
use std::io::Write as _;
let mut file = std::fs::OpenOptions::new()
.create(true)
.append(true)
.open(directory.join("gc.log"))?;
file.write_all(line.as_bytes())?;
file.sync_data()?;
Ok(())
}