From 21d48063045386c3a6c8a917d2be4dbd8977c7e8 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Mon, 30 Mar 2026 13:38:48 -0700 Subject: [PATCH] add day time unit for ratelimits PR #851 added ratelimit examples using unit: day but the Rust TimeUnit enum only had second/minute/hour. Adds Day variant and maps it to per-hour quota (tokens/24). --- crates/common/src/configuration.rs | 2 ++ crates/common/src/ratelimit.rs | 4 ++++ 2 files changed, 6 insertions(+) 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")) + } } }