subscription_usages.rs

 1use crate::db::UserId;
 2
 3use super::*;
 4
 5impl LlmDatabase {
 6    pub async fn get_subscription_usage_for_period(
 7        &self,
 8        user_id: UserId,
 9        period_start_at: DateTimeUtc,
10        period_end_at: DateTimeUtc,
11    ) -> Result<Option<subscription_usage::Model>> {
12        self.transaction(|tx| async move {
13            self.get_subscription_usage_for_period_in_tx(
14                user_id,
15                period_start_at,
16                period_end_at,
17                &tx,
18            )
19            .await
20        })
21        .await
22    }
23
24    async fn get_subscription_usage_for_period_in_tx(
25        &self,
26        user_id: UserId,
27        period_start_at: DateTimeUtc,
28        period_end_at: DateTimeUtc,
29        tx: &DatabaseTransaction,
30    ) -> Result<Option<subscription_usage::Model>> {
31        Ok(subscription_usage::Entity::find()
32            .filter(subscription_usage::Column::UserId.eq(user_id))
33            .filter(subscription_usage::Column::PeriodStartAt.eq(period_start_at))
34            .filter(subscription_usage::Column::PeriodEndAt.eq(period_end_at))
35            .one(tx)
36            .await?)
37    }
38}