fix(store): return ErrRecordNotFound when updating non-existent template
RowsAffected == 0 now returns gorm.ErrRecordNotFound so the handler can respond with 404 instead of silently returning 200. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"gcy_hpc_server/internal/model"
|
"gcy_hpc_server/internal/model"
|
||||||
@@ -9,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TemplateHandler struct {
|
type TemplateHandler struct {
|
||||||
@@ -111,8 +113,13 @@ func (h *TemplateHandler) UpdateTemplate(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := h.store.Update(c.Request.Context(), id, &req); err != nil {
|
if err := h.store.Update(c.Request.Context(), id, &req); err != nil {
|
||||||
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
|
h.logger.Warn("template not found for update", zap.Int64("id", id))
|
||||||
|
server.NotFound(c, "template not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
h.logger.Error("failed to update template", zap.Int64("id", id), zap.Error(err))
|
h.logger.Error("failed to update template", zap.Int64("id", id), zap.Error(err))
|
||||||
server.InternalError(c, err.Error())
|
server.InternalError(c, "failed to update template")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,13 @@ func (s *TemplateStore) Update(ctx context.Context, id int64, req *model.UpdateT
|
|||||||
}
|
}
|
||||||
|
|
||||||
result := s.db.WithContext(ctx).Model(&model.JobTemplate{}).Where("id = ?", id).Updates(updates)
|
result := s.db.WithContext(ctx).Model(&model.JobTemplate{}).Where("id = ?", id).Updates(updates)
|
||||||
return result.Error
|
if result.Error != nil {
|
||||||
|
return result.Error
|
||||||
|
}
|
||||||
|
if result.RowsAffected == 0 {
|
||||||
|
return gorm.ErrRecordNotFound
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete removes a job template by ID. Idempotent — returns nil even if the row doesn't exist.
|
// Delete removes a job template by ID. Idempotent — returns nil even if the row doesn't exist.
|
||||||
|
|||||||
Reference in New Issue
Block a user