| 366 | } |
| 367 | |
| 368 | pub fn insert_database(&self, mut database: Database) -> Result<u64> { |
| 369 | let id = self.db.generate_id()?; |
| 370 | let tree = self.db.open_tree("database_by_identity")?; |
| 371 | |
| 372 | let key = database.database_identity.to_be_byte_array(); |
| 373 | if tree.contains_key(key)? { |
| 374 | return Err(Error::DatabaseAlreadyExists(database.database_identity)); |
| 375 | } |
| 376 | |
| 377 | database.id = id; |
| 378 | |
| 379 | let buf = sled::IVec::from(compat::Database::from(database).to_vec()?); |
| 380 | |
| 381 | tree.insert(key, buf.clone())?; |
| 382 | tree.flush()?; |
| 383 | |
| 384 | let tree = self.db.open_tree("database")?; |
| 385 | tree.insert(id.to_be_bytes(), buf)?; |
| 386 | tree.flush()?; |
| 387 | |
| 388 | Ok(id) |
| 389 | } |
| 390 | |
| 391 | pub(crate) fn update_database(&self, database: Database) -> Result<()> { |
| 392 | let Some(stored_database) = self.get_database_by_identity(&database.database_identity)? else { |