sql_tools 0.11.10

A rust crate meant to make SQL queries simple and communication between various SQL versions easy.
Documentation
use date::{date_conversion, date_w_abbrv_conversion};
use datetime::datetime_conversion;

use crate::data_types::SQLDataTypes;

pub mod date;
pub mod datetime;
pub mod dt_regex;

impl SQLDataTypes {
    pub fn format_data_types(&mut self) -> &mut SQLDataTypes {
        let val = if let SQLDataTypes::Varchar(val) = self {
            val
        } else {
            return self;
        };
        if val.trim().len() == 0 {
            *self = SQLDataTypes::NULL;
            return self;
        }
        if !contains_number(val) {
            return self;
        }
        if let Ok(int) = val.parse::<i64>() {
            *self = SQLDataTypes::Number(int);
            return self;
        }
        if let Ok(float) = val.parse::<f64>() {
            *self = SQLDataTypes::Float(float);
            return self;
        }
        if contains_number(val) && is_dt(val) {
            if let Some(val) = date_match(val) {
                *self = val;
                return self;
            }
        }
        return self;
    }
}

fn contains_number(input: &mut String) -> bool {
    let is_num = input
        .trim()
        .chars()
        .map(|char| char.is_ascii_digit())
        .collect::<Vec<bool>>();
    if is_num.contains(&true) {
        return true;
    } else {
        false
    }
}

fn is_dt(input: &mut String) -> bool {
    if input.contains("/") || input.contains("-") || input.contains(":") {
        return true;
    } else {
        return false;
    }
}

fn date_match(val: &mut String) -> Option<SQLDataTypes> {
    if let Ok(dt) = datetime_conversion(val) {
        return Some(SQLDataTypes::Date(dt));
    }
    if let Ok(date) = date_conversion(val) {
        let dt = date.and_hms_milli_opt(0, 0, 0, 0).unwrap();
        return Some(SQLDataTypes::Date(dt));
    }
    if let Ok(date) = date_w_abbrv_conversion(val) {
        let dt = date.and_hms_milli_opt(0, 0, 0, 0).unwrap();
        return Some(SQLDataTypes::Date(dt));
    }
    None
}