taubyte_sdk/database/
close.rs

1use super::{imports, Database};
2use crate::errno::Error;
3
4impl Database {
5    fn close_unsafe(&self) -> Error {
6        #[allow(unused_unsafe)]
7        unsafe {
8            imports::databaseClose(self.id)
9        }
10    }
11
12    pub fn close(&self) -> Result<(), Box<dyn std::error::Error>> {
13        let err = self.close_unsafe();
14        if err.is_err() {
15            Err(format!("Closing database failed with: {}", err).into())
16        } else {
17            Ok(())
18        }
19    }
20}
21
22#[cfg(test)]
23pub mod test {
24    use crate::database::{new::test, Database};
25
26    #[test]
27    fn test_close() {
28        let database = Database::new(test::DATABASE_NAME).unwrap_or_else(|err| {
29            panic!("{}", err);
30        });
31
32        database.close().unwrap_or_else(|err| {
33            panic!("{}", err);
34        })
35    }
36}
37
38#[cfg(test)]
39#[allow(non_snake_case)]
40pub mod mock {
41    use crate::{
42        database::new::test as new_test,
43        errno::{Errno, Error},
44    };
45
46    pub fn databaseClose(id: u32) -> Error {
47        if id != new_test::DATABASE_ID {
48            Errno::ErrorCap.error()
49        } else {
50            Errno::ErrorNone.error()
51        }
52    }
53}