mirror of
https://github.com/aykhans/dodo.git
synced 2025-04-16 01:43:13 +00:00
118 lines
2.2 KiB
Go
118 lines
2.2 KiB
Go
package customerrors
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
var (
|
|
ErrInvalidJSON = errors.New("invalid JSON file")
|
|
ErrInvalidFile = errors.New("invalid file")
|
|
ErrInterrupt = errors.New("interrupted")
|
|
ErrNoInternet = errors.New("no internet connection")
|
|
ErrTimeout = errors.New("timeout")
|
|
)
|
|
|
|
func As(err error, target any) bool {
|
|
return errors.As(err, target)
|
|
}
|
|
|
|
func Is(err, target error) bool {
|
|
return errors.Is(err, target)
|
|
}
|
|
|
|
type Error interface {
|
|
Error() string
|
|
Unwrap() error
|
|
}
|
|
|
|
type TypeError struct {
|
|
Expected string
|
|
Received string
|
|
Field string
|
|
err error
|
|
}
|
|
|
|
func NewTypeError(expected, received, field string, err error) *TypeError {
|
|
return &TypeError{
|
|
Expected: expected,
|
|
Received: received,
|
|
Field: field,
|
|
err: err,
|
|
}
|
|
}
|
|
|
|
func (e *TypeError) Error() string {
|
|
return "Expected " + e.Expected + " but received " + e.Received + " in field " + e.Field
|
|
}
|
|
|
|
func (e *TypeError) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
type InvalidFileError struct {
|
|
FileName string
|
|
err error
|
|
}
|
|
|
|
func NewInvalidFileError(fileName string, err error) *InvalidFileError {
|
|
return &InvalidFileError{
|
|
FileName: fileName,
|
|
err: err,
|
|
}
|
|
}
|
|
|
|
func (e *InvalidFileError) Error() string {
|
|
return "Invalid file: " + e.FileName
|
|
}
|
|
|
|
func (e *InvalidFileError) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
type FileNotFoundError struct {
|
|
FileName string
|
|
err error
|
|
}
|
|
|
|
func NewFileNotFoundError(fileName string, err error) *FileNotFoundError {
|
|
return &FileNotFoundError{
|
|
FileName: fileName,
|
|
err: err,
|
|
}
|
|
}
|
|
|
|
func (e *FileNotFoundError) Error() string {
|
|
return "File not found: " + e.FileName
|
|
}
|
|
|
|
func (e *FileNotFoundError) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
type ValidationErrors struct {
|
|
MapErrors map[string]string
|
|
errors validator.ValidationErrors
|
|
}
|
|
|
|
func NewValidationErrors(errsMap map[string]string, errs validator.ValidationErrors) *ValidationErrors {
|
|
return &ValidationErrors{
|
|
MapErrors: errsMap,
|
|
errors: errs,
|
|
}
|
|
}
|
|
|
|
func (errs *ValidationErrors) Error() string {
|
|
var errorsStr string
|
|
for k, v := range errs.MapErrors {
|
|
errorsStr += fmt.Sprintf("[%s]: %s\n", k, v)
|
|
}
|
|
return errorsStr
|
|
}
|
|
|
|
func (errs *ValidationErrors) Unwrap() error {
|
|
return errs.errors
|
|
}
|