zero4rs 2.0.0

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

use crate::commons::validatorr::validation_flatten;
use std::collections::HashMap;

#[derive(serde::Serialize, serde::Deserialize, validator::Validate)]
// #[serde(rename_all = "camelCase")]
pub struct SimpleMessage {
    title: String,
    html_content: String,
}

pub async fn kafka_producer(
    query: web::Query<HashMap<String, String>>,
    message: web::Form<SimpleMessage>,
    request: HttpRequest,
    app_state: web::Data<AppContext>,
) -> impl Responder {
    if let Some(err) = validation_flatten(&message.0) {
        return request.json(200, R::invalid(err));
    }

    let topic = query
        .get("topic")
        .ok_or_else(|| Error::invalid_request("Missing query string parameter: topic"))?;

    match app_state.kafka().send_message(topic, &message.0).await {
        Some(message_key) => request.json(200, R::ok(message_key)),
        None => request.json(200, R::failed(400, "send message failed".to_string())),
    }
}