use crate::prelude2::*;
use std::collections::HashMap;
pub async fn es_save(
query: web::Query<HashMap<String, String>>,
params: actix_web::web::Json<serde_json::Value>,
request: HttpRequest,
app_state: web::Data<AppContext>,
) -> impl Responder {
let index_name = query
.get("index_name")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: index_name"))?;
let result = app_state
.es()
.save(index_name, ¶ms.0)
.await
.map_err(|e| Error::throw("保存索引失败", Some(e)))?;
request.json(200, R::ok(result))
}
pub async fn es_save2(
query: web::Query<HashMap<String, String>>,
data: actix_web::web::Bytes,
request: HttpRequest,
app_state: web::Data<AppContext>,
) -> impl Responder {
let index_name = query
.get("index_name")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: index_name"))?;
let data = crate::commons::bytes_to_string(data.to_vec())?;
let result = app_state
.es()
.save2(index_name, &data)
.await
.map_err(|e| Error::throw("保存索引失败", Some(e)))?;
request.json(200, R::ok(result))
}
pub async fn es_update(
query: web::Query<HashMap<String, String>>,
params: actix_web::web::Json<serde_json::Value>,
request: HttpRequest,
context: web::Data<AppContext>,
) -> impl Responder {
let id = query
.get("id")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: id"))?;
let result = context
.es()
.update("first_index", id, ¶ms.0)
.await
.map_err(|e| Error::throw("更新索引失败", Some(e)))?;
request.json(200, R::ok(result))
}
pub async fn es_query_single(
query: web::Query<HashMap<String, String>>,
request: HttpRequest,
app_state: web::Data<AppContext>,
) -> impl Responder {
let id = query
.get("id")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: id"))?;
let result = app_state
.es()
.query_single::<serde_json::Value>("first_index", id)
.await
.map_err(|e| Error::throw("查询失败", Some(e)))?;
request.json(200, R::ok(result))
}
pub async fn es_select(
query: web::Query<HashMap<String, String>>,
data: actix_web::web::Bytes,
request: HttpRequest,
app_state: web::Data<AppContext>,
) -> impl Responder {
let index_name = query
.get("index_name")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: index_name"))?;
let query_dsl = crate::commons::bytes_to_string(data.to_vec())?;
let result = app_state
.es()
.select::<serde_json::Map<String, serde_json::Value>>(index_name, &query_dsl)
.await?;
request.json(200, R::ok(result))
}
pub async fn es_select_after(
query: web::Query<HashMap<String, String>>,
data: actix_web::web::Bytes,
request: HttpRequest,
app_state: web::Data<AppContext>,
) -> impl Responder {
let index_name = query
.get("index_name")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: index_name"))?;
let query_dsl = crate::commons::bytes_to_string(data.to_vec())?;
let (result, _) = app_state
.es()
.select_after::<serde_json::Map<String, serde_json::Value>>(index_name, &query_dsl)
.await?;
request.json(200, R::ok(result))
}
pub async fn es_delete(
query: web::Query<HashMap<String, String>>,
request: HttpRequest,
app_state: web::Data<AppContext>,
) -> impl Responder {
let id = query
.get("id")
.ok_or_else(|| Error::invalid_request("Missing query string parameter: id"))?;
let result = app_state
.es()
.delete("first_index", id)
.await
.map_err(|e| Error::throw("删除索引失败", Some(e)))?;
request.json(200, R::ok(result))
}