Files
a301_server/pkg/middleware/error_handler.go
tolelom b16eb6cc7a feat: 에러 처리 표준화 + BossRaid 낙관적 잠금
에러 표준화:
- pkg/apperror — AppError 타입, 7개 sentinel error
- pkg/middleware/error_handler — Fiber ErrorHandler 통합
- 핸들러에서 AppError 반환 시 구조화된 JSON 자동 응답

BossRaid Race Condition:
- 상태 전이 4곳 낙관적 잠금 (UPDATE WHERE status=?)
- TransitionRoomStatus/TransitionRoomStatusMulti 메서드 추가
- ErrStatusConflict sentinel error

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:48:28 +09:00

32 lines
688 B
Go

package middleware
import (
"errors"
"a301_server/pkg/apperror"
"github.com/gofiber/fiber/v2"
)
// ErrorHandler is a Fiber error handler that returns structured JSON for AppError.
func ErrorHandler(c *fiber.Ctx, err error) error {
var appErr *apperror.AppError
if errors.As(err, &appErr) {
return c.Status(appErr.Status).JSON(appErr)
}
// Default Fiber error handling
var fiberErr *fiber.Error
if errors.As(err, &fiberErr) {
return c.Status(fiberErr.Code).JSON(fiber.Map{
"error": "server_error",
"message": fiberErr.Message,
})
}
return c.Status(500).JSON(fiber.Map{
"error": "internal_error",
"message": "서버 오류가 발생했습니다",
})
}