2026-05-05 18:27:36 +08:00
|
|
|
use aether_data::{DataLayerError, StatsDailyAggregationInput, StatsDailyAggregationSummary};
|
|
|
|
|
use chrono::Utc;
|
2026-04-04 01:40:24 +08:00
|
|
|
|
2026-04-05 20:23:16 +08:00
|
|
|
use crate::data::GatewayDataState;
|
2026-04-04 01:40:24 +08:00
|
|
|
|
2026-05-05 18:27:36 +08:00
|
|
|
use super::{stats_aggregation_target_day, system_config_bool};
|
2026-04-03 14:59:58 +08:00
|
|
|
|
|
|
|
|
pub(super) async fn perform_stats_aggregation_once(
|
|
|
|
|
data: &GatewayDataState,
|
2026-05-05 18:27:36 +08:00
|
|
|
) -> Result<Option<StatsDailyAggregationSummary>, DataLayerError> {
|
|
|
|
|
if !data.has_stats_daily_aggregation_backend() {
|
2026-04-03 14:59:58 +08:00
|
|
|
return Ok(None);
|
2026-05-05 18:27:36 +08:00
|
|
|
}
|
2026-04-03 14:59:58 +08:00
|
|
|
if !system_config_bool(data, "enable_stats_aggregation", true).await? {
|
|
|
|
|
return Ok(None);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let now_utc = Utc::now();
|
2026-05-05 18:27:36 +08:00
|
|
|
data.aggregate_stats_daily(&StatsDailyAggregationInput {
|
|
|
|
|
target_day_utc: stats_aggregation_target_day(now_utc),
|
|
|
|
|
aggregated_at: now_utc,
|
2026-04-22 17:29:39 +08:00
|
|
|
})
|
2026-05-05 18:27:36 +08:00
|
|
|
.await
|
2026-04-22 17:29:39 +08:00
|
|
|
}
|