mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2026-01-30 19:15:17 +01:00
* chore: Major refactoring Still needs a massive go-over because there shouldn't be anything referencing tauri in any of the workspaces except the original one. Process manager has been refactored as an example Signed-off-by: quexeky <git@quexeky.dev> * fix: Remote tauri dependency from process Signed-off-by: quexeky <git@quexeky.dev> * refactor: Improvements to src-tauri Signed-off-by: quexeky <git@quexeky.dev> * refactor: Builds, but some logic still left to move back Signed-off-by: quexeky <git@quexeky.dev> * refactor: Finish refactor Signed-off-by: quexeky <git@quexeky.dev> * chore: Run cargo clippy && cargo fmt Signed-off-by: quexeky <git@quexeky.dev> * refactor: Move everything into src-tauri Signed-off-by: quexeky <git@quexeky.dev> --------- Signed-off-by: quexeky <git@quexeky.dev>
46 lines
1.4 KiB
Rust
46 lines
1.4 KiB
Rust
use std::{
|
|
path::PathBuf,
|
|
sync::{Arc, LazyLock},
|
|
};
|
|
|
|
use rustbreak::{DeSerError, DeSerializer};
|
|
use serde::{Serialize, de::DeserializeOwned};
|
|
|
|
use crate::interface::{DatabaseImpls, DatabaseInterface};
|
|
|
|
pub static DB: LazyLock<DatabaseInterface> = LazyLock::new(DatabaseInterface::set_up_database);
|
|
|
|
#[cfg(not(debug_assertions))]
|
|
static DATA_ROOT_PREFIX: &str = "drop";
|
|
#[cfg(debug_assertions)]
|
|
static DATA_ROOT_PREFIX: &str = "drop-debug";
|
|
|
|
pub static DATA_ROOT_DIR: LazyLock<Arc<PathBuf>> = LazyLock::new(|| {
|
|
Arc::new(
|
|
dirs::data_dir()
|
|
.expect("Failed to get data dir")
|
|
.join(DATA_ROOT_PREFIX),
|
|
)
|
|
});
|
|
|
|
// Custom JSON serializer to support everything we need
|
|
#[derive(Debug, Default, Clone)]
|
|
pub struct DropDatabaseSerializer;
|
|
|
|
impl<T: native_model::Model + Serialize + DeserializeOwned> DeSerializer<T>
|
|
for DropDatabaseSerializer
|
|
{
|
|
fn serialize(&self, val: &T) -> rustbreak::error::DeSerResult<Vec<u8>> {
|
|
native_model::encode(val).map_err(|e| DeSerError::Internal(e.to_string()))
|
|
}
|
|
|
|
fn deserialize<R: std::io::Read>(&self, mut s: R) -> rustbreak::error::DeSerResult<T> {
|
|
let mut buf = Vec::new();
|
|
s.read_to_end(&mut buf)
|
|
.map_err(|e| rustbreak::error::DeSerError::Other(e.into()))?;
|
|
let (val, _version) =
|
|
native_model::decode(buf).map_err(|e| DeSerError::Internal(e.to_string()))?;
|
|
Ok(val)
|
|
}
|
|
}
|