use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub struct ProvDocument {
pub entities: Vec<ProvEntity>,
pub activities: Vec<ProvActivity>,
pub agents: Vec<ProvAgent>,
pub generations: Vec<ProvGeneration>,
pub usages: Vec<ProvUsage>,
pub derivations: Vec<ProvDerivation>,
}
impl ProvDocument {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ProvEntity {
pub id: String,
pub attributes: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ProvActivity {
pub id: String,
pub start_time: Option<chrono::DateTime<chrono::Utc>>,
pub end_time: Option<chrono::DateTime<chrono::Utc>>,
pub attributes: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ProvAgent {
pub id: String,
pub attributes: HashMap<String, String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ProvGeneration {
pub entity: String,
pub activity: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ProvUsage {
pub activity: String,
pub entity: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ProvDerivation {
pub generated_entity: String,
pub used_entity: String,
}