use parse_display::{Display, FromStr};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::coord;
#[derive(Clone, Debug, Deserialize, Eq, Hash, JsonSchema, PartialEq, Serialize)]
#[serde(rename = "StepExportOptions")]
pub struct ExportOptions {
pub coords: coord::System,
#[serde(skip)]
pub created: Option<chrono::DateTime<chrono::Utc>>,
}
impl Default for ExportOptions {
fn default() -> Self {
Self {
coords: *coord::KITTYCAD,
created: None,
}
}
}
impl std::fmt::Display for ExportOptions {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "coords: {}", self.coords)
}
}
impl std::str::FromStr for ExportOptions {
type Err = <coord::System as std::str::FromStr>::Err;
fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
Ok(Self {
coords: <coord::System as std::str::FromStr>::from_str(s)?,
created: None,
})
}
}
#[derive(Clone, Debug, Default, Eq, Hash, PartialEq, Serialize, Deserialize, JsonSchema, Display, FromStr)]
#[display("")]
#[serde(rename = "StepImportOptions")]
pub struct ImportOptions {}