Skip to main content

openapi_nexus_go/templating/data/
model_struct_data.rs

1//! Model struct data for template rendering
2
3use serde::{Deserialize, Serialize};
4
5use crate::ast::GoStruct;
6use crate::templating::data::CommonFileHeaderData;
7
8/// Model struct data for template rendering
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct ModelStructData {
11    pub struct_definition: GoStruct,
12    pub imports: Vec<String>,
13    pub required_fields: Vec<String>,
14    pub common_file_header: CommonFileHeaderData,
15}
16
17impl ModelStructData {
18    pub fn new(struct_definition: GoStruct, common_file_header: CommonFileHeaderData) -> Self {
19        Self {
20            struct_definition,
21            imports: Vec::new(),
22            required_fields: Vec::new(),
23            common_file_header,
24        }
25    }
26
27    pub fn with_imports(mut self, imports: Vec<String>) -> Self {
28        self.imports = imports;
29        self
30    }
31
32    pub fn with_required_fields(mut self, required_fields: Vec<String>) -> Self {
33        self.required_fields = required_fields;
34        self
35    }
36}