2022-10-03 05:19:33 +00:00
|
|
|
package domain
|
|
|
|
|
2022-10-23 06:20:48 +00:00
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
"fmt"
|
|
|
|
)
|
2022-10-10 05:16:40 +00:00
|
|
|
|
|
|
|
var (
|
|
|
|
ErrNothingToUpdate = errors.New("nothing to update")
|
2022-10-23 06:20:48 +00:00
|
|
|
ErrRequired = errors.New("cannot be blank")
|
2022-10-10 05:16:40 +00:00
|
|
|
)
|
|
|
|
|
2022-10-03 05:19:33 +00:00
|
|
|
type ErrorCode uint8
|
|
|
|
|
|
|
|
const (
|
|
|
|
ErrorCodeUnknown ErrorCode = iota
|
|
|
|
ErrorCodeEntityNotFound
|
|
|
|
ErrorCodeValidationError
|
2022-10-23 06:20:48 +00:00
|
|
|
ErrorCodeAlreadyExists
|
2022-10-03 05:19:33 +00:00
|
|
|
)
|
|
|
|
|
2022-12-31 09:59:40 +00:00
|
|
|
type Error interface {
|
2022-10-03 05:19:33 +00:00
|
|
|
error
|
|
|
|
UserError() string
|
|
|
|
Code() ErrorCode
|
|
|
|
}
|
|
|
|
|
2022-10-23 06:20:48 +00:00
|
|
|
type ValidationError struct {
|
2022-10-03 05:19:33 +00:00
|
|
|
Field string
|
2022-10-23 06:20:48 +00:00
|
|
|
Err error
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e ValidationError) Error() string {
|
|
|
|
return fmt.Sprintf("%s: %s", e.Field, e.Err)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e ValidationError) UserError() string {
|
|
|
|
return e.Error()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e ValidationError) Code() ErrorCode {
|
|
|
|
return ErrorCodeValidationError
|
|
|
|
}
|
|
|
|
|
|
|
|
func (e ValidationError) Unwrap() error {
|
|
|
|
return e.Err
|
|
|
|
}
|