package error_wrapper

type ErrorWrapper interface {
	NewInvalidInputError(format string, a ...any) error
	NewInternalErr(format string, a ...any) error
	NewNotFoundErr(format string, a ...any) error
	NewNotAuthenticatedErr(format string, a ...any) error
	NewForbiddenErr(format string, a ...any) error
	WrapGormError(err error, format string, args ...any) error
}

type HandlerWrapperEnum string

const (
	ErrCodeWrapperType HandlerWrapperEnum = "ErrCodeWrapperType"
	BizErrWrapperType  HandlerWrapperEnum = "BizErrWrapperType"
)

func GetErrorWrapper(input HandlerWrapperEnum) ErrorWrapper {
	switch input {
	case ErrCodeWrapperType:
		return getErrCodeWrapper()
	case BizErrWrapperType:
		return getBizErrWrapper()
	default:
		return nil
	}
}
