| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | use crate::errors::*;
 | 
					
						
							| 
									
										
										
										
											2021-09-13 15:51:13 +08:00
										 |  |  | use diesel::{dsl::sql, expression::SqlLiteral, query_dsl::LoadQuery, Connection, RunQueryDsl, SqliteConnection};
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | pub trait ConnectionExtension: Connection {
 | 
					
						
							|  |  |  |     fn query<ST, T>(&self, query: &str) -> Result<T>
 | 
					
						
							|  |  |  |     where
 | 
					
						
							|  |  |  |         SqlLiteral<ST>: LoadQuery<SqliteConnection, T>;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     fn exec(&self, query: impl AsRef<str>) -> Result<usize>;
 | 
					
						
							|  |  |  | }
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | impl ConnectionExtension for SqliteConnection {
 | 
					
						
							|  |  |  |     fn query<ST, T>(&self, query: &str) -> Result<T>
 | 
					
						
							|  |  |  |     where
 | 
					
						
							|  |  |  |         SqlLiteral<ST>: LoadQuery<SqliteConnection, T>,
 | 
					
						
							|  |  |  |     {
 | 
					
						
							|  |  |  |         Ok(sql::<ST>(query).get_result(self)?)
 | 
					
						
							|  |  |  |     }
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 12:14:00 +08:00
										 |  |  |     fn exec(&self, query: impl AsRef<str>) -> Result<usize> {
 | 
					
						
							|  |  |  |         Ok(SqliteConnection::execute(self, query.as_ref())?)
 | 
					
						
							|  |  |  |     }
 | 
					
						
							| 
									
										
										
										
											2021-07-19 16:15:20 +08:00
										 |  |  | }
 |