use std::time::Duration;
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use uuid::Uuid;
#[derive(Clone, Debug, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointStatus {
pub success: Option<u64>,
pub failure: Option<CheckpointFailure>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointFailure {
pub sequence_number: u64,
pub error: String,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointResponse {
pub checkpoint_sequence_number: u64,
}
impl CheckpointResponse {
pub fn new(checkpoint_sequence_number: u64) -> Self {
Self {
checkpoint_sequence_number,
}
}
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointSyncResponse {
pub checkpoint_uuid: Uuid,
}
impl CheckpointSyncResponse {
pub fn new(checkpoint_uuid: Uuid) -> Self {
Self { checkpoint_uuid }
}
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointSyncStatus {
pub success: Option<Uuid>,
pub failure: Option<CheckpointSyncFailure>,
pub periodic: Option<Uuid>,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointSyncFailure {
pub uuid: Uuid,
pub error: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, ToSchema)]
pub struct CheckpointMetadata {
pub uuid: Uuid,
pub identifier: Option<String>,
pub fingerprint: u64,
pub size: Option<u64>,
pub steps: Option<u64>,
pub processed_records: Option<u64>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct PSpineBatches {
pub files: Vec<String>,
}
#[derive(Debug)]
pub struct CheckpointSyncMetrics {
pub duration: Duration,
pub speed: u64,
pub bytes: u64,
}