#[macro_use]
extern crate tracing;
pub mod blocking;
pub mod logic;
pub mod model;
pub mod repo;
pub mod service;
pub mod svg;
pub mod text;
#[derive(Clone)]
pub struct Lb {
pub config: Config,
pub keychain: Keychain,
pub db: LbDb,
pub docs: AsyncDocs,
pub search: SearchIndex,
pub client: Network,
pub events: EventSubs,
pub syncing: Arc<AtomicBool>,
}
impl Lb {
#[instrument(level = "info", skip_all, err(Debug))]
pub async fn init(config: Config) -> LbResult<Self> {
logging::init(&config)?;
let db = CoreDb::init(db_rs::Config::in_folder(&config.writeable_path))
.map_err(|err| LbErrKind::Unexpected(format!("{:#?}", err)))?;
let keychain = Keychain::from(db.account.get());
let db = Arc::new(RwLock::new(db));
let docs = AsyncDocs::from(&config);
let client = Network::default();
let search = SearchIndex::default();
let syncing = Arc::default();
let events = EventSubs::default();
let result = Self { config, keychain, db, docs, client, search, syncing, events };
result.setup_search();
Ok(result)
}
}
pub fn get_code_version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
pub static DEFAULT_API_LOCATION: &str = "https://api.prod.lockbook.net";
pub static CORE_CODE_VERSION: &str = env!("CARGO_PKG_VERSION");
use crate::repo::CoreDb;
use crate::service::logging;
use db_rs::Db;
use model::core_config::Config;
use model::errors::{LbErrKind, LbResult};
use repo::docs::AsyncDocs;
use repo::LbDb;
use service::events::EventSubs;
use service::keychain::Keychain;
use service::network::Network;
use service::search::SearchIndex;
use std::sync::atomic::AtomicBool;
use std::sync::Arc;
use tokio::sync::RwLock;
pub use uuid::Uuid;