• RustyNova@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      2 months ago

      No idea for Tiberius, but for SQLite I’m stuck with converting to timestamp and back. Ugly but works

      P.S. add a getter to your data struct and you can be “seamless”

    • 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()),
          }
      }