1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
8pub struct DtoConfig {
9 #[serde(default)]
11 pub python: PythonDtoStyle,
12 #[serde(default)]
14 pub python_output: Option<PythonDtoStyle>,
15 #[serde(default)]
17 pub node: NodeDtoStyle,
18 #[serde(default)]
20 pub ruby: RubyDtoStyle,
21 #[serde(default)]
23 pub php: PhpDtoStyle,
24 #[serde(default)]
26 pub elixir: ElixirDtoStyle,
27 #[serde(default)]
29 pub go: GoDtoStyle,
30 #[serde(default)]
32 pub java: JavaDtoStyle,
33 #[serde(default)]
35 pub csharp: CsharpDtoStyle,
36 #[serde(default)]
38 pub r: RDtoStyle,
39}
40
41impl DtoConfig {
42 pub fn python_output_style(&self) -> PythonDtoStyle {
44 self.python_output.unwrap_or(self.python)
45 }
46}
47
48#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
49#[serde(rename_all = "kebab-case")]
50pub enum PythonDtoStyle {
51 #[default]
52 Dataclass,
53 TypedDict,
54 Pydantic,
55 Msgspec,
56}
57
58#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
59#[serde(rename_all = "kebab-case")]
60pub enum NodeDtoStyle {
61 #[default]
62 Interface,
63 Zod,
64}
65
66#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
67#[serde(rename_all = "kebab-case")]
68pub enum RubyDtoStyle {
69 #[default]
70 Struct,
71 DryStruct,
72 Data,
73}
74
75#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
76#[serde(rename_all = "kebab-case")]
77pub enum PhpDtoStyle {
78 #[default]
79 ReadonlyClass,
80 Array,
81}
82
83#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
84#[serde(rename_all = "kebab-case")]
85pub enum ElixirDtoStyle {
86 #[default]
87 Struct,
88 TypedStruct,
89}
90
91#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
92#[serde(rename_all = "kebab-case")]
93pub enum GoDtoStyle {
94 #[default]
95 Struct,
96}
97
98#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
99#[serde(rename_all = "kebab-case")]
100pub enum JavaDtoStyle {
101 #[default]
102 Record,
103}
104
105#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
106#[serde(rename_all = "kebab-case")]
107pub enum CsharpDtoStyle {
108 #[default]
109 Record,
110}
111
112#[derive(Debug, Clone, Copy, Serialize, Deserialize, Default, PartialEq, Eq)]
113#[serde(rename_all = "kebab-case")]
114pub enum RDtoStyle {
115 #[default]
116 List,
117 R6,
118}