Skip to main content

uni_store/
compaction.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2024-2026 Dragonscale Team
3
4use std::time::{Duration, SystemTime};
5
6#[derive(Debug, Clone, Copy)]
7pub enum CompactionTask {
8    ByRunCount,
9    BySize,
10    ByAge,
11}
12
13#[derive(Debug, Clone, Default)]
14pub struct CompactionStats {
15    pub files_compacted: usize,
16    pub bytes_before: u64,
17    pub bytes_after: u64,
18    pub duration: Duration,
19    pub crdt_merges: usize,
20}
21
22#[derive(Debug, Clone)]
23pub struct CompactionStatus {
24    pub l1_runs: usize,
25    pub l1_size_bytes: u64,
26    pub oldest_l1_age: Duration,
27    pub compaction_in_progress: bool,
28    pub compaction_pending: usize,
29    pub last_compaction: Option<SystemTime>,
30    pub total_compactions: u64,
31    pub total_bytes_compacted: u64,
32}
33
34impl Default for CompactionStatus {
35    fn default() -> Self {
36        Self {
37            l1_runs: 0,
38            l1_size_bytes: 0,
39            oldest_l1_age: Duration::from_secs(0),
40            compaction_in_progress: false,
41            compaction_pending: 0,
42            last_compaction: None,
43            total_compactions: 0,
44            total_bytes_compacted: 0,
45        }
46    }
47}