1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use crate::duckly::{duckdb_connection, duckdb_disconnect, duckdb_register_table_function};
use crate::{check, TableFunction};
#[derive(Debug)]
pub struct Connection {
ptr: duckdb_connection,
}
impl From<duckdb_connection> for Connection {
fn from(ptr: duckdb_connection) -> Self {
Self { ptr }
}
}
impl Connection {
pub fn register_table_function(
&self,
table_function: TableFunction,
) -> Result<(), Box<dyn std::error::Error>> {
unsafe {
check!(duckdb_register_table_function(self.ptr, table_function.ptr));
}
Ok(())
}
pub fn get_ptr(&self) -> duckdb_connection {
self.ptr
}
}
impl Drop for Connection {
fn drop(&mut self) {
unsafe {
duckdb_disconnect(&mut self.ptr);
}
}
}