trailbase_sqlean/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[no_mangle]
8unsafe extern "C" fn init_sqlean_extension(
9  db: *mut libsqlite3_sys::sqlite3,
10  _pzErrMrg: *mut *mut ::std::os::raw::c_char,
11  _pThunk: *const libsqlite3_sys::sqlite3_api_routines,
12) -> ::std::os::raw::c_int {
13  define_init(db as *mut sqlite3)
14}
15
16#[cfg(test)]
17mod tests {
18  use rusqlite::Connection;
19
20  #[test]
21  fn load_test() {
22    unsafe {
23      libsqlite3_sys::sqlite3_auto_extension(Some(super::init_sqlean_extension));
24    };
25
26    let conn = Connection::open_in_memory().unwrap();
27
28    conn
29      .query_row("SELECT define('sumn', ':n * (:n + 1) / 2')", (), |_row| {
30        Ok(())
31      })
32      .unwrap();
33    let sum: i64 = conn
34      .query_row("SELECT sumn(5)", (), |row| row.get(0))
35      .unwrap();
36    assert_eq!(15, sum);
37  }
38}