use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataFakeConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
#[serde(default)]
pub variables: HashMap<String, Value>,
pub schema: Value,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Metadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone)]
pub struct GenerationContext {
pub variables: HashMap<String, Value>,
}
impl GenerationContext {
pub fn new() -> Self {
Self {
variables: HashMap::new(),
}
}
pub fn with_variables(variables: HashMap<String, Value>) -> Self {
Self { variables }
}
pub fn get_variable(&self, name: &str) -> Option<&Value> {
self.variables.get(name)
}
pub fn set_variable(&mut self, name: String, value: Value) {
self.variables.insert(name, value);
}
}
impl Default for GenerationContext {
fn default() -> Self {
Self::new()
}
}