Files
dokku-ui/internal/server/api/command.go
2025-10-16 16:34:46 +08:00

36 lines
872 B
Go

package api
import (
"errors"
"net/http"
"github.com/labstack/echo/v4"
"gitlab.com/texm/shokku/internal/env"
"gitlab.com/texm/shokku/internal/server/commands"
"gitlab.com/texm/shokku/internal/server/dto"
)
func GetCommandExecutionStatus(e *env.Env, c echo.Context) error {
var req dto.GetCommandExecutionStatusRequest
if err := dto.BindRequest(c, &req); err != nil {
return err.ToHTTP()
}
status, err := commands.GetExecutionStatus(req.ExecutionID)
if err != nil {
if errors.Is(err, commands.ErrNotPolled) {
return c.JSON(http.StatusOK, dto.CommandExecutionStatusResponse{
Started: false,
})
}
return echo.ErrNotFound
}
return c.JSON(http.StatusOK, dto.CommandExecutionStatusResponse{
CombinedOutput: status.CombinedOutput,
Started: true,
Finished: status.Finished,
Success: status.StreamError == nil,
})
}