feat: create a server function for creating a task
This commit is contained in:
parent
4a68c34442
commit
d9c79f0a08
@ -1,2 +1,3 @@
|
|||||||
mod database_connection;
|
mod database_connection;
|
||||||
pub(crate) mod projects;
|
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)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user