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))
}