use crate::{database::Database, error::Error, model::Model};
#[derive(Debug)]
pub struct DatabaseBuilder {
builder: idb::builder::DatabaseBuilder,
}
impl DatabaseBuilder {
pub fn new(name: &str) -> Self {
Self {
builder: idb::builder::DatabaseBuilder::new(name),
}
}
pub fn version(mut self, version: u32) -> Self {
self.builder = self.builder.version(version);
self
}
pub fn add_model<M>(mut self) -> Self
where
M: Model,
{
self.builder = self.builder.add_object_store(M::object_store_builder());
self
}
pub async fn build(self) -> Result<Database, Error> {
self.builder
.build()
.await
.map(Database::new)
.map_err(Into::into)
}
}