Skip to content

Commit 3ca8f87

Browse files
body optional in update dashboard
1 parent 8c235e0 commit 3ca8f87

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/handlers/http/users/dashboards.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ pub async fn create_dashboard(
7070
pub async fn update_dashboard(
7171
req: HttpRequest,
7272
dashboard_id: Path<String>,
73-
Json(dashboard): Json<Dashboard>,
73+
dashboard: Option<Json<Dashboard>>,
7474
) -> Result<impl Responder, DashboardError> {
7575
let user_id = get_hash(&get_user_from_request(&req)?);
7676
let dashboard_id = validate_dashboard_id(dashboard_id.into_inner())?;
@@ -86,7 +86,10 @@ pub async fn update_dashboard(
8686

8787
// Validate: either query params OR body, not both
8888
let has_query_params = !query_map.is_empty();
89-
let has_body_update = dashboard.title != existing_dashboard.title || dashboard.tiles.is_some();
89+
let has_body_update = dashboard
90+
.as_ref()
91+
.map(|d| d.title != existing_dashboard.title || d.tiles.is_some())
92+
.unwrap_or(false);
9093

9194
if has_query_params && has_body_update {
9295
return Err(DashboardError::Metadata(
@@ -121,6 +124,9 @@ pub async fn update_dashboard(
121124
}
122125
existing_dashboard
123126
} else {
127+
let dashboard = dashboard
128+
.ok_or(DashboardError::Metadata("Request body is required"))?
129+
.into_inner();
124130
if let Some(tiles) = &dashboard.tiles {
125131
if tiles.iter().any(|tile| tile.tile_id.is_nil()) {
126132
return Err(DashboardError::Metadata("Tile ID must be provided"));

0 commit comments

Comments
 (0)