@@ -7,9 +7,10 @@ use serde::{Deserialize, Serialize};
77
88use crate :: database:: category;
99use crate :: database:: content_folder:: PathBreadcrumb ;
10- use crate :: extractors:: category_request:: CategoryRequest ;
10+ use crate :: extractors:: category_request:: { CategoriesRequest , CategoryRequest } ;
1111use crate :: filesystem:: FileSystemEntry ;
1212use crate :: routes:: content_folder:: ContentFolderForm ;
13+ use crate :: routes:: index:: IndexTemplate ;
1314use crate :: state:: AppStateContext ;
1415use crate :: state:: flash_message:: {
1516 FallibleTemplate , FlashRedirect , FlashTemplate , OperationStatus , StatusCookie ,
@@ -55,21 +56,27 @@ pub async fn delete(
5556
5657pub async fn create (
5758 context : AppStateContext ,
59+ categories : CategoriesRequest ,
5860 jar : CookieJar ,
5961 Form ( form) : Form < CategoryForm > ,
60- ) -> FlashRedirect {
61- let status = match context. db . category ( ) . create ( & form) . await {
62- Ok ( created) => StatusCookie :: success (
63- jar,
64- format ! (
65- "The category {} has been successfully created (ID {})" ,
66- created. name, created. id
67- ) ,
68- ) ,
69- Err ( error) => StatusCookie :: error ( jar, error. to_string ( ) ) ,
70- } ;
71-
72- status. redirect ( "/" )
62+ ) -> Result < FlashRedirect , IndexTemplate > {
63+ match context. db . category ( ) . create ( & form) . await {
64+ Ok ( created) => {
65+ let status = StatusCookie :: success (
66+ jar,
67+ format ! (
68+ "The category {} has been successfully created (ID {})" ,
69+ created. name, created. id
70+ ) ,
71+ ) ;
72+ let uri = format ! ( "/folders/{}" , created. name) ;
73+ Ok ( status. redirect ( & uri) )
74+ }
75+ Err ( error) => {
76+ let status = OperationStatus :: error ( error) ;
77+ Err ( status. with_template ( IndexTemplate :: new ( context, categories) ) )
78+ }
79+ }
7380}
7481
7582#[ derive( Template , WebTemplate ) ]
0 commit comments