package infra

import (
	"fmt"
)

// StopApp para y elimina el contenedor de una app desplegada.
// Si removeImage es true, elimina también la imagen Docker asociada.
// containerName debe coincidir con el nombre usado en DeployApp (= imageName).
func StopApp(containerName string, removeImage bool) error {
	// 1. Detener el contenedor (timeout 10s)
	if err := DockerStopContainer(containerName, 10); err != nil {
		return fmt.Errorf("stop_app: detener contenedor %s: %w", containerName, err)
	}

	// 2. Eliminar el contenedor
	if err := DockerRemoveContainer(containerName, false); err != nil {
		return fmt.Errorf("stop_app: eliminar contenedor %s: %w", containerName, err)
	}

	// 3. Eliminar la imagen si se solicita
	if removeImage {
		imageName := containerName + ":latest"
		if err := DockerRemoveImage(imageName, false); err != nil {
			return fmt.Errorf("stop_app: eliminar imagen %s: %w", imageName, err)
		}
	}

	return nil
}
