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

      just started out rust and made a massive thing with sqlx only to find out the latest versions don’t have mssql support anymore and the last version that did doesn’t support decoding DateTime<Utc> 😭😭😭

      had to rewrite the whole thing again with Tiberius, painful yet educational

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

        Sadly sqlx seems to have gone semi-proprietary with their MSQL driver. Personally never understood the appeal of mssql when there’s Postgres and SQLite, but hey, it does work.

        I’ve started using welds as my new ORM of choice as SeaORM and Diesel is just not a friendly experience, and supports Mssql OOB. So it’s nice there’s still options for it.

        • 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
          2 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()),
              }
          }
          
          
  • Captain Aggravated@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    75
    ·
    2 months ago

    So this has bothered me since I was a teenager.

    In Empire Strikes Back, Yoda talked like this: “Put the cart before the horse, I have.” And he mostly did it while he was pretending to be a dingus early on to test Luke’s patience. Some actual movie quotes: “I cannot teach him. The boy has not patience.” “No. Do, or do not. There is no try.” “Judge me by my size, do you?”

    In the prequel trilogy, it’s like Lucas bought into the meme that Yoda talks funny, so all of a sudden Yoda talks like this “Before the horse, the cart, I have put.” “Around the survivors, a perimeter, create!”

    Anyway.