use serde::de::DeserializeOwned;
use std::path::PathBuf;
use tauri::{plugin::PluginApi, AppHandle, Runtime};
use crate::models::*;
#[cfg(target_os = "ios")]
tauri::ios_plugin_binding!(init_plugin_libsql);
pub use crate::desktop::Config;
#[cfg(target_os = "ios")]
tauri::ios_plugin_binding!(init_plugin_libsql);
pub fn init<R: Runtime, C: DeserializeOwned>(
_app: &AppHandle<R>,
_api: PluginApi<R, C>,
config: Config,
) -> crate::Result<Libsql> {
Ok(Libsql(config))
}
pub struct Libsql(Config);
impl Libsql {
pub fn ping(&self, payload: PingRequest) -> crate::Result<PingResponse> {
Ok(PingResponse {
value: payload.value,
})
}
pub fn base_path(&self) -> PathBuf {
self.0
.base_path
.clone()
.unwrap_or_else(|| std::env::current_dir().unwrap_or_else(|_| PathBuf::from(".")))
}
pub fn encryption(&self) -> Option<&EncryptionConfig> {
self.0.encryption.as_ref()
}
}