pub struct UsageAnalytics { /* private fields */ }Expand description
Usage analytics system
Implementations§
Source§impl UsageAnalytics
impl UsageAnalytics
Sourcepub fn new(config: AnalyticsConfig) -> UsageAnalytics
pub fn new(config: AnalyticsConfig) -> UsageAnalytics
Create a new usage analytics system
Sourcepub async fn track_event(&self, event: UsageEvent) -> Result<(), AppError>
pub async fn track_event(&self, event: UsageEvent) -> Result<(), AppError>
Track a usage event
Sourcepub async fn track_app_launch(
&self,
session_id: String,
user_id: Option<String>,
) -> Result<(), AppError>
pub async fn track_app_launch( &self, session_id: String, user_id: Option<String>, ) -> Result<(), AppError>
Track app launch
Sourcepub async fn track_voice_command(
&self,
session_id: String,
user_id: Option<String>,
command: &str,
confidence: f32,
processing_time_ms: u64,
) -> Result<(), AppError>
pub async fn track_voice_command( &self, session_id: String, user_id: Option<String>, command: &str, confidence: f32, processing_time_ms: u64, ) -> Result<(), AppError>
Track voice command
Sourcepub async fn track_gesture(
&self,
session_id: String,
user_id: Option<String>,
gesture_type: &str,
confidence: f32,
) -> Result<(), AppError>
pub async fn track_gesture( &self, session_id: String, user_id: Option<String>, gesture_type: &str, confidence: f32, ) -> Result<(), AppError>
Track gesture
Sourcepub async fn track_error(
&self,
session_id: String,
user_id: Option<String>,
error_type: &str,
error_message: &str,
) -> Result<(), AppError>
pub async fn track_error( &self, session_id: String, user_id: Option<String>, error_type: &str, error_message: &str, ) -> Result<(), AppError>
Track error
Sourcepub async fn generate_insights(
&self,
days_back: Option<i64>,
) -> Result<AnalyticsInsights, AppError>
pub async fn generate_insights( &self, days_back: Option<i64>, ) -> Result<AnalyticsInsights, AppError>
Generate analytics insights
Sourcepub async fn cleanup_old_data(&self) -> Result<usize, AppError>
pub async fn cleanup_old_data(&self) -> Result<usize, AppError>
Clean up old data
Sourcepub async fn update_config(&self, new_config: AnalyticsConfig)
pub async fn update_config(&self, new_config: AnalyticsConfig)
Update configuration
Sourcepub async fn get_config(&self) -> AnalyticsConfig
pub async fn get_config(&self) -> AnalyticsConfig
Get current configuration
Sourcepub async fn get_cached_insights(&self) -> Option<AnalyticsInsights>
pub async fn get_cached_insights(&self) -> Option<AnalyticsInsights>
Get cached insights
Auto Trait Implementations§
impl Freeze for UsageAnalytics
impl !RefUnwindSafe for UsageAnalytics
impl Send for UsageAnalytics
impl Sync for UsageAnalytics
impl Unpin for UsageAnalytics
impl !UnwindSafe for UsageAnalytics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].