diff --git a/bruno/project/Delete Project.bru b/bruno/project/Delete Project.bru index 930d813..26df51f 100644 --- a/bruno/project/Delete Project.bru +++ b/bruno/project/Delete Project.bru @@ -1,7 +1,7 @@ meta { name: Delete Project type: http - seq: 4 + seq: 5 } delete { diff --git a/bruno/project/Update Project.bru b/bruno/project/Update Project.bru new file mode 100644 index 0000000..b710625 --- /dev/null +++ b/bruno/project/Update Project.bru @@ -0,0 +1,22 @@ +meta { + name: Update Project + type: http + seq: 4 +} + +put { + url: {{api_base}}/project + body: json + auth: inherit +} + +body:json { + { + "id": "{{project_to_change}}", + "name": "ThisProjectHasBeenChanged!" + } +} + +vars:pre-request { + project_to_change: 77d0394b-6d61-44a9-97a8-35caa101dc0e +} diff --git a/crates/backend/src/controller/class.rs b/crates/backend/src/controller/class.rs index 826ac35..999afac 100644 --- a/crates/backend/src/controller/class.rs +++ b/crates/backend/src/controller/class.rs @@ -4,6 +4,7 @@ pub fn setup(cfg: &mut actix_web::web::ServiceConfig) { cfg.service(get_classes) .service(get_class) .service(create_class) + .service(update_class) .service(delete_class); } diff --git a/crates/backend/src/controller/group.rs b/crates/backend/src/controller/group.rs index 7d00ea2..74f46d7 100644 --- a/crates/backend/src/controller/group.rs +++ b/crates/backend/src/controller/group.rs @@ -4,6 +4,7 @@ pub fn setup(cfg: &mut actix_web::web::ServiceConfig) { cfg.service(get_groups) .service(get_groups_for_project) .service(create_group) + .service(update_group) .service(delete_group); } diff --git a/crates/backend/src/controller/project.rs b/crates/backend/src/controller/project.rs index d82aa16..35e017b 100644 --- a/crates/backend/src/controller/project.rs +++ b/crates/backend/src/controller/project.rs @@ -1,25 +1,23 @@ -use actix_web::{Responder, Result, delete, get, post, put, web}; +use actix_web::{Result, delete, get, post, put, web}; use sea_orm::prelude::Uuid; use serde::Deserialize; +use crate::dto::project::UpdateProject; + use crate::db::Database; use crate::error::ApiError; +// Maybe move this here into the corresponding DTO file #[derive(Deserialize)] struct CreateProject { name: String, } -#[derive(Deserialize)] -struct UpdateProject { - id: Uuid, - name: String, -} - pub fn setup(cfg: &mut actix_web::web::ServiceConfig) { cfg.service(get_project) .service(get_projects) .service(create_project) + .service(update_project) .service(delete_project); } diff --git a/crates/backend/src/controller/template.rs b/crates/backend/src/controller/template.rs index 6b6dc19..3d927f5 100644 --- a/crates/backend/src/controller/template.rs +++ b/crates/backend/src/controller/template.rs @@ -4,6 +4,7 @@ pub fn setup(cfg: &mut actix_web::web::ServiceConfig) { cfg.service(get_templates) .service(get_template) .service(create_template) + .service(update_template) .service(delete_template); } diff --git a/crates/backend/src/db/project.rs b/crates/backend/src/db/project.rs index ab145a8..aa355f4 100644 --- a/crates/backend/src/db/project.rs +++ b/crates/backend/src/db/project.rs @@ -2,8 +2,10 @@ use super::Database; use crate::error::ApiError; use log::debug; +use crate::dto::project::UpdateProject; + use entity::project; -use sea_orm::ActiveValue::{NotSet, Set}; +use sea_orm::ActiveValue::{NotSet, Set, Unchanged}; use sea_orm::prelude::Uuid; use sea_orm::{ActiveModelTrait, DeleteResult, EntityTrait}; @@ -44,8 +46,8 @@ impl Database { debug!("Updating project with id: {}", &project.id); let active_model = project::ActiveModel { - id: NotSet, - name: Set(project.name.to_owned()), + id: Unchanged(project.id), + name: Set(project.name), }; let project = active_model.update(&self.conn).await?; diff --git a/crates/backend/src/dto.rs b/crates/backend/src/dto.rs new file mode 100644 index 0000000..36df406 --- /dev/null +++ b/crates/backend/src/dto.rs @@ -0,0 +1 @@ +pub mod project; diff --git a/crates/backend/src/dto/project.rs b/crates/backend/src/dto/project.rs new file mode 100644 index 0000000..e9fedc9 --- /dev/null +++ b/crates/backend/src/dto/project.rs @@ -0,0 +1,8 @@ +use sea_orm::prelude::Uuid; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug)] +pub struct UpdateProject { + pub id: Uuid, + pub name: String, +} diff --git a/crates/backend/src/main.rs b/crates/backend/src/main.rs index 2601185..cd67abb 100644 --- a/crates/backend/src/main.rs +++ b/crates/backend/src/main.rs @@ -7,6 +7,7 @@ use log::debug; mod controller; mod db; +mod dto; mod error; #[actix_web::main]