use super::*;
use crate::ops::datetime::DatetimeRoundingFrequency;
pub struct ExprDatetimeNamespace(pub(super) Expr);
impl ExprDatetimeNamespace {
pub fn year(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Year }
}
pub fn month(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Month }
}
pub fn day(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Day }
}
pub fn hour(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Hour }
}
pub fn minute(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Minute }
}
pub fn second(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Second }
}
pub fn millisecond(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Millisecond }
}
pub fn microsecond(self) -> Expr {
Expr::DateTimeComponent { input: Box::new(self.0), component: DatetimeComponent::Microsecond }
}
pub fn floor(self, frequency: DatetimeRoundingFrequency) -> Expr {
Expr::DateTimeFloor { input: Box::new(self.0), frequency }
}
pub fn offset(self, months: i32, days: i32, nanoseconds: i64) -> Expr {
Expr::DateTimeOffset { input: Box::new(self.0), months, days, nanoseconds }
}
}