use crate::prelude2::*;
use crate::commons::validatorr::validation_flatten;
use std::collections::HashMap;
#[derive(serde::Serialize, serde::Deserialize, validator::Validate)]
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())),
}
}