/* * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC * * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ use common::{Server, auth::AccessToken}; use jmap_proto::{ method::query::{QueryRequest, QueryResponse}, object::quota::Quota, types::state::State, }; use std::future::Future; use types::id::Id; pub trait QuotaQuery: Sync + Send { fn quota_query( &self, request: QueryRequest, access_token: &AccessToken, ) -> impl Future> + Send; } impl QuotaQuery for Server { async fn quota_query( &self, request: QueryRequest, access_token: &AccessToken, ) -> trc::Result { Ok(QueryResponse { account_id: request.account_id, query_state: State::Initial, can_calculate_changes: false, position: 0, ids: if self.account(access_token.account_id()).await?.disk_quota() > 0 { vec![Id::new(0)] } else { vec![] }, total: Some(1), limit: None, }) } }