Version Inicial
This commit is contained in:
71
handleDockerAction.go
Normal file
71
handleDockerAction.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"fergalla.com/dockerbot/internal/apperrors"
|
||||
"github.com/go-telegram/bot"
|
||||
)
|
||||
|
||||
func (appCtx *App) handleDockerAction(ctx context.Context, b *bot.Bot, chatID int64, action string, params []string) {
|
||||
|
||||
if len(params) == 0 {
|
||||
appCtx.sendMessage(ctx, b, chatID,
|
||||
appCtx.T("e.container.missing_name", map[string]string{"example": action}),
|
||||
true,
|
||||
nil,
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
container := params[0]
|
||||
|
||||
err := appCtx.dockerInfo.ContainerAction(container, action)
|
||||
if err != nil {
|
||||
appCtx.logger.Error(
|
||||
"Failed to execute docker action",
|
||||
"module", "Docker",
|
||||
"action", action,
|
||||
"container", container,
|
||||
"error", err,
|
||||
)
|
||||
var msg string
|
||||
if errors.Is(err, apperrors.ErrContainerNotFound) {
|
||||
msg = appCtx.T("e.docker.connection")
|
||||
} else {
|
||||
msg = appCtx.T("e.container.action")
|
||||
}
|
||||
appCtx.sendMessage(ctx, b, chatID, msg, true, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// 🔄 invalidar cache
|
||||
appCtx.containerCache.Invalidate()
|
||||
|
||||
// 🎨 render vista actualizada
|
||||
text, keyboard, err := appCtx.renderContainerDetail(ctx, container, 0)
|
||||
if err != nil {
|
||||
appCtx.logger.Error(
|
||||
"Failed to render container detail after action",
|
||||
"module", "Bot",
|
||||
"container", container,
|
||||
"error", err,
|
||||
)
|
||||
var msg string
|
||||
if errors.Is(err, apperrors.ErrContainerNotFound) {
|
||||
msg = appCtx.T("e.container.not_found")
|
||||
} else {
|
||||
msg = appCtx.T("e.container.info")
|
||||
}
|
||||
appCtx.sendMessage(ctx, b, chatID, msg, true, nil)
|
||||
return
|
||||
}
|
||||
|
||||
// ✅ feedback + vista
|
||||
finalText := appCtx.T("a.container."+action, map[string]string{
|
||||
"name": container,
|
||||
}) + "\n\n" + text
|
||||
|
||||
appCtx.sendMessage(ctx, b, chatID, finalText, true, keyboard)
|
||||
}
|
||||
Reference in New Issue
Block a user