diff --git a/crates/common/src/configuration.rs b/crates/common/src/configuration.rs index 71bb413e..cd074a8b 100644 --- a/crates/common/src/configuration.rs +++ b/crates/common/src/configuration.rs @@ -290,6 +290,8 @@ pub enum TimeUnit { Minute, #[serde(rename = "hour")] Hour, + #[serde(rename = "day")] + Day, } #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)] diff --git a/crates/common/src/ratelimit.rs b/crates/common/src/ratelimit.rs index 66c3facd..3a038d50 100644 --- a/crates/common/src/ratelimit.rs +++ b/crates/common/src/ratelimit.rs @@ -150,6 +150,10 @@ fn get_quota(limit: Limit) -> Quota { TimeUnit::Second => Quota::per_second(tokens), TimeUnit::Minute => Quota::per_minute(tokens), TimeUnit::Hour => Quota::per_hour(tokens), + TimeUnit::Day => { + let per_hour = limit.tokens.saturating_div(24).max(1); + Quota::per_hour(NonZero::new(per_hour).expect("per_hour must be positive")) + } } }