1

私はRustとDieselにはまったく慣れていません。私は今、次のようなクエリにディーゼルフィルタリングを実装しようとしています:

-- @param1 is duration in years
-- @param2 is duration in months

SELECT columns FROM a
WHERE 
(...dynamic AND clauses)
AND (((a.min_unit = "Years") AND (a.min_duration <= @param1))
  OR ((a.min_unit = "Months") AND (a.min_duration <= @param2)))
(...dynamic AND clauses)

ドキュメントや Web でいくつか検索した後も、これを行う方法が見つかりませんでした。私の最も近い推測は次のとおりです。

let param1 = ...;
let param2 = ...;

let mut query = a::table.select(a::all_columns).into_boxed();
// dynamic clauses: query = query.filter(...) ...
query = query.filter(a::min_unit.eq(Some("Years")).and(a::min_duration.le(Some(param1))))
  .or_filter(a::min_unit.eq(Some("Months")).and(a::min_duration.le(Some(param2))));
// dynamic clauses: query = query.filter(...) ...

let results = a::table.load<A>(&*conn);

誰でもアイデアがありますか?

ありがとう!

4

2 に答える 2