Skip to content
Discussion options

You must be logged in to vote

The likely best solution here is to put your query into a separate function + use #[diesel::dsl::auto_type] there.

This would look like this here:

#[diesel::dsl::auto_type]
fn piece_with_status_base_query() -> _ {
    pieces::table
        .inner_join(piece_status_types::table)
        .left_join(piece_creation_dates::table)
        .left_join(piece_dimensions::table
}

#[derive(HasQuery)]
#[diesel(base_query = piece_with_status_base_query()))]
#[diesel(table_name = pieces)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct PieceWithStatus {
    pub id: i64,
    pub title: String,
    #[diesel(select_expression = piece_status_types::title)]
    pub status: String,
}

In that way rust…

Replies: 1 comment 2 replies

Comment options

You must be logged in to vote
2 replies
@dfego
Comment options

@weiznich
Comment options

Answer selected by dfego
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants