csdif-core 0.1.3

Core library for modeling, validating, and transforming CSDIF data
Documentation
// SPDX-License-Identifier: MIT
// Copyright (c) 2025 Egon Kastelijn
// file: src/validate.rs

use crate::model::CsdifDocument;

/// Validates a CSDIF document for structural consistency.
pub fn validate_document(doc: &CsdifDocument) -> Result<(), String> {
    if doc.sensors.is_empty() {
        return Err("Document must contain at least one sensor.".to_string());
    }

    for obs in &doc.observations {
        if !doc.sensors.iter().any(|s| s.id == obs.sensor_id) {
            return Err(format!("Observation refers to unknown sensor ID: {}", obs.sensor_id));
        }
    }

    Ok(())
}