fix: Actualizar app sin crear duplicados usando update_app
Reemplaza el flujo soft_delete + add_app_full por un nuevo método update_app() que modifica in-place la app existente, preservando su id original y fecha de registro. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ use axum::{
|
|||||||
};
|
};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use sysinfo::System;
|
use sysinfo::System;
|
||||||
|
use uuid::Uuid;
|
||||||
use crate::orchestrator::{AppManager, LifecycleManager};
|
use crate::orchestrator::{AppManager, LifecycleManager};
|
||||||
use crate::models::{ServiceConfig, RestartPolicy, AppType};
|
use crate::models::{ServiceConfig, RestartPolicy, AppType};
|
||||||
use super::dto::*;
|
use super::dto::*;
|
||||||
@@ -158,11 +159,9 @@ pub async fn update_app_handler(
|
|||||||
.cloned()
|
.cloned()
|
||||||
.unwrap_or_else(|| "production".to_string());
|
.unwrap_or_else(|| "production".to_string());
|
||||||
|
|
||||||
// Primero intentar hacer soft delete de la app anterior
|
// Actualizar la app existente (sin crear duplicados)
|
||||||
let _ = config_manager.soft_delete_app(&app_name, Some("Actualizada - versión anterior".to_string()));
|
let updated_app = crate::config::MonitoredApp {
|
||||||
|
id: String::new(), // Se preservará el ID original
|
||||||
// Luego agregar la nueva configuración
|
|
||||||
let monitored_app = crate::config::MonitoredApp {
|
|
||||||
name: config.app_name.clone(),
|
name: config.app_name.clone(),
|
||||||
service_name: service_name.clone(),
|
service_name: service_name.clone(),
|
||||||
path: config.working_directory.clone(),
|
path: config.working_directory.clone(),
|
||||||
@@ -172,7 +171,7 @@ pub async fn update_app_handler(
|
|||||||
mode,
|
mode,
|
||||||
user: config.user.clone(),
|
user: config.user.clone(),
|
||||||
service_file_path,
|
service_file_path,
|
||||||
registered_at: chrono::Local::now().to_rfc3339(),
|
registered_at: String::new(), // Se preservará la fecha original
|
||||||
deleted: false,
|
deleted: false,
|
||||||
deleted_at: None,
|
deleted_at: None,
|
||||||
deleted_reason: None,
|
deleted_reason: None,
|
||||||
@@ -181,7 +180,7 @@ pub async fn update_app_handler(
|
|||||||
created_at: None,
|
created_at: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
match config_manager.add_app_full(monitored_app) {
|
match config_manager.update_app(&app_name, updated_app) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
logger.info("API", "✅ JSON actualizado");
|
logger.info("API", "✅ JSON actualizado");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user