• Bappity@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    3 months ago

    I switched to using tiberius

    bit different but not too hard don’t have my code on hand atm but this is how I started with it

        let mut config = Config::new();
        config.host("your_server_name");
        config.database("your_database_name");
        config.authentication(tiberius::AuthMethod::sql_server("your_username", "your_password"));
        config.trust_cert();
    
        let tcp = TcpStream::connect(config.get_addr()).await?;
        tcp.set_nodelay(true)?;
        
        let mut client = Client::connect(config, tcp.compat_write()).await?;
    

    then I did something along the lines of

    fn main() {
            let stream = client.query(&query, &[]).await?;
            let rows = stream.into_first_result().await?;
    
            let db_data: Vec<MyObject> = rows.into_iter().map(mapping_function_i_made_for_myobject).collect();
    }
    
    fn mapping_function_i_made_for_myobject(row: Row) -> MyObject {
        MyObject {
            my_date_field: row.get::<NaiveDateTime, _>("my_date_field").map(|dt| Local.from_local_datetime(&dt).unwrap()),
        }
    }