package utils import ( "fmt" "strings" ) // ErrorWrapper struct wrapper for errors. type ErrorWrapper struct { Errors error } // NewErrorWrapper returns a new NewErrorWrapper. func NewErrorWrapper() *ErrorWrapper { return &ErrorWrapper{ Errors: nil, } } // AddError appends a new error and error message. func (e *ErrorWrapper) AddError(err error, message string) *ErrorWrapper { if e.Errors != nil { e.Errors = fmt.Errorf("%w; %s: %s", e.Errors, message, err) } else { e.Errors = fmt.Errorf("%s: %s", message, err) } return e } // IsNotNil returns if the error is nil or not. func (e ErrorWrapper) IsNotNil() bool { return e.Errors != nil } // GetErrors returns all appended errors. func (e ErrorWrapper) GetErrors() error { return e.Errors } // Len returns how many errors have been appended. func (e ErrorWrapper) Len() int { if e.Errors == nil { return 0 } errors := e.Errors.Error() return len(strings.Split(errors, ";")) }