use candid::CandidType;
use ic_cdk::api::time;
use candid::Deserialize;
use serde::Serialize;
use crate::backup_info::Status::{NOT_RUNNING, RUNNING};
#[derive(CandidType, Deserialize, Serialize, Clone, Debug)]
pub struct ByteReadResponse {
pub name: String,
pub data: Vec<u8>,
pub hash: String,
}
#[derive(CandidType, Deserialize, Serialize, Clone, Debug)]
pub struct ByteWriteRequest {
pub name: String,
pub start: usize,
pub end: usize,
pub data: Vec<u8>,
pub hash: String,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct BackupJob {
pub name: String,
pub amount: usize,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
pub enum Status {
RUNNING,
NOT_RUNNING,
}
#[derive(CandidType, Serialize, Deserialize, Clone, Debug)]
pub struct BackupInfo {
pub state: Status,
pub last_backup: u64,
}
impl Default for BackupInfo {
fn default() -> Self {
BackupInfo {
state: NOT_RUNNING,
last_backup: 0,
}
}
}
impl BackupInfo {
pub fn backup_start(&mut self) {
self.state = RUNNING;
}
pub fn backup_finish(&mut self) {
self.state = NOT_RUNNING;
self.last_backup = time();
}
}