use crate::search::ErrResponse;
use serde::Deserialize;
#[derive(Deserialize, Debug)]
pub struct Response<T> {
pub took: u64,
pub errors: bool,
#[serde(default = "Vec::new")]
pub items: Vec<Action<T>>,
}
#[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")]
pub enum Action<T> {
Create(Item<T>),
Index(Item<T>),
Update(Item<T>),
Delete(Item<T>),
}
#[derive(Deserialize, Debug)]
#[serde(untagged)]
pub enum Item<T> {
Ok(OkItem<T>),
Err {
error: ErrResponse,
status: u16,
},
}
#[derive(Deserialize, Debug)]
pub struct OkItem<T> {
status: u16,
#[serde(rename = "_id")]
pub id: String,
#[serde(rename = "_index")]
pub index: String,
pub get: Option<Get<T>>,
}
#[derive(Deserialize, Debug)]
pub struct Get<T> {
#[serde(rename = "_source")]
pub source: Option<T>,
}