derive_sql/proxy/sqlite/
conn.rs1use super::*;
2
3pub struct Conn {
4 conn: rusqlite::Connection,
5}
6
7impl std::convert::From<rusqlite::Connection> for Conn {
8 fn from(conn: rusqlite::Connection) -> Self { Conn { conn } }
9}
10
11impl SqliteTrait for Conn {
12 fn execute<P>(&self, sql: &str, params: P) -> DeriveSqlResult<usize>
13 where P: rusqlite::Params
14 {
15 Ok(self.conn.execute(sql, params)?)
16 }
17
18 fn query_first<T, P, F>(&self, sql: &str, params: P, f: F) -> DeriveSqlResult<T>
19 where P: rusqlite::Params,
20 F: FnOnce(&rusqlite::Row<'_>) -> rusqlite::Result<T>
21 {
22 Ok(
23 self.conn.prepare(sql)?
24 .query_row(params, f)?
25 )
26 }
27
28 fn query_map<T, P, F>(&self, sql: &str, params: P, f: F) -> DeriveSqlResult<Vec<T>>
29 where P: rusqlite::Params,
30 F: FnMut(&rusqlite::Row<'_>) -> rusqlite::Result<T>
31 {
32 Ok(
33 self.conn.prepare(sql)?
34 .query_map(params, f)?
35 .collect::<rusqlite::Result<Vec<T>>>()?
36 )
37 }
38}
39