Expand description
Diesel-async provides async variants of diesel related query functionality
diesel-async is an extension to diesel itself. It is designed to be used together with the main diesel crate. It only provides async variants of core diesel traits, that perform actual io-work. This includes async counterparts the following traits:
diesel::prelude::RunQueryDsl
->diesel_async::RunQueryDsl
diesel::connection::Connection
->diesel_async::AsyncConnection
diesel::query_dsl::UpdateAndFetchResults
->diesel_async::UpdateAndFetchResults
These traits closely mirror their diesel counter parts while providing async functionality.
In addition to these core traits 3 fully async connection implementations are provided by diesel-async:
AsyncMysqlConnection
(enabled by themysql
feature)AsyncPgConnection
(enabled by thepostgres
feature)- [
SyncConnectionWrapper
] (enabled by thesync-connection-wrapper
/sqlite
feature)
Ordinary usage of diesel-async
assumes that you just replace the corresponding sync trait
method calls and connections with their async counterparts.
use diesel::prelude::*;
use diesel_async::{RunQueryDsl, AsyncConnection};
diesel::table! {
users(id) {
id -> Integer,
name -> Text,
}
}
use crate::users::dsl::*;
let mut connection = AsyncPgConnection::establish(std::env::var("DATABASE_URL")?).await?;
let data = users
// use ordinary diesel query dsl here
.filter(id.gt(0))
// execute the query via the provided
// async variant of `diesel_async::RunQueryDsl`
.load::<(i32, String)>(&mut connection)
.await?;
let expected_data = vec![
(1, String::from("Sean")),
(2, String::from("Tess")),
];
assert_eq!(expected_data, data);
Re-exports§
pub use scoped_futures;
Modules§
- async_
connection_ wrapper async-connection-wrapper
This module contains an wrapper type that provides adiesel::Connection
implementation for types that implementcrate::AsyncConnection
. Using this type might be useful for the following usecases: - The traits used by
QueryDsl
. - pg
postgres
Provides types and functions related to working with PostgreSQL - This module contains support using diesel-async with various async rust connection pooling solutions
- The return types produced by the various
RunQueryDsl
methods - sync_
connection_ wrapper sync-connection-wrapper
This module contains a wrapper type that provides acrate::AsyncConnection
implementation for types that implementdiesel::Connection
. Using this type might be useful for the following usecases:
Structs§
- An implementation of
TransactionManager
which can be used for backends which use ANSI standard syntax for savepoints such as SQLite and PostgreSQL. - Async
Mysql Connection mysql
A connection to a MySQL database. Connection URLs should be in the formmysql://[user[:password]@]host/database_name
- Async
PgConnection postgres
A connection to a PostgreSQL database.
Traits§
- An async connection to a database
- Methods used to execute queries.
- Sugar for types which implement both
AsChangeset
andIdentifiable
- Perform simple operations on a backend.
- Manages the internal transaction state for a connection.
- A trait defining how to update a record and fetch the updated entry on a certain backend.