Crate async_dataloader[][src]

Powerful for avoiding N+1 queries with async/await, based on the DataLoader pattern.

data_loader batches loads which occur during a single “poll”, without requiring an artificial delay.

Design inspired by https://github.com/exAspArk/batch-loader and https://github.com/graphql/dataloader

Usage

use async_dataloader::{def_batch_loader, batched};

def_batch_loader! {
    pub async fn loader(inputs: u64) -> String {
        inputs.map(|input| {
             input.to_string()
        })
    }
}

batched(async {
    assert_eq!(*loader(1).await, "1".to_owned());
}).await

Macros

def_batch_loader

Define a batch loader

Structs

BatchContext

Context provided when executing within a batched() future.

Batched

A Future which provides a BatchContext to its child while executing

Enums

BatchLoad

Future returned by a batch loader

Functions

batched

Allows using batch loaders from within the passed future.

delay_loading_batches

Provides a guard which prevents loading new batches until dropped.

with_batch_ctx

Retrieves the batch context from thread local storage