From 2aee20711c4dbb05ead27ed80c2279c8919c92b7 Mon Sep 17 00:00:00 2001 From: Pierre Jarriges <pierre.jarriges@tutanota.com> Date: Tue, 4 Oct 2022 11:11:24 +0200 Subject: [PATCH] rebuild website after update --- src/service/website.rs | 54 ++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/service/website.rs b/src/service/website.rs index 139cf98..e5af919 100644 --- a/src/service/website.rs +++ b/src/service/website.rs @@ -26,12 +26,18 @@ pub async fn add_page( match website.add_page(add_page_data.parent_page_id, add_page_data.new_page.clone()) { Ok(()) => { + if let Err(msg) = website.build() { + return HttpResponse::InternalServerError() + .body(format!("Error rebuilding Website - {}", msg)); + } + if let Err(msg) = website.save(&app_state.read().expect("Couldn't read AppState").config) { return HttpResponse::InternalServerError() .body(format!("Error saving website to static file - {}", msg)); }; + HttpResponse::Created().finish() } Err(msg) => { @@ -64,13 +70,12 @@ pub async fn update_page( updated_page: Json<Page>, ) -> HttpResponse { let id = id.into_inner(); + let mut website = website + .write() + .expect("Couldn't acquire website write lock"); let page = { - match website - .write() - .expect("Couldn't acquire website write lock") - .update_page(id, updated_page.into_inner()) - { + match website.update_page(id, updated_page.into_inner()) { Ok(page) => page.clone(), Err(msg) => { return HttpResponse::BadRequest() @@ -79,11 +84,12 @@ pub async fn update_page( } }; - if let Err(msg) = website - .read() - .expect("Couldn't read WebSite") - .save(&app_state.read().expect("Couldn't read AppState").config) - { + if let Err(msg) = website.build() { + return HttpResponse::InternalServerError() + .body(format!("Error rebuilding Website - {}", msg)); + } + + if let Err(msg) = website.save(&app_state.read().expect("Couldn't read AppState").config) { return HttpResponse::InternalServerError() .body(format!("Error saving website to static file - {}", msg)); }; @@ -129,11 +135,12 @@ pub async fn update_template( website: Data<RwLock<WebSite>>, updated_template: Json<PageTemplate>, ) -> HttpResponse { + let mut website = website + .write() + .expect("Couldn't acquire website write lock"); + let updated = { - let mut ws = website - .write() - .expect("Couldn't acquire website write lock"); - match ws.update_template(updated_template.into_inner()) { + match website.update_template(updated_template.into_inner()) { Ok(template) => template.clone(), Err(msg) => { return HttpResponse::BadRequest().body(format!("Error updating template {}", msg)) @@ -141,19 +148,14 @@ pub async fn update_template( } }; - WebSite::update_page_rec_after_template_update( - &mut website - .write() - .expect("Couldn't acquire website write lock") - .root_page, - &updated, - ); + WebSite::update_page_rec_after_template_update(&mut website.root_page, &updated); - if let Err(msg) = website - .read() - .expect("Couldn't read WebSite") - .save(&app_state.read().expect("Couldn't read AppState").config) - { + if let Err(msg) = website.build() { + return HttpResponse::InternalServerError() + .body(format!("Error rebuilding Website - {}", msg)); + } + + if let Err(msg) = website.save(&app_state.read().expect("Couldn't read AppState").config) { return HttpResponse::InternalServerError() .body(format!("Error saving website to static file - {}", msg)); }; -- GitLab