use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DtoConfig {
#[serde(default)]
pub python: PythonDtoStyle,
#[serde(default)]
pub python_output: Option<PythonDtoStyle>,
#[serde(default)]
pub node: NodeDtoStyle,
#[serde(default)]
pub ruby: RubyDtoStyle,
#[serde(default)]
pub php: PhpDtoStyle,
#[serde(default)]
pub elixir: ElixirDtoStyle,
#[serde(default)]
pub go: GoDtoStyle,
#[serde(default)]
pub java: JavaDtoStyle,
#[serde(default)]
pub csharp: CsharpDtoStyle,
#[serde(default)]
pub r: RDtoStyle,
}
impl DtoConfig {
pub fn python_output_style(&self) -> PythonDtoStyle {
self.python_output.unwrap_or(self.python)
}
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum PythonDtoStyle {
#[default]
Dataclass,
TypedDict,
Pydantic,
Msgspec,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum NodeDtoStyle {
#[default]
Interface,
Zod,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum RubyDtoStyle {
#[default]
Struct,
DryStruct,
Data,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum PhpDtoStyle {
#[default]
ReadonlyClass,
Array,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum ElixirDtoStyle {
#[default]
Struct,
TypedStruct,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum GoDtoStyle {
#[default]
Struct,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum JavaDtoStyle {
#[default]
Record,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum CsharpDtoStyle {
#[default]
Record,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
pub enum RDtoStyle {
#[default]
List,
R6,
}