From f92027142c5c74c9fbb597f7362c962c385e28fb Mon Sep 17 00:00:00 2001 From: mdecimus Date: Tue, 5 Mar 2024 11:01:59 +0100 Subject: [PATCH] Store quotas as u64 --- crates/cli/src/modules/cli.rs | 2 +- crates/cli/src/modules/mod.rs | 4 ++-- crates/directory/src/backend/internal/mod.rs | 2 +- crates/directory/src/backend/sql/lookup.rs | 2 +- crates/directory/src/lib.rs | 2 +- crates/imap/src/op/select.rs | 2 +- crates/jmap/src/api/admin.rs | 6 +++--- crates/jmap/src/auth/mod.rs | 2 +- crates/store/src/backend/foundationdb/blob.rs | 8 ++++---- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/crates/cli/src/modules/cli.rs b/crates/cli/src/modules/cli.rs index f0ccdc6e..41e54723 100644 --- a/crates/cli/src/modules/cli.rs +++ b/crates/cli/src/modules/cli.rs @@ -128,7 +128,7 @@ pub enum AccountCommands { description: Option, /// Update quota in bytes #[clap(short, long)] - quota: Option, + quota: Option, /// Whether the account is an administrator #[clap(short, long)] is_admin: Option, diff --git a/crates/cli/src/modules/mod.rs b/crates/cli/src/modules/mod.rs index 835f6af9..ec2177b5 100644 --- a/crates/cli/src/modules/mod.rs +++ b/crates/cli/src/modules/mod.rs @@ -55,7 +55,7 @@ pub struct Principal { #[serde(rename = "usedQuota")] #[serde(default, skip_serializing_if = "Option::is_none")] - pub used_quota: Option, + pub used_quota: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, @@ -145,7 +145,7 @@ pub enum PrincipalAction { pub enum PrincipalValue { String(String), StringList(Vec), - Integer(u32), + Integer(u64), } impl PrincipalUpdate { diff --git a/crates/directory/src/backend/internal/mod.rs b/crates/directory/src/backend/internal/mod.rs index ca95b18d..5c67f6cc 100644 --- a/crates/directory/src/backend/internal/mod.rs +++ b/crates/directory/src/backend/internal/mod.rs @@ -175,7 +175,7 @@ pub enum PrincipalAction { pub enum PrincipalValue { String(String), StringList(Vec), - Integer(u32), + Integer(u64), } impl PrincipalUpdate { diff --git a/crates/directory/src/backend/sql/lookup.rs b/crates/directory/src/backend/sql/lookup.rs index 8118a026..4a96f543 100644 --- a/crates/directory/src/backend/sql/lookup.rs +++ b/crates/directory/src/backend/sql/lookup.rs @@ -222,7 +222,7 @@ impl SqlMappings { } } else if name.eq_ignore_ascii_case(&self.column_quota) { if let Value::Integer(quota) = value { - principal.quota = quota as u32; + principal.quota = quota as u64; } } } diff --git a/crates/directory/src/lib.rs b/crates/directory/src/lib.rs index 69badef3..5b179fe5 100644 --- a/crates/directory/src/lib.rs +++ b/crates/directory/src/lib.rs @@ -57,7 +57,7 @@ pub struct Principal { #[serde(rename = "type")] pub typ: Type, #[serde(default)] - pub quota: u32, + pub quota: u64, pub name: String, #[serde(default)] pub secrets: Vec, diff --git a/crates/imap/src/op/select.rs b/crates/imap/src/op/select.rs index e622b03d..960403a8 100644 --- a/crates/imap/src/op/select.rs +++ b/crates/imap/src/op/select.rs @@ -82,7 +82,7 @@ impl Session { } // Refresh the mailbox if the modseq has changed or if it's a cache miss - if is_cache_miss || cached_state.modseq != modseq { + if is_cache_miss || cached_state.modseq.unwrap_or(0) < modseq.unwrap_or(0) { match data.fetch_messages(&mailbox).await { Ok(new_state) => { *cached_state = new_state; diff --git a/crates/jmap/src/api/admin.rs b/crates/jmap/src/api/admin.rs index e3270ce0..3544a735 100644 --- a/crates/jmap/src/api/admin.rs +++ b/crates/jmap/src/api/admin.rs @@ -48,10 +48,10 @@ pub struct PrincipalResponse { #[serde(rename = "type")] pub typ: Type, #[serde(default)] - pub quota: u32, + pub quota: u64, #[serde(rename = "usedQuota")] #[serde(default)] - pub used_quota: u32, + pub used_quota: u64, #[serde(default)] pub name: String, #[serde(default)] @@ -204,7 +204,7 @@ impl JMAP { let mut principal = PrincipalResponse::from(principal); principal.used_quota = self.get_used_quota(account_id).await.unwrap_or_default() - as u32; + as u64; // Obtain member names for member_id in diff --git a/crates/jmap/src/auth/mod.rs b/crates/jmap/src/auth/mod.rs index eae046c0..985e4fde 100644 --- a/crates/jmap/src/auth/mod.rs +++ b/crates/jmap/src/auth/mod.rs @@ -51,7 +51,7 @@ pub struct AccessToken { pub access_to: Vec<(u32, Bitmap)>, pub name: String, pub description: Option, - pub quota: u32, + pub quota: u64, pub is_superuser: bool, } diff --git a/crates/store/src/backend/foundationdb/blob.rs b/crates/store/src/backend/foundationdb/blob.rs index d1c6ad29..4ade2b4e 100644 --- a/crates/store/src/backend/foundationdb/blob.rs +++ b/crates/store/src/backend/foundationdb/blob.rs @@ -37,9 +37,9 @@ impl FdbStore { key: &[u8], range: Range, ) -> crate::Result>> { - let block_start = range.start as usize / MAX_VALUE_SIZE; - let bytes_start = range.start as usize % MAX_VALUE_SIZE; - let block_end = (range.end as usize / MAX_VALUE_SIZE) + 1; + let block_start = range.start / MAX_VALUE_SIZE; + let bytes_start = range.start % MAX_VALUE_SIZE; + let block_end = (range.end / MAX_VALUE_SIZE) + 1; let begin = KeySerializer::new(key.len() + 3) .write(SUBSPACE_BLOBS) @@ -64,7 +64,7 @@ impl FdbStore { true, ); let mut blob_data: Option> = None; - let blob_range = (range.end - range.start) as usize; + let blob_range = range.end - range.start; 'outer: while let Some(values) = values.next().await { for value in values? {