toql_rocket

Crates.iotoql_rocket
lib.rstoql_rocket
version0.3.0
sourcesrc
created_at2019-05-15 17:37:39.85256
updated_at2021-10-20 13:53:53.595762
descriptionRocket integration for Toql
homepage
repositoryhttps://github.com/roy-ganz/toql_rocket
max_upload_size
id134539
size10,925
Artos (roy-ganz)

documentation

README

Toql Rocket

Use Toql with Rocket.

This crate adds:

  • Toql URL query parameters
  • Response headers with page count information
  • Responder for ToqlError

Add this to your Cargo.toml:

[dependencies]
toql_rocket = "0.3"

Then enjoy some simplifications in your rocket handlers:

use toql_rocket::prelude::{ToqlQUery, Counted};
#[get("/?<toql_query..>")]
pub async fn query(
    cache: &State<Cache>,
    mut conn: Connection<TodoDb>,
    toql_query: ToqlQuery,  //<!-- Get URL parameters with default values
) -> Result<Counted<Json<Vec<Todo>, MyError>>>  
{
    let mut toql = MySqlAsync::from(&mut *conn, &*cache);
    let (query, page) = toql_query.parse::<Todo>()?; //<!-- Parse into typesafe query
    let r = toql.load_page(query, page).await?;

    Ok(Counted(Json(r.0), r.1)) //<!-- Put page count information into headers
}

Check out the full featured REST server based on Rocket, Toql and MySQL.

License

Toql Rocket is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

Commit count: 37

cargo fmt