Skip to main content

provenant/output_schema/
header.rs

1use serde::{Deserialize, Serialize};
2use serde_json::{Map, Value};
3
4use super::extra_data::OutputExtraData;
5
6#[derive(Serialize, Deserialize, Debug, Clone)]
7pub struct OutputHeader {
8    pub tool_name: String,
9    pub tool_version: String,
10    pub options: Map<String, Value>,
11    pub notice: String,
12    pub start_timestamp: String,
13    pub end_timestamp: String,
14    pub output_format_version: String,
15    pub duration: f64,
16    pub errors: Vec<String>,
17    pub warnings: Vec<String>,
18    pub extra_data: OutputExtraData,
19}
20
21impl From<&crate::models::Header> for OutputHeader {
22    fn from(value: &crate::models::Header) -> Self {
23        Self {
24            tool_name: value.tool_name.clone(),
25            tool_version: value.tool_version.clone(),
26            options: value.options.clone(),
27            notice: value.notice.clone(),
28            start_timestamp: value.start_timestamp.clone(),
29            end_timestamp: value.end_timestamp.clone(),
30            output_format_version: value.output_format_version.clone(),
31            duration: value.duration,
32            errors: value.errors.clone(),
33            warnings: value.warnings.clone(),
34            extra_data: OutputExtraData::from(&value.extra_data),
35        }
36    }
37}