mydb 0.0.1

This is a plugin that works with mydb_sqlx to make database operation easier
Documentation
use proc_macro2::{ Ident, Span, TokenStream };
use quote::quote;
use crate::derives::{
  TableField,
  utils::{ set_ident, type_value }
};

pub fn set_getters(table_list: Vec<TableField>) -> Vec<TokenStream> {
  Getters::new(table_list).set_getters()
}

#[derive(Debug, Clone, Default)]
pub struct Getters {
  pub data: Vec<TableField>,
  pub ts_getters: Vec<TokenStream>,
}

impl Getters {
  pub fn new(data: Vec<TableField>) -> Self {
    Getters {
      data,
      ts_getters: Vec::new(),
    }
  }

  pub fn set_getters(&mut self) -> Vec<TokenStream> {
    for field in &self.data {
      if field.exist {
        let get_name = set_ident(&format!("get_{}", &field.name));
        let name = set_ident(&field.name);
        let reture_value = type_value(field._option, &field.field_type);
        if &field.field_type == "DateTime" {
          self.ts_getters.push(
            quote! {
              pub fn #get_name(&self) -> #reture_value {
                self.#name
              }
            }
          );
        } else {
          self.ts_getters.push(
            quote! {
              pub fn #get_name(&self) -> #reture_value {
                self.#name.clone()
              }
            }
          );
        }
      }
    }
    self.ts_getters.clone()
  }
}