feat: create a server function for creating a task
This commit is contained in:
		| @@ -1,2 +1,3 @@ | ||||
| mod database_connection; | ||||
| pub(crate) mod projects; | ||||
| pub(crate) mod tasks; | ||||
|   | ||||
							
								
								
									
										30
									
								
								src/server/tasks.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/server/tasks.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| use crate::errors::error::Error; | ||||
| use crate::errors::error_vec::ErrorVec; | ||||
| use crate::models::task::{NewTask, Task}; | ||||
| use crate::server::database_connection::establish_database_connection; | ||||
| use diesel::{RunQueryDsl, SelectableHelper}; | ||||
| use dioxus::prelude::*; | ||||
| use validator::Validate; | ||||
| use crate::errors::task_create_error::TaskCreateError; | ||||
|  | ||||
| #[server] | ||||
| pub(crate) async fn create_task(new_task: NewTask) | ||||
|                                 -> Result<Task, ServerFnError<ErrorVec<TaskCreateError>>> { | ||||
|     use crate::schema::tasks; | ||||
|  | ||||
|     new_task.validate() | ||||
|         .map_err::<ErrorVec<TaskCreateError>, _>(|errors| errors.into())?; | ||||
|  | ||||
|     let mut connection = establish_database_connection() | ||||
|         .map_err::<ErrorVec<TaskCreateError>, _>( | ||||
|             |_| vec![TaskCreateError::Error(Error::ServerInternal)].into() | ||||
|         )?; | ||||
|  | ||||
|     let new_task = diesel::insert_into(tasks::table) | ||||
|         .values(&new_task) | ||||
|         .returning(Task::as_returning()) | ||||
|         .get_result(&mut connection) | ||||
|         .unwrap(); | ||||
|  | ||||
|     Ok(new_task) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Matouš Volf
					Matouš Volf