use idb::Database;
use crate::{Result, RexieBuilder, Transaction, TransactionMode};
#[derive(Debug)]
pub struct Rexie {
pub(crate) database: Database,
}
impl Rexie {
pub fn builder(name: &str) -> RexieBuilder {
RexieBuilder::new(name)
}
pub fn name(&self) -> String {
self.database.name()
}
pub fn version(&self) -> Result<u32> {
self.database.version().map_err(Into::into)
}
pub fn store_names(&self) -> Vec<String> {
self.database.store_names()
}
pub fn transaction<T: AsRef<str>>(
&self,
store_names: &[T],
mode: TransactionMode,
) -> Result<Transaction> {
let transaction = self.database.transaction(store_names, mode)?;
Ok(Transaction { transaction })
}
pub fn close(self) {
self.database.close();
}
pub async fn delete(name: &str) -> Result<()> {
Self::builder(name).delete().await
}
}