Projeto bot pontos
This commit is contained in:
57
backend/internal/domain/errors.go
Normal file
57
backend/internal/domain/errors.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNotFound = errors.New("registro não encontrado")
|
||||
ErrConflict = errors.New("registro já existe")
|
||||
ErrCredentialsRequired = errors.New("credencial da PontoMais não configurada ou não validada")
|
||||
ErrUserNotActive = errors.New("usuário não está ativo")
|
||||
ErrInvalidState = errors.New("operação não permitida no estado atual")
|
||||
ErrUnauthenticated = errors.New("sessão inválida ou expirada")
|
||||
ErrForbidden = errors.New("permissão insuficiente")
|
||||
ErrInvalidLogin = errors.New("usuário ou senha inválidos")
|
||||
ErrAccountLocked = errors.New("conta bloqueada temporariamente por tentativas de login")
|
||||
ErrLastOwner = errors.New("é preciso manter pelo menos um owner ativo")
|
||||
ErrNotConfigured = errors.New("integração não configurada")
|
||||
)
|
||||
|
||||
type ValidationError struct {
|
||||
Field string `json:"field"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
// ValidationErrors agrupa erros de validação de campos (HTTP 422).
|
||||
type ValidationErrors []ValidationError
|
||||
|
||||
func (v ValidationErrors) Error() string {
|
||||
parts := make([]string, 0, len(v))
|
||||
for _, e := range v {
|
||||
parts = append(parts, e.Field+": "+e.Message)
|
||||
}
|
||||
return strings.Join(parts, "; ")
|
||||
}
|
||||
|
||||
func (v *ValidationErrors) Add(field, message string) {
|
||||
*v = append(*v, ValidationError{Field: field, Message: message})
|
||||
}
|
||||
|
||||
// OrNil devolve nil quando não há erros, para uso em `return errs.OrNil()`.
|
||||
func (v ValidationErrors) OrNil() error {
|
||||
if len(v) == 0 {
|
||||
return nil
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
// stateError é um ErrInvalidState com mensagem específica para o usuário.
|
||||
type stateError struct{ msg string }
|
||||
|
||||
func (e stateError) Error() string { return e.msg }
|
||||
func (e stateError) Is(target error) bool { return target == ErrInvalidState }
|
||||
|
||||
// InvalidState cria um erro que satisfaz errors.Is(err, ErrInvalidState).
|
||||
func InvalidState(msg string) error { return stateError{msg: msg} }
|
||||
Reference in New Issue
Block a user