use serde::Deserialize;
use std::collections::BTreeMap;
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct BoundedContextSpec {
pub bounded_context: String,
#[serde(default, rename = "event_type")]
pub event_types: Vec<EventTypeSpec>,
#[serde(default, rename = "command_type")]
pub command_types: Vec<CommandTypeSpec>,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct EventTypeSpec {
pub name: String,
#[serde(default)]
pub fields: Vec<FieldSpec>,
#[serde(default)]
pub tags: BTreeMap<String, String>,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct CommandTypeSpec {
pub name: String,
#[serde(default)]
pub fields: Vec<FieldSpec>,
#[serde(default)]
pub tags: BTreeMap<String, String>,
#[serde(default)]
pub rest_trigger_allowed: bool,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct FieldSpec {
pub name: String,
#[serde(rename = "type")]
pub ty: FieldType,
}
#[derive(Debug, Deserialize, Clone, Copy, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum FieldType {
String,
I64,
Bool,
}