use kernel::{Address, B3Hash, Seq, TimeMs};
use serde::{Deserialize, Serialize};
pub const VERSIONS_MAX: usize = 100;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct VersionsAnswer {
pub at: Address,
pub versions: Vec<DocumentVersion>,
pub more: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct DocumentVersion {
pub version: B3Hash,
pub bytes: Option<u64>,
pub kept: bool,
pub source: VersionSource,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum VersionSource {
OnDisk,
Saved { seq: Seq, at: TimeMs },
Before { seq: Seq },
}