From 89baa30467db79e98715dfe9277662390c1852d8 Mon Sep 17 00:00:00 2001 From: Manuel Gugger Date: Mon, 1 Aug 2022 15:01:18 +0200 Subject: [PATCH] refactor into create_or_edit --- actix_admin/src/routes/create_get.rs | 34 -------------- .../{edit_get.rs => create_or_edit_get.rs} | 22 +++++++-- ...{create_post.rs => create_or_edit_post.rs} | 34 ++++++++++---- actix_admin/src/routes/edit_post.rs | 43 ------------------ actix_admin/src/routes/mod.rs | 17 +++---- database.db-wal | Bin 263712 -> 276072 bytes 6 files changed, 51 insertions(+), 99 deletions(-) delete mode 100644 actix_admin/src/routes/create_get.rs rename actix_admin/src/routes/{edit_get.rs => create_or_edit_get.rs} (65%) rename actix_admin/src/routes/{create_post.rs => create_or_edit_post.rs} (60%) delete mode 100644 actix_admin/src/routes/edit_post.rs diff --git a/actix_admin/src/routes/create_get.rs b/actix_admin/src/routes/create_get.rs deleted file mode 100644 index 0879482..0000000 --- a/actix_admin/src/routes/create_get.rs +++ /dev/null @@ -1,34 +0,0 @@ -use actix_web::{error, web, Error, HttpRequest, HttpResponse}; -use tera::{Context}; - -use crate::prelude::*; - -use crate::TERA; - -pub async fn create_get( - _req: HttpRequest, - data: web::Data, - _body: web::Payload, - text: String, -) -> Result { - let db = &data.get_db(); - let entity_name = E::get_entity_name(); - let entity_names = &data.get_actix_admin().entity_names; - - let actix_admin = data.get_actix_admin(); - - let view_model = actix_admin.view_models.get(&entity_name).unwrap(); - let model = ActixAdminModel::from(text); - - let mut ctx = Context::new(); - ctx.insert("entity_names", &entity_names); - ctx.insert("view_model", &view_model); - ctx.insert("select_lists", &E::get_select_lists(db).await); - ctx.insert("list_link", &E::get_list_link(&entity_name)); - ctx.insert("model", &model); - - let body = TERA - .render("create_or_edit.html", &ctx) - .map_err(|err| error::ErrorInternalServerError(err))?; - Ok(HttpResponse::Ok().content_type("text/html").body(body)) -} \ No newline at end of file diff --git a/actix_admin/src/routes/edit_get.rs b/actix_admin/src/routes/create_or_edit_get.rs similarity index 65% rename from actix_admin/src/routes/edit_get.rs rename to actix_admin/src/routes/create_or_edit_get.rs index 057691d..bf2abfc 100644 --- a/actix_admin/src/routes/edit_get.rs +++ b/actix_admin/src/routes/create_or_edit_get.rs @@ -5,6 +5,18 @@ use crate::prelude::*; use crate::TERA; +pub async fn create_get( + _req: HttpRequest, + data: web::Data, + _body: web::Payload, + text: String, +) -> Result { + let db = &data.get_db(); + let model = ActixAdminModel::from(text); + + create_or_edit_get::(&data, db, model).await +} + pub async fn edit_get( _req: HttpRequest, data: web::Data, @@ -12,6 +24,12 @@ pub async fn edit_get( id: web::Path ) -> Result { let db = &data.get_db(); + let model = E::get_entity(db, id.into_inner()).await; + + create_or_edit_get::(&data, db, model).await +} + +async fn create_or_edit_get(data: &web::Data, db: &sea_orm::DatabaseConnection, model: ActixAdminModel) -> Result{ let entity_name = E::get_entity_name(); let entity_names = &data.get_actix_admin().entity_names; @@ -19,14 +37,12 @@ pub async fn edit_get( let view_model = actix_admin.view_models.get(&entity_name).unwrap(); - let model = E::get_entity(db, id.into_inner()).await; - let mut ctx = Context::new(); ctx.insert("entity_names", &entity_names); ctx.insert("view_model", &view_model); - ctx.insert("model", &model); ctx.insert("select_lists", &E::get_select_lists(db).await); ctx.insert("list_link", &E::get_list_link(&entity_name)); + ctx.insert("model", &model); let body = TERA .render("create_or_edit.html", &ctx) diff --git a/actix_admin/src/routes/create_post.rs b/actix_admin/src/routes/create_or_edit_post.rs similarity index 60% rename from actix_admin/src/routes/create_post.rs rename to actix_admin/src/routes/create_or_edit_post.rs index f5b34af..741aa45 100644 --- a/actix_admin/src/routes/create_post.rs +++ b/actix_admin/src/routes/create_or_edit_post.rs @@ -11,12 +11,30 @@ pub async fn create_post text: String, ) -> Result { let db = &data.get_db(); + let mut model = ActixAdminModel::from(text); + model = E::create_entity(db, model).await; + + create_or_edit_post::(&data, db, model).await +} + +pub async fn edit_post( + _req: HttpRequest, + data: web::Data, + text: String, + id: web::Path +) -> Result { + let db = &data.get_db(); + let mut model = ActixAdminModel::from(text); + model = E::edit_entity(db, id.into_inner(), model).await; + + create_or_edit_post::(&data, db, model).await +} + +async fn create_or_edit_post(data: &web::Data, db: &sea_orm::DatabaseConnection, model: ActixAdminModel) -> Result { let entity_name = E::get_entity_name(); let entity_names = &data.get_actix_admin().entity_names; let actix_admin = data.get_actix_admin(); let view_model = actix_admin.view_models.get(&entity_name).unwrap(); - let mut model = ActixAdminModel::from(text); - model = E::create_entity(db, model).await; if model.has_errors() { let mut ctx = Context::new(); @@ -33,10 +51,10 @@ pub async fn create_post } else { Ok(HttpResponse::SeeOther() - .append_header(( - header::LOCATION, - format!("/admin/{}/list", view_model.entity_name), - )) - .finish()) - } + .append_header(( + header::LOCATION, + format!("/admin/{}/list", view_model.entity_name), + )) + .finish()) + } } \ No newline at end of file diff --git a/actix_admin/src/routes/edit_post.rs b/actix_admin/src/routes/edit_post.rs deleted file mode 100644 index 759c90c..0000000 --- a/actix_admin/src/routes/edit_post.rs +++ /dev/null @@ -1,43 +0,0 @@ -use actix_web::http::header; -use actix_web::{web, error, Error, HttpRequest, HttpResponse}; -use tera::{Context}; -use crate::TERA; - -use crate::prelude::*; - -pub async fn edit_post( - _req: HttpRequest, - data: web::Data, - text: String, - id: web::Path -) -> Result { - let db = &data.get_db(); - let entity_name = E::get_entity_name(); - let actix_admin = data.get_actix_admin(); - let entity_names = &data.get_actix_admin().entity_names; - let view_model = actix_admin.view_models.get(&entity_name).unwrap(); - let mut model = ActixAdminModel::from(text); - model = E::edit_entity(db, id.into_inner(), model).await; - - if model.has_errors() { - let mut ctx = Context::new(); - ctx.insert("entity_names", &entity_names); - ctx.insert("view_model", &view_model); - ctx.insert("model", &model); - ctx.insert("select_lists", &E::get_select_lists(db).await); - ctx.insert("list_link", &E::get_list_link(&entity_name)); - - let body = TERA - .render("create_or_edit.html", &ctx) - .map_err(|err| error::ErrorInternalServerError(err))?; - Ok(HttpResponse::Ok().content_type("text/html").body(body)) - } - else { - Ok(HttpResponse::SeeOther() - .append_header(( - header::LOCATION, - format!("/admin/{}/list", view_model.entity_name), - )) - .finish()) - } -} \ No newline at end of file diff --git a/actix_admin/src/routes/mod.rs b/actix_admin/src/routes/mod.rs index 1ec8bc3..d4f9ac4 100644 --- a/actix_admin/src/routes/mod.rs +++ b/actix_admin/src/routes/mod.rs @@ -1,7 +1,8 @@ -mod create_get; -mod create_post; -pub use create_get::create_get; -pub use create_post::create_post; +mod create_or_edit_get; +pub use create_or_edit_get::{create_get, edit_get}; + +mod create_or_edit_post; +pub use create_or_edit_post::{ create_post, edit_post }; mod index; pub use index::index; @@ -10,10 +11,4 @@ mod list; pub use list::list; mod delete; -pub use delete::{ delete, delete_many }; - -mod edit_get; -mod edit_post; -pub use edit_get::edit_get; -pub use edit_post::edit_post; - +pub use delete::{ delete, delete_many }; \ No newline at end of file diff --git a/database.db-wal b/database.db-wal index 69d37f3b4e3b624f83b21b7fba95a96ddbe75fff..bd7b1195f58289b5fe8bdc6ee635887e5e5d8bcf 100644 GIT binary patch delta 195 zcmZ3`BkP6S-m(LvyAzUU;g>~ z%$g8h{wF|_=7LO`yPe0Bc_P1t8pI@3$Kn(qN-R!sElVw`Oi8Q^NlkPrN=?j8ODrw{ UvZp^~Wl@x3kb&3=Qi!S+0PH0|Q2+n{ delta 17 YcmaFyMqojYKtl^-3sVd878V6I07UHu5dZ)H