agglayer_config/storage/
backup.rs1use std::path::PathBuf;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Default, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7#[serde(rename_all = "kebab-case")]
8pub enum BackupConfig {
9 #[default]
11 Disabled,
12
13 #[serde(untagged, rename_all = "kebab-case")]
15 Enabled {
16 path: PathBuf,
18 #[serde(default = "default_max_backup_number")]
20 state_max_backup_count: usize,
21 #[serde(default = "default_max_backup_number")]
23 pending_max_backup_count: usize,
24 },
25}
26
27impl BackupConfig {
28 const DEFAULT_MAX_BACKUP_NUMBER: usize = 100;
30
31 pub fn with_path<P: Into<PathBuf>>(path: P) -> Self {
32 BackupConfig::Enabled {
33 path: path.into(),
34 state_max_backup_count: default_max_backup_number(),
35 pending_max_backup_count: default_max_backup_number(),
36 }
37 }
38
39 pub fn is_disabled(&self) -> bool {
40 *self == BackupConfig::Disabled
41 }
42}
43
44const fn default_max_backup_number() -> usize {
45 BackupConfig::DEFAULT_MAX_BACKUP_NUMBER
46}