use super::asked::Asked;
use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
pub struct SchemaRow {
pub producer: String,
pub type_name: String,
pub kind: String,
pub hash: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub document: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize)]
pub struct SchemaDump {
pub producer: String,
pub served: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub app: Option<String>,
pub types: Vec<SchemaRow>,
#[serde(skip_serializing_if = "Asked::is_not_asked", default)]
pub missing: Asked<Vec<String>>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
pub struct SchemaServer {
pub producer: String,
#[serde(skip_serializing_if = "Asked::is_not_asked")]
pub hash: Asked<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum DriftVerdict {
Disagree,
Unjudgeable,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
pub struct SchemaDrift {
pub type_name: String,
pub servers: Vec<SchemaServer>,
pub verdict: DriftVerdict,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize)]
pub struct TotalityGap {
pub producer: String,
pub missing: Vec<String>,
}