【发布时间】:2020-05-16 06:24:47
【问题描述】:
我一直在尝试使用过滤器表达式构建柴油查询,这些表达式对时间戳和时间间隔进行算术和比较。我相信使用开箱即用的柴油无法编写以下表达式。不幸的是,我采用了使用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,
}
}
我的问题:
- 我错了吗?这可以用没有自定义类型的柴油编写吗?
- 如果这不能用香草柴油编写,我如何将其分解为更安全、对柴油更友好的表达式?哪些部分是自定义的,我需要实现哪些特征?
【问题讨论】:
-
是什么阻止你使用像diesel.rs/guides/getting-started这样的过滤方式?
-
@Stargateur 在我的应用程序的其余部分中,我有很多普通的柴油过滤器,但我不知道如何制作一个对时间戳和间隔进行算术运算的过滤器。
标签: rust rust-diesel