タイムスタンプと時間間隔の演算と比較を行うフィルター式を使用して、ディーゼル クエリを作成しようとしています。次の式は、そのままのディーゼルを使用して書くことはできないと思います。残念ながら、私はsql(...)
関数を使用する大ハンマー アプローチに頼っています。
let query = videos::table
.inner_join(events::table)
.filter(sql(r#""events"."start_date" <= NOW() + interval '60 seconds'"#))
.filter(sql(r#""events"."start_date" + ("videos"."duration" * interval '1 second') > NOW()"#))
私の(省略された)スキーマ:
table! {
events (id) {
id -> Int4,
video_id -> Int4,
start_date -> Timestamp,
}
}
table! {
videos (id) {
id -> Int4,
duration -> Float4,
}
}
私の質問:
- 私が間違っている?カスタムタイプのないディーゼルでこれを書くことはできますか?
- これがバニラ ディーゼルで記述できない場合、これをよりタイプ セーフでディーゼルに適した表現に分割するにはどうすればよいでしょうか? どの部分がカスタムで、どの特性を実装する必要がありますか?