Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

    • nebeker@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      6 months ago

      The insert on their Getting Started guide.

      let new_post = NewPost { title, body };
      
      diesel::insert_into(posts::table)
          .values(&new_post)
          .returning(Post::as_returning())
          .get_result(conn)
          .expect("Error saving new post")
      

      Of course the other possibility is this guide is very low on abstractions.

      • sugar_in_your_tea@sh.itjust.works
        link
        fedilink
        arrow-up
        0
        ·
        6 months ago

        Ah, I see. So you’re expecting to have one object for creation, updates, queries, etc.

        I work with something like that at work (SQLAlchemy in Python), and I honestly prefer the Diesel design. I build an object for exactly what I need, so I’ll have a handful of related types used for different purposes. In Python, we have a lot of “contains_eager” calls to ensure data isn’t lazy loaded, and it really clutters up the code. With Diesel, that’s not necessary because I just don’t include data that I don’t need for that operation. Then again, I’m not generally a fan of ORMs and prefer to write SQL, so that’s where I’m coming from.

        • nebeker@programming.dev
          link
          fedilink
          English
          arrow-up
          0
          ·
          6 months ago

          One of my main concerns with this is the potential for making a lot of separate calls to the DB for a complex data structure. Then again there are trade offs to any architecture.