fix(asb): Allow history command to be run while asb is running (#1724)

Co-authored-by: einliterflasche <einliterflasche@pm.me>
This commit is contained in:
binarybaron 2024-07-23 14:52:01 +02:00 committed by GitHub
parent ef49b471d8
commit c80bdb2d8c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 55 additions and 18 deletions

View file

@ -83,16 +83,25 @@ impl Swap {
}
}
pub async fn open_db(sqlite_path: impl AsRef<Path>) -> Result<Arc<dyn Database + Send + Sync>> {
#[derive(Debug, Clone, Copy, Serialize, Deserialize, Hash, PartialEq)]
pub enum AccessMode {
ReadWrite,
ReadOnly,
}
pub async fn open_db(
sqlite_path: impl AsRef<Path>,
access_mode: AccessMode,
) -> Result<Arc<dyn Database + Send + Sync>> {
if sqlite_path.as_ref().exists() {
tracing::debug!("Using existing sqlite database.");
let sqlite = SqliteDatabase::open(sqlite_path).await?;
let sqlite = SqliteDatabase::open(sqlite_path, access_mode).await?;
Ok(Arc::new(sqlite))
} else {
tracing::debug!("Creating and using new sqlite database.");
ensure_directory_exists(sqlite_path.as_ref())?;
tokio::fs::File::create(&sqlite_path).await?;
let sqlite = SqliteDatabase::open(sqlite_path).await?;
let sqlite = SqliteDatabase::open(sqlite_path, access_mode).await?;
Ok(Arc::new(sqlite))
}
}