sql_tools/create/oracle_sql/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use crate::{errors::Error, SQLVariation};

use super::{CreateDataTypes, CreateTable};

pub(crate) fn oracle_build_create_table(create_table: CreateTable) -> Result<(), Error> {
    let conn_info = match create_table.connect {
        SQLVariation::Oracle(oracle_connect) => oracle_connect,
    };

    let cols_and_data_types = create_table.columns.iter().map(|col_props|{
        match col_props.data_type {
            CreateDataTypes::VARCHAR(mut num) => {
                if num == 0 { num = 1 } else { num = num }
                format!("{} VARCHAR2({})", &col_props.name, num)
            },
            CreateDataTypes::NUMBER => format!("{} NUMBER", &col_props.name),
            CreateDataTypes::FLOAT => format!("{} FLOAT", &col_props.name),
            CreateDataTypes::DATE => format!("{} DATE", &col_props.name),
        }
    }).collect::<Vec<String>>().join(", ");

    let sql = format!("CREATE TABLE {} ({})", create_table.table, cols_and_data_types);
    // println!("{}", sql);
    let conn: oracle::Connection = oracle::Connection::connect(&conn_info.username, &conn_info.password, &conn_info.connection_string).unwrap(); 
    conn.execute(&sql, &[])?;
    conn.commit()?;
    Ok(())
}