use serde::{Serialize, Deserialize};
use std::collections::HashMap;
use crate::analyzer::SchemaChange;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompatibilityReport {
pub changes: Vec<SchemaChange>,
pub compatibility_score: u8,
pub is_compatible: bool,
pub issues: Vec<CompatibilityIssue>,
pub metadata: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompatibilityIssue {
pub severity: IssueSeverity,
pub description: String,
pub location: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum IssueSeverity {
Error,
Warning,
Info,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationResult {
pub is_valid: bool,
pub errors: Vec<ValidationError>,
pub context: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationError {
pub message: String,
pub path: String,
pub code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MigrationPlan {
pub steps: Vec<String>,
pub metadata: HashMap<String, String>,
}