diesel-crud-codegen 0.0.2

diesel-crud-codegen
Documentation
use darling::ast::Data;
use darling::util::Ignored;
use darling::FromDeriveInput;
use syn::{Ident, Type};

#[derive(Debug, FromDeriveInput)]
#[darling(attributes(crud), supports(struct_named))]
pub struct ModelStructOpts {
    pub ident: Ident,
    pub data: Data<Ignored, ModelFieldOpts>,

    #[darling(default)]
    pub option_field: Option<String>,
}

#[derive(Debug, FromField, Clone)]
#[darling(attributes(crud))]
pub struct ModelFieldOpts {
    pub ident: Option<Ident>,

    pub ty: Type,

    ///skip in create/update models
    #[darling(default)]
    pub skip: bool,

    ///create skip
    #[darling(default)]
    pub create_skip: bool,

    ///update skip
    #[darling(default)]
    pub update_skip: bool,
}

impl ModelStructOpts {
    pub fn fields(&self) -> Vec<ModelFieldOpts> {
        self.data.clone().take_struct().expect("Struct Opts get Field error").fields.into_iter().collect::<Vec<_>>()
    }
}

#[derive(Debug, FromDeriveInput)]
#[darling(attributes(view), supports(struct_named))]
pub struct ViewStructOpts {
    pub ident: Ident,
    #[darling(default)]
    pub model: Option<String>,
}