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:

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 the mysql feature)
  • AsyncPgConnection (enabled by the postgres feature)
  • [SyncConnectionWrapper] (enabled by the sync-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_wrapperasync-connection-wrapper
This module contains an wrapper type that provides a diesel::Connection implementation for types that implement crate::AsyncConnection. Using this type might be useful for the following usecases:
methods
The traits used by QueryDsl.
pgpostgres
Provides types and functions related to working with PostgreSQL
pooled_connectionpool
This module contains support using diesel-async with various async rust connection pooling solutions
return_futures
The return types produced by the various RunQueryDsl methods
sync_connection_wrappersync-connection-wrapper
This module contains a wrapper type that provides a crate::AsyncConnection implementation for types that implement diesel::Connection. Using this type might be useful for the following usecases:

Structs§

AnsiTransactionManager
An implementation of TransactionManager which can be used for backends which use ANSI standard syntax for savepoints such as SQLite and PostgreSQL.
AsyncMysqlConnectionmysql
A connection to a MySQL database. Connection URLs should be in the form mysql://[user[:password]@]host/database_name
AsyncPgConnectionpostgres
A connection to a PostgreSQL database.

Traits§

AsyncConnection
An async connection to a database
RunQueryDsl
Methods used to execute queries.
SaveChangesDsl
Sugar for types which implement both AsChangeset and Identifiable
SimpleAsyncConnection
Perform simple operations on a backend.
TransactionManager
Manages the internal transaction state for a connection.
UpdateAndFetchResults
A trait defining how to update a record and fetch the updated entry on a certain backend.