use std::path::PathBuf;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum QueryProgressEvent {
CacheRefresh {
component: String,
path: PathBuf,
source_endpoint: String,
},
PagedRefresh {
text: String,
state: QueryProgressState,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum QueryProgressState {
Running,
Complete,
Failed,
Stopped,
Stalled,
}
pub trait QueryProgress {
fn report(&mut self, event: QueryProgressEvent);
}
impl<Reporter> QueryProgress for Reporter
where
Reporter: FnMut(QueryProgressEvent),
{
fn report(&mut self, event: QueryProgressEvent) {
self(event);
}
}
pub struct IgnoreQueryProgress;
impl QueryProgress for IgnoreQueryProgress {
fn report(&mut self, _event: QueryProgressEvent) {}
}