use crate::commons::validatorr::validation_flatten;
use crate::prelude2::*;
#[derive(Debug, validator::Validate, serde::Serialize, serde::Deserialize)]
pub struct ProjectId {
#[validate(range(min = 1, max = 100, message = "project_id must be between 1 to 100"))]
project_id: usize,
}
#[derive(Debug, serde::Serialize, serde::Deserialize)]
pub struct ProjectId10 {
project_id: usize,
}
#[derive(Debug, validator::Validate, serde::Serialize, serde::Deserialize)]
pub struct QueryStringParams {
#[validate(length(min = 3))]
projects: Vec<i32>,
#[validate(length(min = 2))]
name: String,
#[validate(range(min = 18, max = 20, message = "Age must be between 18 to 20"))]
age: usize,
}
pub async fn validate_simple1(
project: web::Query<ProjectId>,
request: HttpRequest,
) -> impl Responder {
if let Some(err) = validation_flatten(&project.0) {
return request.json(200, R::invalid(err));
}
request.json(200, R::ok(project.into_inner().project_id))
}
pub async fn validate_simple10(project: web::Query<ProjectId10>) -> impl Responder {
HttpResponse::Ok().json(R::ok(project.into_inner().project_id))
}
pub async fn validate_simple3(body: web::Bytes, request: HttpRequest) -> impl Responder {
let val = match crate::commons::bytes_to_string(body.to_vec()) {
Ok(val) => val,
Err(e) => return request.json(200, R::failed(500, e.to_string())),
};
request.json(200, R::ok(val))
}
pub async fn validate_simple4(
project: web::Json<ProjectId10>,
request: HttpRequest,
) -> impl Responder {
request.json(200, R::ok(project.0))
}
pub async fn validate_simple5(
project: web::Form<ProjectId>,
request: HttpRequest,
) -> impl Responder {
request.json(200, R::ok(project.0))
}
pub async fn validate_simple6(
_payload: actix_multipart::Multipart,
request: HttpRequest,
) -> impl Responder {
request.json(200, R::ok(true))
}