package pkg import ( "errors" "fmt" "net/http" ) var ( NoPermission = errors.New("no permission") ErrUnauthenticated = errors.New("unauthenticated") ErrUnhandled = errors.New("unhandled") ErrNotFound = errors.New("not found") ErrBadInput = errors.New("bad input") ErrInternal = errors.New("internal") ) func Wrap(basic error, err error, op string, msg string) error { return errors.Join(basic, err, fmt.Errorf("during %s: %s", op, msg)) } func ToREST(err error) int { switch { case errors.Is(err, ErrUnauthenticated): return http.StatusUnauthorized case errors.Is(err, ErrBadInput): return http.StatusBadRequest case errors.Is(err, ErrNotFound): return http.StatusNotFound case errors.Is(err, ErrInternal): return http.StatusInternalServerError case errors.Is(err, NoPermission): return http.StatusForbidden } return http.StatusInternalServerError }