use std::collections::BTreeSet;
use cratestack_core::View;
use quote::quote;
use crate::model::struct_only::struct_field_definition;
use crate::shared::{doc_attrs, ident};
pub(crate) fn generate_view_struct_only(
view: &View,
enum_names: &BTreeSet<&str>,
) -> proc_macro2::TokenStream {
let view_ident = ident(&view.name);
let docs = doc_attrs(&view.docs);
let fields = view
.fields
.iter()
.map(|field| struct_field_definition(field, false, enum_names));
quote! {
#docs
#[derive(Debug, Clone, Default, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct #view_ident {
#(#fields)*
}
}
}