use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
use crate::models::instances::{InstanceId, NodeOrEdgeCreate};
use super::{
common::{CogniteDescribable, CogniteSourceable},
CogniteExtendable, WithInstance, WithView,
};
pub type CogniteExtractorFile = CogniteExtendable<ExtractorFileObject>;
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Clone, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct ExtractorFileObject {
#[serde(flatten)]
pub description: CogniteDescribable,
#[serde(flatten)]
pub source: CogniteSourceable,
pub assets: Option<Vec<InstanceId>>,
pub mime_type: Option<String>,
pub directory: Option<String>,
pub is_uploaded: Option<bool>,
pub uploaded_time: Option<i64>,
pub category: Option<InstanceId>,
pub extracted_data: Option<HashMap<String, String>>,
}
impl ExtractorFileObject {
pub fn new() -> ExtractorFileObject {
Self {
..Default::default()
}
}
}
impl WithView for ExtractorFileObject {
const SPACE: &'static str = "cdf_extraction_extensions";
const EXTERNAL_ID: &'static str = "CogniteExtractorFile";
const VERSION: &'static str = "v1";
}
impl From<CogniteExtractorFile> for NodeOrEdgeCreate<ExtractorFileObject> {
fn from(value: CogniteExtractorFile) -> NodeOrEdgeCreate<ExtractorFileObject> {
value.instance()
}
}