taitan-orm-parser 0.1.12

Next Generation ORM based on sqlx
Documentation
use proc_macro2::TokenStream;
use quote::{format_ident, quote};
use crate::{FieldMapper, TableDef};

#[derive(Debug, Default)]
pub struct SelectedDefaultImplGenerator;


impl SelectedDefaultImplGenerator {
    pub fn generate(
        &self,
        table_def: &TableDef,
    ) -> TokenStream {

        let struct_name = &table_def.struct_name;
        let struct_ident = format_ident!("{}", &struct_name);
        let field_mapper = FieldMapper::new();
        let selected_default_stream = field_mapper.gen_selected_default(&table_def.fields);
        quote! {

            impl Default for #struct_ident {
                fn default() -> Self {
                    Self {
                        #selected_default_stream
                    }
                }
            }
        }
    }
}