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 sysinfo::System;
|
||||
use uuid::Uuid;
|
||||
use crate::orchestrator::{AppManager, LifecycleManager};
|
||||
use crate::models::{ServiceConfig, RestartPolicy, AppType};
|
||||
use super::dto::*;
|
||||
@@ -158,11 +159,9 @@ pub async fn update_app_handler(
|
||||
.cloned()
|
||||
.unwrap_or_else(|| "production".to_string());
|
||||
|
||||
// Primero intentar hacer soft delete de la app anterior
|
||||
let _ = config_manager.soft_delete_app(&app_name, Some("Actualizada - versión anterior".to_string()));
|
||||
|
||||
// Luego agregar la nueva configuración
|
||||
let monitored_app = crate::config::MonitoredApp {
|
||||
// Actualizar la app existente (sin crear duplicados)
|
||||
let updated_app = crate::config::MonitoredApp {
|
||||
id: String::new(), // Se preservará el ID original
|
||||
name: config.app_name.clone(),
|
||||
service_name: service_name.clone(),
|
||||
path: config.working_directory.clone(),
|
||||
@@ -172,7 +171,7 @@ pub async fn update_app_handler(
|
||||
mode,
|
||||
user: config.user.clone(),
|
||||
service_file_path,
|
||||
registered_at: chrono::Local::now().to_rfc3339(),
|
||||
registered_at: String::new(), // Se preservará la fecha original
|
||||
deleted: false,
|
||||
deleted_at: None,
|
||||
deleted_reason: None,
|
||||
@@ -181,7 +180,7 @@ pub async fn update_app_handler(
|
||||
created_at: None,
|
||||
};
|
||||
|
||||
match config_manager.add_app_full(monitored_app) {
|
||||
match config_manager.update_app(&app_name, updated_app) {
|
||||
Ok(_) => {
|
||||
logger.info("API", "✅ JSON actualizado");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user