Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
@@ -7,12 +7,10 @@ use crate::{
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub struct State {
|
||||
engine: SharedEngine,
|
||||
pub storage: Storage,
|
||||
events: Events,
|
||||
|
||||
pub commander: Commander,
|
||||
pub querier: Querier,
|
||||
|
||||
backend: Backend,
|
||||
}
|
||||
|
||||
pub enum Backend {
|
||||
@@ -22,19 +20,21 @@ pub enum Backend {
|
||||
|
||||
impl State {
|
||||
pub async fn new(backend: Backend) -> anyhow::Result<Self> {
|
||||
let storage = Storage::new();
|
||||
let engine = storage.load()?;
|
||||
let events = Events::default();
|
||||
let engine = SharedEngine::from(engine);
|
||||
|
||||
let (querier, commander) = match backend {
|
||||
Backend::Local => (
|
||||
Querier::local(&engine),
|
||||
Commander::local(engine.clone(), storage.clone(), events.clone())?,
|
||||
),
|
||||
let (querier, commander) = match &backend {
|
||||
Backend::Local => {
|
||||
let storage = Storage::new();
|
||||
let engine = storage.load()?;
|
||||
let events = Events::default();
|
||||
let engine = SharedEngine::from(engine);
|
||||
(
|
||||
Querier::local(&engine),
|
||||
Commander::local(engine.clone(), storage.clone(), events.clone())?,
|
||||
)
|
||||
}
|
||||
Backend::Remote { url } => {
|
||||
let channel = Channel::from_shared(url)?
|
||||
.tls_config(ClientTlsConfig::new())?
|
||||
let tls = ClientTlsConfig::new();
|
||||
let channel = Channel::from_shared(url.clone())?
|
||||
.tls_config(tls.with_native_roots())?
|
||||
.connect()
|
||||
.await?;
|
||||
|
||||
@@ -46,12 +46,25 @@ impl State {
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
engine: engine.clone(),
|
||||
storage: storage.clone(),
|
||||
events: events.clone(),
|
||||
|
||||
commander,
|
||||
querier,
|
||||
backend,
|
||||
})
|
||||
}
|
||||
|
||||
pub fn unlock(&self) {
|
||||
if let Backend::Local = &self.backend {
|
||||
let storage = Storage::new();
|
||||
storage.clear_lock_file();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn info(&self) -> Option<anyhow::Result<String>> {
|
||||
if let Backend::Local = &self.backend {
|
||||
let storage = Storage::new();
|
||||
return Some(storage.info());
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user