pub struct BackupManager<V: VaultOperations> {
pub config: BackupConfig,
/* private fields */
}Fields§
§config: BackupConfigImplementations§
Source§impl<V: VaultOperations> BackupManager<V>
impl<V: VaultOperations> BackupManager<V>
pub const fn new(vault: V, config: BackupConfig) -> Self
Sourcepub fn backup_if_needed(&mut self) -> Result<Option<PathBuf>>
pub fn backup_if_needed(&mut self) -> Result<Option<PathBuf>>
Attempts to create a backup if specific conditions are met.
This function checks if the backup functionality is enabled in the configuration and if the current state meets the criteria for performing a backup. If both conditions are satisfied, the backup process is initiated.
§Returns
Ok(Some(PathBuf))- Path to the backup if a backup was successfully created.Ok(None)- If backup functionality is disabled or the conditions for backup are not met.Err- If an error occurs during the preconditions check or while performing the backup.
§Errors
This function may return an error in the following cases:
- An error occurs while determining if a backup should be performed (
should_backup). - An error occurs during the execution of the backup process (
perform_backup).
Sourcepub fn force_backup(&mut self) -> Result<PathBuf>
pub fn force_backup(&mut self) -> Result<PathBuf>
Forces the initiation of a backup and ensures its successful completion.
This function triggers the backup process in a guaranteed manner and ensures that the
resulting backup is successfully created. It internally calls the perform_backup
function and expects it to return a successful result. If perform_backup fails or
does not produce a valid backup, this function will panic with a message indicating
the failure.
§Returns
Returns a Result<PathBuf> containing the path to the completed backup if successful,
or an error if the backup process fails.
§Errors
This function propagates any errors encountered during the call to perform_backup.
Additionally, it will panic if perform_backup does not yield a valid backup path.
§Panics
Panics with the message "Backup failed to perform" if the result of perform_backup
is None despite the operation succeeding.
Sourcepub fn find_all_backups(&self) -> Result<Vec<PathBuf>>
pub fn find_all_backups(&self) -> Result<Vec<PathBuf>>
Finds and returns all backup files located in the configured backup directory.
This method scans the backup directory specified in the configuration
and identifies all files that meet the criteria for being considered
backup files (as determined by the is_backup_file method).
§Returns
Ok(Vec<PathBuf>)- A vector containing the paths to all identified backup files.Err(io::Error)- If an error occurs while reading the backup directory or its entries.
§Behavior
- If the configured backup directory does not exist, the method
returns an empty vector wrapped in
Ok. - If the directory exists, the method iterates through its contents and adds any files matching the backup file criteria to the result vector.
§Errors
This function returns an Err if:
- The
backup_dircannot be read (e.g., due to insufficient permissions). - An error occurs while iterating over entries within the directory.
Sourcepub fn find_most_recent_backup(&self) -> Result<Option<PathBuf>>
pub fn find_most_recent_backup(&self) -> Result<Option<PathBuf>>
Finds the most recent backup file from a list of backup files.
This method retrieves all backup files by invoking the find_all_backups method. It iterates
through each backup file to extract its timestamp using the extract_timestamp_from_filename
method. The backup file with the most recent timestamp is identified and returned.
§Returns
Ok(Some(PathBuf))- APathBufrepresenting the most recent backup file, if any backups exist.Ok(None)- Indicates no backup files were found.Err- Propagates any errors that occur while retrieving the list of backups or extracting timestamps.
§Errors
This method returns an error if:
- The
find_all_backupsmethod fails to retrieve the list of backup files. - Any other internal method call fails.
§Implementation Details
- The backups are identified and sorted based on their timestamp. The timestamp is derived
from the filename by using the
extract_timestamp_from_filenamemethod. - The initial reference timestamp is set to the UNIX epoch (
OffsetDateTime::UNIX_EPOCH).
pub fn extract_timestamp_from_filename( &self, path: &Path, ) -> Option<OffsetDateTime>
Auto Trait Implementations§
impl<V> Freeze for BackupManager<V>where
V: Freeze,
impl<V> RefUnwindSafe for BackupManager<V>where
V: RefUnwindSafe,
impl<V> Send for BackupManager<V>where
V: Send,
impl<V> Sync for BackupManager<V>where
V: Sync,
impl<V> Unpin for BackupManager<V>where
V: Unpin,
impl<V> UnsafeUnpin for BackupManager<V>where
V: UnsafeUnpin,
impl<V> UnwindSafe for BackupManager<V>where
V: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more