taubyte_sdk/database/
close.rs1use 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}