conn_ext.rs 710 B

123456789101112131415161718192021
  1. use crate::errors::*;
  2. use diesel::{dsl::sql, expression::SqlLiteral, query_dsl::LoadQuery, Connection, RunQueryDsl, SqliteConnection};
  3. pub trait ConnectionExtension: Connection {
  4. fn query<ST, T>(&self, query: &str) -> Result<T>
  5. where
  6. SqlLiteral<ST>: LoadQuery<SqliteConnection, T>;
  7. fn exec(&self, query: impl AsRef<str>) -> Result<usize>;
  8. }
  9. impl ConnectionExtension for SqliteConnection {
  10. fn query<ST, T>(&self, query: &str) -> Result<T>
  11. where
  12. SqlLiteral<ST>: LoadQuery<SqliteConnection, T>,
  13. {
  14. Ok(sql::<ST>(query).get_result(self)?)
  15. }
  16. fn exec(&self, query: impl AsRef<str>) -> Result<usize> { Ok(SqliteConnection::execute(self, query.as_ref())?) }
  17. }