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
    ·
    6 months ago

    Just learning. I threw together a little CRUD API in Rocket the other day.

    Now I’m playing around with Diesel. I don’t love the intermediate New types, coming from EF Core. Is that because Rust ~~~~doesn’t really have constructors?

      • 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.