zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use crate::prelude2::*;

use std::collections::HashMap;

#[derive(Debug, validator::Validate, serde::Serialize, serde::Deserialize)]
pub struct QueryStringParams {
    #[validate(length(min = 3))]
    key: String,
}

pub async fn redis_rs_set(
    query_params: actix_web_validator5::Query<QueryStringParams>,
    body: web::Bytes,
    request: HttpRequest,
    app_state: web::Data<AppState>,
) -> impl Responder {
    let key = &query_params.key;
    let val = crate::commons::bytes_to_string(body.to_vec())?;

    app_state.redis_rs().set_ex(key, &val, 10).await?;

    request.json(200, R::ok(true))
}

pub async fn redis_rs_ttl(
    query: web::Query<HashMap<String, String>>,
    request: HttpRequest,
    app_state: web::Data<AppState>,
) -> impl Responder {
    let key = query
        .get("key")
        .cloned()
        .unwrap_or_else(|| String::from(""));

    let val = app_state.redis_rs().ttl(&key).await?;

    request.json(200, R::ok(val))
}

pub async fn redis_rs_exists(
    query: web::Query<HashMap<String, String>>,
    request: HttpRequest,
    app_state: web::Data<AppState>,
) -> impl Responder {
    let key = query
        .get("key")
        .cloned()
        .unwrap_or_else(|| String::from(""));

    let val = app_state.redis_rs().exists(&key).await?;

    request.json(200, R::ok(val))
}

pub async fn redis_rs_get(
    query: web::Query<HashMap<String, String>>,
    request: HttpRequest,
    app_state: web::Data<AppState>,
) -> impl Responder {
    let key = query
        .get("key")
        .cloned()
        .unwrap_or_else(|| String::from(""));

    let val = app_state.redis_rs().get::<String>(&key).await?;

    request.json(200, R::ok(val))
}