fix: auto-create config directory when saving admin config

- save_admin_config_handler now creates parent directory if it doesn't exist
- Prevents 500 error when config/ directory is missing
- Enables first-time config save without manual directory creation
This commit is contained in:
2026-10-27 03:07:12 +08:00
parent 1f885406dd
commit 3d630afc4e

View File

@@ -1154,6 +1154,16 @@ async fn get_admin_config_handler() -> Response {
async fn save_admin_config_handler(axum::extract::Json(payload): axum::extract::Json<serde_json::Value>) -> Response { async fn save_admin_config_handler(axum::extract::Json(payload): axum::extract::Json<serde_json::Value>) -> Response {
let config_path = get_admin_config_path(); let config_path = get_admin_config_path();
// Create parent directory if it doesn't exist
if let Some(parent) = config_path.parent() {
if !parent.exists() {
if let Err(e) = std::fs::create_dir_all(parent) {
return (StatusCode::INTERNAL_SERVER_ERROR, format!("Create dir failed: {}", e)).into_response();
}
}
}
match serde_json::to_string_pretty(&payload) { match serde_json::to_string_pretty(&payload) {
Ok(formatted) => { Ok(formatted) => {
match std::fs::write(&config_path, formatted) { match std::fs::write(&config_path, formatted) {