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.