mydb 0.0.1

This is a plugin that works with mydb_sqlx to make database operation easier
Documentation
mod derives;

use proc_macro::TokenStream;
use quote::quote;
use syn::{parse_macro_input, Data, DeriveInput, Fields, Visibility, Type, PathArguments, GenericArgument, Error};

#[proc_macro_derive(TableData, attributes(mydb, table_name, table_field))]
pub fn table_data_derive(input: TokenStream) -> TokenStream {
  let DeriveInput {
      ident, data, attrs, vis, generics,
  } = parse_macro_input!(input as DeriveInput);

  let ts = derives::handle_entity_model(data.clone(), attrs.clone())
  .unwrap_or_else(Error::into_compile_error);

  TokenStream::from(ts)
}

#[proc_macro_derive(Getters, attributes())]
pub fn getters_derive(input: TokenStream) -> TokenStream {
  let DeriveInput {
    ident, data, attrs, vis, generics,
} = parse_macro_input!(input as DeriveInput);
  let ts = derives::handle_getters(data, ident)
  .unwrap_or_else(Error::into_compile_error);
  TokenStream::from(ts)
}

#[proc_macro_derive(Setters, attributes())]
pub fn setters_derive(input: TokenStream) -> TokenStream {
  let DeriveInput {
    ident, data, attrs, vis, generics,
} = parse_macro_input!(input as DeriveInput);
  let ts = derives::handle_setters(data, ident)
  .unwrap_or_else(Error::into_compile_error);
  TokenStream::from(ts)
}