Files
trbot/utils/flaterr/multiple.go
2025-07-21 20:06:29 +08:00

41 lines
770 B
Go

package flaterr
import (
"errors"
"fmt"
)
type MultErr struct {
Errors []error
}
// add error to MultErr
func (e *MultErr) Add(errs ...error) *MultErr {
for _, err := range errs {
if err != nil {
e.Errors = append(e.Errors, err)
}
}
return e
}
// add formatted error by use fmt.Errorf()
func (e *MultErr) Addf(format string, a ...any) *MultErr {
e.Errors = append(e.Errors, fmt.Errorf(format, a...))
return e
}
// add template error by use fmt.Errorf()
func (e *MultErr) Addt(msg Msg, content string, err error) *MultErr {
e.Errors = append(e.Errors, fmt.Errorf(msg.Fmt(), content, err))
return e
}
// a string error by use errors.Join()
func (e *MultErr) Flat() error {
if len(e.Errors) == 0 {
return nil
}
return errors.Join(e.Errors...)
}