conn_ext.rs 749 B

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