simplify error handling

This commit is contained in:
qdequele
2020-01-16 16:58:57 +01:00
parent f83e874e35
commit b71bbcffaa
13 changed files with 158 additions and 280 deletions

View File

@ -15,27 +15,24 @@ pub async fn get(ctx: Request<Data>) -> SResult<Response> {
let index = ctx.index()?;
let db = &ctx.state().db;
let reader = db.main_read_txn().map_err(ResponseError::internal)?;
let reader = db.main_read_txn()?;
let synonyms_fst = index
.main
.synonyms_fst(&reader)
.map_err(ResponseError::internal)?;
.synonyms_fst(&reader)?;
let synonyms_fst = synonyms_fst.unwrap_or_default();
let synonyms_list = synonyms_fst.stream().into_strs().map_err(ResponseError::internal)?;
let synonyms_list = synonyms_fst.stream().into_strs()?;
let mut response = IndexMap::new();
let index_synonyms = &index.synonyms;
for synonym in synonyms_list {
let alternative_list = index_synonyms
.synonyms(&reader, synonym.as_bytes())
.map_err(ResponseError::internal)?;
let alternative_list = index_synonyms.synonyms(&reader, synonym.as_bytes())?;
if let Some(list) = alternative_list {
let list = list.stream().into_strs().map_err(ResponseError::internal)?;
let list = list.stream().into_strs()?;
response.insert(synonym, list);
}
}
@ -51,17 +48,16 @@ pub async fn update(mut ctx: Request<Data>) -> SResult<Response> {
let index = ctx.index()?;
let db = &ctx.state().db;
let mut writer = db.update_write_txn().map_err(ResponseError::internal)?;
let mut writer = db.update_write_txn()?;
let settings = SettingsUpdate {
synonyms: UpdateState::Update(data),
.. SettingsUpdate::default()
};
let update_id = index.settings_update(&mut writer, settings)
.map_err(ResponseError::internal)?;
let update_id = index.settings_update(&mut writer, settings)?;
writer.commit().map_err(ResponseError::internal)?;
writer.commit()?;
let response_body = IndexUpdateResponse { update_id };
Ok(tide::Response::new(202).body_json(&response_body).unwrap())
@ -74,17 +70,16 @@ pub async fn delete(ctx: Request<Data>) -> SResult<Response> {
let index = ctx.index()?;
let db = &ctx.state().db;
let mut writer = db.update_write_txn().map_err(ResponseError::internal)?;
let mut writer = db.update_write_txn()?;
let settings = SettingsUpdate {
synonyms: UpdateState::Clear,
.. SettingsUpdate::default()
};
let update_id = index.settings_update(&mut writer, settings)
.map_err(ResponseError::internal)?;
let update_id = index.settings_update(&mut writer, settings)?;
writer.commit().map_err(ResponseError::internal)?;
writer.commit()?;
let response_body = IndexUpdateResponse { update_id };
Ok(tide::Response::new(202).body_json(&response_body).unwrap())