taubyte_sdk/database/
delete.rs1use super::{imports, Database};
2use crate::errno::Error;
3
4impl Database {
5 fn delete_unsafe(&self, key: &str) -> Error {
6 #[allow(unused_unsafe)]
7 unsafe {
8 imports::databaseDelete(self.id, key.as_ptr(), key.len())
9 }
10 }
11
12 pub fn delete(&self, key: &str) -> Result<(), Box<dyn std::error::Error>> {
13 let err = self.delete_unsafe(key);
14 if err.is_err() {
15 Err(format!("Deleting database key: `{}` failed with: {}", key, err).into())
16 } else {
17 Ok(())
18 }
19 }
20}
21
22#[cfg(test)]
23pub mod test {
24 use crate::database::{new::test, Database};
25 pub static KEY: &str = "/test/v1";
26
27 #[test]
28 fn test_delete() {
29 let database = Database::new(test::DATABASE_NAME).unwrap_or_else(|err| {
30 panic!("{}", err);
31 });
32
33 database.delete(KEY).unwrap_or_else(|err| {
34 panic!("{}", err);
35 })
36 }
37}
38
39#[cfg(test)]
40#[allow(non_snake_case)]
41pub mod mock {
42 use super::test;
43 use crate::{
44 database::new::test as new_test,
45 errno::{Errno, Error},
46 utils::test as utils,
47 };
48
49 pub fn databaseDelete(id: u32, key_ptr: *const u8, key_size: usize) -> Error {
50 let key = utils::read_string(key_ptr, key_size);
51
52 if id != new_test::DATABASE_ID {
53 Errno::ErrorCap.error()
54 } else if key != test::KEY {
55 Errno::ErrorCap.error()
56 } else {
57 Errno::ErrorNone.error()
58 }
59 }
60}