#![allow(unused)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
include!("bindgen.rs");
extern "C" {
#[doc(hidden)]
pub fn sqlite3_transient() -> sqlite3_destructor_type;
}
#[doc(hidden)]
pub unsafe fn sqlite3_check_result(retval: i32, database: *mut sqlite3) -> Result<(), crate::error::Error> {
use std::{borrow::Cow, ffi::CStr};
if retval == SQLITE_OK {
return Ok(());
}
let error = sqlite3_errstr(retval);
let mut message = match error.is_null() {
true => Cow::Borrowed("Unknown"),
false => CStr::from_ptr(error).to_string_lossy(),
};
if !database.is_null() {
let error = sqlite3_errmsg(database);
let message_ = CStr::from_ptr(error).to_string_lossy();
message = Cow::Owned(format!("{message} ({message_})"));
}
Err(crate::error!("SQLite error: {message}"))
}
#[test]
fn assert_threadsafe() {
let threadsafe = unsafe { sqlite3_threadsafe() };
assert_ne!(threadsafe, 0, "sqlite is not compiled threadsafe?!")
}