Handle POST /databases/:name - alter database configuration.
(
Path(name): Path<String>,
Extension(state): Extension<Arc<RESTServer>>,
Json(request): Json<AlterDatabaseRequest>,
)
| 199 | |
| 200 | /// Handle POST /databases/:name - alter database configuration. |
| 201 | pub async fn alter_database( |
| 202 | Path(name): Path<String>, |
| 203 | Extension(state): Extension<Arc<RESTServer>>, |
| 204 | Json(request): Json<AlterDatabaseRequest>, |
| 205 | ) -> impl IntoResponse { |
| 206 | let mut s = state.inner.lock().unwrap(); |
| 207 | |
| 208 | if s.no_permission_databases.contains(&name) { |
| 209 | let err = ErrorResponse::new( |
| 210 | Some("database".to_string()), |
| 211 | Some(name.clone()), |
| 212 | Some("No Permission".to_string()), |
| 213 | Some(403), |
| 214 | ); |
| 215 | return (StatusCode::FORBIDDEN, Json(err)).into_response(); |
| 216 | } |
| 217 | |
| 218 | if let Some(response) = s.databases.get_mut(&name) { |
| 219 | // Apply removals |
| 220 | for key in &request.removals { |
| 221 | response.options.remove(key); |
| 222 | } |
| 223 | // Apply updates |
| 224 | response.options.extend(request.updates); |
| 225 | (StatusCode::OK, Json(serde_json::json!(""))).into_response() |
| 226 | } else { |
| 227 | let err = ErrorResponse::new( |
| 228 | Some("database".to_string()), |
| 229 | Some(name.clone()), |
| 230 | Some("Not Found".to_string()), |
| 231 | Some(404), |
| 232 | ); |
| 233 | (StatusCode::NOT_FOUND, Json(err)).into_response() |
| 234 | } |
| 235 | } |
| 236 | |
| 237 | /// Handle DELETE /databases/:name - drop a database. |
| 238 | pub async fn drop_database( |
no test coverage detected