MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / insert_database

Method insert_database

crates/standalone/src/control_db.rs:368–389  ·  view source on GitHub ↗
(&self, mut database: Database)

Source from the content-addressed store, hash-verified

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 {

Callers 2

publish_databaseMethod · 0.80
test_decodeFunction · 0.80

Calls 8

to_be_byte_arrayMethod · 0.80
contains_keyMethod · 0.80
to_vecMethod · 0.80
insertMethod · 0.65
ErrFunction · 0.50
OkFunction · 0.50
cloneMethod · 0.45
flushMethod · 0.45

Tested by 1

test_decodeFunction · 0.64