sql_tools 0.11.10

A rust crate meant to make SQL queries simple and communication between various SQL versions easy.
Documentation
use crate::{
    Error, QueryBuilder, SQLImplementation,
    data_types::ToSQLData,
    sql_implementations::OracleConnect,
    statements::{
        alter::AlterProps,
        create::CreateProps,
        delete::DeleteProps,
        insert::InsertProps,
        select::{Column, SelectProps},
        update::UpdateProps,
    },
};

impl OracleConnect {
    #[inline]
    pub fn new(connection_string: &str, username: &str, password: &str) -> Result<Self, Error> {
        match oracle::Connection::connect(&username, &password, &connection_string) {
            Ok(_) => Ok(Self {
                connection_string: connection_string.to_string(),
                username: username.to_string(),
                password: password.to_string(),
            }),
            Err(e) => Err(Error::OracleError(e)),
        }
    }
}

impl QueryBuilder for OracleConnect {
    fn select(&self, table: &str, columns: Vec<Column>) -> SelectProps {
        SQLImplementation::Oracle(self.clone()).select_initialization(table, columns)
    }

    fn update(&self, table: &str) -> UpdateProps {
        SQLImplementation::Oracle(self.clone()).update_initialization(table)
    }

    fn insert<T: ToSQLData>(&self, table: &str, data: Vec<Vec<T>>) -> Result<InsertProps, Error> {
        SQLImplementation::Oracle(self.clone()).insert_initialization(table, data)
    }

    fn create(&self) -> CreateProps {
        SQLImplementation::Oracle(self.clone()).create_initialization()
    }

    fn alter(&self) -> AlterProps {
        SQLImplementation::Oracle(self.clone()).alter_initialization()
    }

    fn delete(&self, table: &str) -> DeleteProps {
        SQLImplementation::Oracle(self.clone()).delete_initialization(table)
    }
}