use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use uuid::Uuid;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum DMNModelFormat {
#[serde(rename = "dmn13-xml")]
Dmn13Xml,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct DMNModel {
pub id: Uuid,
pub domain_id: Uuid,
pub name: String,
pub file_path: String,
pub file_size: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub created_at: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated_at: Option<DateTime<Utc>>,
#[serde(default)]
pub metadata: HashMap<String, serde_json::Value>,
}
impl DMNModel {
pub fn new(domain_id: Uuid, name: String, file_path: String, file_size: u64) -> Self {
DMNModel {
id: Uuid::new_v4(),
domain_id,
name,
file_path,
file_size,
created_at: Some(Utc::now()),
updated_at: Some(Utc::now()),
metadata: HashMap::new(),
}
}
}