feat(global-search): dashboard globalsearch apis (#3831)

Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
ivor-juspay
2024-03-12 13:21:09 +05:30
committed by GitHub
parent 45ed56f165
commit ac8ddd4020
16 changed files with 1133 additions and 349 deletions

View File

@ -0,0 +1,73 @@
use serde_json::Value;
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
pub struct SearchFilters {
pub payment_method: Option<Vec<String>>,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetGlobalSearchRequest {
pub query: String,
#[serde(default)]
pub filters: Option<SearchFilters>,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetSearchRequest {
pub offset: i64,
pub count: i64,
pub query: String,
#[serde(default)]
pub filters: Option<SearchFilters>,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetSearchRequestWithIndex {
pub index: SearchIndex,
pub search_req: GetSearchRequest,
}
#[derive(Debug, strum::EnumIter, Clone, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
pub enum SearchIndex {
PaymentAttempts,
PaymentIntents,
Refunds,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct GetSearchResponse {
pub count: u64,
pub index: SearchIndex,
pub hits: Vec<Value>,
}
#[derive(Debug, serde::Deserialize)]
pub struct OpenMsearchOutput<T> {
pub responses: Vec<OpensearchOutput<T>>,
}
#[derive(Debug, serde::Deserialize)]
pub struct OpensearchOutput<T> {
pub hits: OpensearchResults<T>,
}
#[derive(Debug, serde::Deserialize)]
pub struct OpensearchResults<T> {
pub total: OpensearchResultsTotal,
pub hits: Vec<OpensearchHits<T>>,
}
#[derive(Debug, serde::Deserialize)]
pub struct OpensearchResultsTotal {
pub value: u64,
}
#[derive(Debug, serde::Deserialize)]
pub struct OpensearchHits<T> {
pub _source: T,
}