Rewrite the stop-words endpoint; fix #417

This commit is contained in:
qdequele 2020-01-02 16:30:34 +01:00
parent f0590d3301
commit 91c6539baf
No known key found for this signature in database
GPG key ID: B3F0A000EBF11745
6 changed files with 135 additions and 184 deletions

View file

@ -80,16 +80,12 @@ pub fn load_routes(app: &mut tide::App<Data>) {
.get(synonym::get)
.post(synonym::update);
router.at("/stop-words").nest(|router| {
router
.at("/")
.get(stop_words::list)
.patch(stop_words::add)
.post(stop_words::delete);
});
router
.at("/settings")
router.at("/settings").nest(|router| {
router.at("/stop-words")
.get(stop_words::get)
.post(stop_words::update)
.delete(stop_words::delete);
})
.get(setting::get)
.post(setting::update);
});

View file

@ -8,7 +8,7 @@ use crate::models::token::ACL::*;
use crate::routes::document::IndexUpdateResponse;
use crate::Data;
pub async fn list(ctx: Context<Data>) -> SResult<Response> {
pub async fn get(ctx: Context<Data>) -> SResult<Response> {
ctx.is_allowed(SettingsRead)?;
let index = ctx.index()?;
@ -29,7 +29,7 @@ pub async fn list(ctx: Context<Data>) -> SResult<Response> {
Ok(tide::response::json(stop_words))
}
pub async fn add(mut ctx: Context<Data>) -> SResult<Response> {
pub async fn update(mut ctx: Context<Data>) -> SResult<Response> {
ctx.is_allowed(SettingsRead)?;
let index = ctx.index()?;
@ -38,12 +38,12 @@ pub async fn add(mut ctx: Context<Data>) -> SResult<Response> {
let db = &ctx.state().db;
let mut writer = db.update_write_txn().map_err(ResponseError::internal)?;
let mut stop_words_addition = index.stop_words_addition();
let mut stop_words_update = index.stop_words_update();
for stop_word in data {
stop_words_addition.add_stop_word(stop_word);
stop_words_update.add_stop_word(stop_word);
}
let update_id = stop_words_addition
let update_id = stop_words_update
.finalize(&mut writer)
.map_err(ResponseError::internal)?;
@ -55,19 +55,14 @@ pub async fn add(mut ctx: Context<Data>) -> SResult<Response> {
.into_response())
}
pub async fn delete(mut ctx: Context<Data>) -> SResult<Response> {
pub async fn delete(ctx: Context<Data>) -> SResult<Response> {
ctx.is_allowed(SettingsRead)?;
let index = ctx.index()?;
let data: Vec<String> = ctx.body_json().await.map_err(ResponseError::bad_request)?;
let db = &ctx.state().db;
let mut writer = db.update_write_txn().map_err(ResponseError::internal)?;
let mut stop_words_deletion = index.stop_words_deletion();
for stop_word in data {
stop_words_deletion.delete_stop_word(stop_word);
}
let stop_words_deletion = index.stop_words_update();
let update_id = stop_words_deletion
.finalize(&mut writer)