Crate diesel_async
source · [−]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::RunQueryDsldiesel::connection::Connection->diesel_async::AsyncConnectiondiesel::query_dsl::UpdateAndFetchResults->diesel_async::UpdateAndFetchResults
These traits closely mirror their diesel counter parts while providing async functionality.
In addition to these core traits 2 fully async connection implementations are provided by diesel-async:
AsyncMysqlConnection(enabled by themysqlfeature)AsyncPgConnection(enabled by thepostgresfeature)
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);Modules
The traits used by
QueryDsl.pg
postgresProvides types and functions related to working with PostgreSQL
pooled_connection
deadpool or bb8 or mobcThis module contains support using diesel-async with
various async rust connection pooling solutions
The return types produces by the various
RunQueryDsl methodsStructs
An implementation of
TransactionManager which can be used for backends
which use ANSI standard syntax for savepoints such as SQLite and PostgreSQL.AsyncMysqlConnection
mysqlA connection to a MySQL database. Connection URLs should be in the form
mysql://[user[:password]@]host/database_nameAsyncPgConnection
postgresA connection to a PostgreSQL database.
Traits
An async connection to a database
This trait is a workaround to emulate GAT on stable rust
Methods used to execute queries.
Sugar for types which implement both
AsChangeset and IdentifiablePerform 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.