use crate::Client;
use crate::Credentials;
use crate::Backlog;
use crate::NoopBacklog;
use crate::InfluxResult;
pub struct ClientBuilder
{
url: String,
creds: Credentials,
backlog: Option<Box<dyn Backlog>>
}
impl ClientBuilder
{
pub fn new(url: String, creds: Credentials) -> Self
{
Self {
url, creds,
backlog: None,
}
}
pub fn backlog<B: Backlog + 'static>(mut self, backlog: B) -> Self
{
self.backlog = Some(Box::new(backlog)); self
}
pub fn finish(self) -> InfluxResult<Client>
{
let backlog = match self.backlog
{
Some(b) => { b }
None => { Box::new(NoopBacklog::new()) }
};
Client::new(self.url, self.creds, backlog)
}
}