implement get index meta

This commit is contained in:
mpostma 2021-02-04 12:34:12 +01:00
parent 8d462afb79
commit f1c09a54be
No known key found for this signature in database
GPG Key ID: CBC8A7C1D7A28C3A
4 changed files with 26 additions and 12 deletions

View File

@ -118,6 +118,13 @@ impl Data {
self.index_controller.list_indexes()
}
pub fn index(&self, name: impl AsRef<str>) -> anyhow::Result<Option<IndexMetadata>> {
Ok(self
.list_indexes()?
.into_iter()
.find(|i| i.name == name.as_ref()))
}
#[inline]
pub fn http_payload_size_limit(&self) -> usize {
self.options.http_payload_size_limit.get_bytes() as usize

View File

@ -28,6 +28,13 @@ impl fmt::Display for ResponseError {
}
}
// TODO: remove this when implementing actual error handling
impl From<anyhow::Error> for ResponseError {
fn from(other: anyhow::Error) -> ResponseError {
ResponseError { inner: Box::new(Error::NotFound(other.to_string())) }
}
}
impl From<Error> for ResponseError {
fn from(error: Error) -> ResponseError {
ResponseError { inner: Box::new(error) }

View File

@ -83,15 +83,6 @@ async fn get_all_documents(
todo!()
}
//fn find_primary_key(document: &IndexMap<String, Value>) -> Option<String> {
//for key in document.keys() {
//if key.to_lowercase().contains("id") {
//return Some(key.to_string());
//}
//}
//None
//}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
struct UpdateDocumentsQuery {
@ -150,6 +141,7 @@ async fn add_documents_default(
_params: web::Query<UpdateDocumentsQuery>,
_body: web::Json<Vec<Document>>,
) -> Result<HttpResponse, ResponseError> {
error!("Unknown document type");
todo!()
}

View File

@ -37,10 +37,18 @@ async fn list_indexes(data: web::Data<Data>) -> Result<HttpResponse, ResponseErr
#[get("/indexes/{index_uid}", wrap = "Authentication::Private")]
async fn get_index(
_data: web::Data<Data>,
_path: web::Path<IndexParam>,
data: web::Data<Data>,
path: web::Path<IndexParam>,
) -> Result<HttpResponse, ResponseError> {
todo!()
match data.index(&path.index_uid)? {
Some(meta) => {
let json = serde_json::to_string(&meta).unwrap();
Ok(HttpResponse::Ok().body(json))
}
None => {
unimplemented!()
}
}
}
#[derive(Debug, Deserialize)]