How can I create a common function for diesel queries

Want to update code from

fn list() {
    table_name.filter(column_one.eq(value))
    .filter(column_two.eq_any(values))
    .filter(date_column.lt(utc.now()))
   .load::<TableName>(& mut conn)
   .expect("Error lisintg posts");
}

fn count() {
    table_name.filter(column_one.eq(value))
    .filter(column_two.eq_any(values))
    .filter(date_column.lt(utc.now()))
   .count()
   .get_result(& mut conn)
   .expect("Error fetching counts");
}

to

fn list() {
    conditions(value, values)
   .load::<TableName>(& mut conn)
   .expect("Error lisintg posts");
}

fn count() {
    conditions(value, values)
   .count()
   .get_result(& mut conn)
   .expect("Error fetching counts");
}

fn conditions(value, values) {
     table_name.filter(column_one.eq(value))
    .filter(column_two.eq_any(values))
    .filter(date_column.lt(utc.now()))
}

Please try to describe what you already tried and where exactly you've hit a problem. Otherwise it's hard to know which part exactly should be answered.

I have tried

fn get_conditions(
        addresses: &Vec<String>,
        filter_by: &String,
    ) -> Box<dyn BoxableExpression<wallet_alerts, Pg, SqlType = Bool>> {
        let q = wallet_alerts.filter(
            wallet_address
                .eq_any(addresses)
                .and(mark_deleted.eq(false))
                .and(created_at.lt(Utc::now()))
                .and(alert_type.eq(filter_by)),
        );
        Box::new(q.into_boxed())
    }

this give an error as below

error[E0277]: the trait bound `BoxedSelectStatement<'_, (diesel::sql_types::Text, diesel::sql_types::Text, diesel::sql_types::Text, diesel::sql_types::Text, diesel::sql_types::Text, diesel::sql_types::Nullable<diesel::sql_types::Text>, diesel::sql_types::Nullable<diesel::sql_types::Text>, diesel::sql_types::Numeric, diesel::sql_types::Text, diesel::sql_types::Nullable<diesel::sql_types::Timestamptz>, diesel::sql_types::Timestamptz, diesel::sql_types::Text, diesel::sql_types::Nullable<diesel::sql_types::Text>, diesel::sql_types::Nullable<diesel::sql_types::Bool>, diesel::sql_types::Integer), FromClause<schema::wallet_alerts::table>, Pg>: ValidGrouping<()>` is not satisfied

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.