use crate::{
DocumentField, MappingProperty, codegen::IterableProperties, error::GeneratorError,
rename::RenameCasing,
};
pub(crate) fn gen_struct(
fields: &[DocumentField],
rename_all: Option<RenameCasing>,
) -> Result<(Vec<MappingProperty>, Vec<IterableProperties>), GeneratorError> {
let mut properties = Vec::new();
let mut iterable = Vec::new();
for field in fields {
if field.flatten {
let ty = &field.ty;
iterable.push(IterableProperties {
source: quote::quote! {
<#ty as elastic_mapping::MappingType>::fields()
},
});
} else {
properties.push(field.gen_mapping(rename_all));
}
}
Ok((properties, iterable))
}