From 42661b606764529d994e9432f6870e4f7ce3b3a2 Mon Sep 17 00:00:00 2001 From: poyrazK Date: Thu, 7 May 2026 19:43:51 +0300 Subject: [PATCH] fix: wrap container service errors with meaningful messages Return proper errors.Error type instead of raw repo errors to ensure httputil.Error() returns meaningful messages instead of generic "An unexpected error occurred". Fixes #455 --- internal/core/services/container.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/internal/core/services/container.go b/internal/core/services/container.go index de48dafe3..ba72bee9c 100644 --- a/internal/core/services/container.go +++ b/internal/core/services/container.go @@ -10,6 +10,7 @@ import ( appcontext "github.com/poyrazk/thecloud/internal/core/context" "github.com/poyrazk/thecloud/internal/core/domain" "github.com/poyrazk/thecloud/internal/core/ports" + "github.com/poyrazk/thecloud/internal/errors" ) // ContainerService manages deployments and their containers. @@ -55,7 +56,7 @@ func (s *ContainerService) CreateDeployment(ctx context.Context, name, image str } if err := s.repo.CreateDeployment(ctx, dep); err != nil { - return nil, err + return nil, errors.Wrap(errors.Internal, "failed to create deployment", err) } if err := s.eventSvc.RecordEvent(ctx, "DEPLOYMENT_CREATED", dep.ID.String(), "DEPLOYMENT", nil); err != nil { @@ -91,7 +92,12 @@ func (s *ContainerService) GetDeployment(ctx context.Context, id uuid.UUID) (*do return nil, err } - return s.repo.GetDeploymentByID(ctx, id, userID) + dep, err := s.repo.GetDeploymentByID(ctx, id, userID) + if err != nil { + return nil, errors.Wrap(errors.Internal, "failed to get deployment", err) + } + + return dep, nil } func (s *ContainerService) ScaleDeployment(ctx context.Context, id uuid.UUID, replicas int) error { @@ -104,13 +110,13 @@ func (s *ContainerService) ScaleDeployment(ctx context.Context, id uuid.UUID, re dep, err := s.repo.GetDeploymentByID(ctx, id, userID) if err != nil { - return err + return errors.Wrap(errors.Internal, "failed to get deployment", err) } dep.Replicas = replicas dep.Status = domain.DeploymentStatusScaling if err := s.repo.UpdateDeployment(ctx, dep); err != nil { - return err + return errors.Wrap(errors.Internal, "failed to update deployment", err) } if err := s.auditSvc.Log(ctx, userID, "container.deployment_scale", "deployment", id.String(), map[string]interface{}{ @@ -132,12 +138,12 @@ func (s *ContainerService) DeleteDeployment(ctx context.Context, id uuid.UUID) e dep, err := s.repo.GetDeploymentByID(ctx, id, userID) if err != nil { - return err + return errors.Wrap(errors.Internal, "failed to get deployment", err) } dep.Status = domain.DeploymentStatusDeleting if err := s.repo.UpdateDeployment(ctx, dep); err != nil { - return err + return errors.Wrap(errors.Internal, "failed to update deployment", err) } if err := s.auditSvc.Log(ctx, userID, "container.deployment_delete", "deployment", id.String(), map[string]interface{}{}); err != nil {