@@ -18,7 +18,7 @@ use crate::{
1818 error:: HandlerError ,
1919 extractors:: { JobBoardId , SelectedEmployerIdRequired } ,
2020 } ,
21- templates:: dashboard:: employer:: jobs,
21+ templates:: dashboard:: employer:: jobs:: { self , Job } ,
2222} ;
2323
2424// Pages handlers.
@@ -88,13 +88,21 @@ pub(crate) async fn update_page(
8888#[ instrument( skip_all, err) ]
8989pub ( crate ) async fn add (
9090 State ( db) : State < DynDB > ,
91+ State ( form_de) : State < serde_qs:: Config > ,
9192 SelectedEmployerIdRequired ( employer_id) : SelectedEmployerIdRequired ,
92- Form ( mut job ) : Form < jobs :: Job > ,
93+ body : String ,
9394) -> Result < impl IntoResponse , HandlerError > {
95+ // Get job information from body
96+ let mut job: Job = match form_de. deserialize_str ( & body) . map_err ( anyhow:: Error :: new) {
97+ Ok ( profile) => profile,
98+ Err ( e) => return Ok ( ( StatusCode :: UNPROCESSABLE_ENTITY , e. to_string ( ) ) . into_response ( ) ) ,
99+ } ;
94100 job. normalize ( ) ;
101+
102+ // Add job to database
95103 db. add_job ( & employer_id, & job) . await ?;
96104
97- Ok ( StatusCode :: CREATED )
105+ Ok ( StatusCode :: CREATED . into_response ( ) )
98106}
99107
100108/// Handler that archives a job.
@@ -134,11 +142,19 @@ pub(crate) async fn publish(
134142#[ instrument( skip_all, err) ]
135143pub ( crate ) async fn update (
136144 State ( db) : State < DynDB > ,
145+ State ( form_de) : State < serde_qs:: Config > ,
137146 Path ( job_id) : Path < Uuid > ,
138- Form ( mut job ) : Form < jobs :: Job > ,
147+ body : String ,
139148) -> Result < impl IntoResponse , HandlerError > {
149+ // Get job information from body
150+ let mut job: Job = match form_de. deserialize_str ( & body) . map_err ( anyhow:: Error :: new) {
151+ Ok ( profile) => profile,
152+ Err ( e) => return Ok ( ( StatusCode :: UNPROCESSABLE_ENTITY , e. to_string ( ) ) . into_response ( ) ) ,
153+ } ;
140154 job. normalize ( ) ;
155+
156+ // Update job in database
141157 db. update_job ( & job_id, & job) . await ?;
142158
143- Ok ( StatusCode :: NO_CONTENT )
159+ Ok ( StatusCode :: NO_CONTENT . into_response ( ) )
144160}
0 commit comments