Skip to main content

provenant/output_schema/
header.rs

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