Skip to main content

unifly_api/controller/session_queries/
stats.rs

1use crate::controller::Controller;
2use crate::controller::support::require_session;
3use crate::core_error::CoreError;
4
5impl Controller {
6    pub async fn get_site_stats(
7        &self,
8        interval: &str,
9        start: Option<i64>,
10        end: Option<i64>,
11        attrs: Option<&[String]>,
12    ) -> Result<Vec<serde_json::Value>, CoreError> {
13        let guard = self.inner.session_client.lock().await;
14        let session = require_session(guard.as_ref())?;
15        Ok(session.get_site_stats(interval, start, end, attrs).await?)
16    }
17
18    pub async fn get_device_stats(
19        &self,
20        interval: &str,
21        macs: Option<&[String]>,
22        attrs: Option<&[String]>,
23    ) -> Result<Vec<serde_json::Value>, CoreError> {
24        let guard = self.inner.session_client.lock().await;
25        let session = require_session(guard.as_ref())?;
26        Ok(session.get_device_stats(interval, macs, attrs).await?)
27    }
28
29    pub async fn get_client_stats(
30        &self,
31        interval: &str,
32        macs: Option<&[String]>,
33        attrs: Option<&[String]>,
34    ) -> Result<Vec<serde_json::Value>, CoreError> {
35        let guard = self.inner.session_client.lock().await;
36        let session = require_session(guard.as_ref())?;
37        Ok(session.get_client_stats(interval, macs, attrs).await?)
38    }
39
40    pub async fn get_gateway_stats(
41        &self,
42        interval: &str,
43        start: Option<i64>,
44        end: Option<i64>,
45        attrs: Option<&[String]>,
46    ) -> Result<Vec<serde_json::Value>, CoreError> {
47        let guard = self.inner.session_client.lock().await;
48        let session = require_session(guard.as_ref())?;
49        Ok(session
50            .get_gateway_stats(interval, start, end, attrs)
51            .await?)
52    }
53
54    pub async fn get_dpi_stats(
55        &self,
56        group_by: &str,
57        macs: Option<&[String]>,
58    ) -> Result<Vec<serde_json::Value>, CoreError> {
59        let guard = self.inner.session_client.lock().await;
60        let session = require_session(guard.as_ref())?;
61        Ok(session.get_dpi_stats(group_by, macs).await?)
62    }
63}