treasurer/internal/errors/errors.go
Pasha 87affc4241
Some checks failed
Lint / Lint (push) Failing after 55s
Deploy / CreateImage (push) Failing after 45s
Deploy / DeployService (push) Has been skipped
added todo
2025-06-12 14:48:41 +03:00

67 lines
1.4 KiB
Go

package errors
import (
"errors"
"fmt"
)
// todo rework errors package
type ErrorType error
var (
ErrInternalError ErrorType = errors.New("internal error")
ErrInvalidArgs ErrorType = errors.New("invalid arguments")
ErrMethodNotImplemented ErrorType = errors.New("method is not implemented")
ErrNotFound ErrorType = errors.New("record not found")
ErrNoAccess ErrorType = errors.New("no access")
ErrConflict ErrorType = errors.New("record already exist")
ErrInsufficientFunds ErrorType = errors.New("insufficient funds")
)
type Error interface {
Error() string
Type() ErrorType
Wrap(message string) Error
SetType(errorType ErrorType) Error
}
type customError struct {
errorType ErrorType
err error
}
func NewWithError(err error, errorType ErrorType) Error {
return &customError{
errorType: errorType,
err: err,
}
}
func NewWithMessage(message string, errorType ErrorType) Error {
return &customError{
errorType: errorType,
err: errors.New(message),
}
}
func (e *customError) Error() string {
return e.err.Error()
}
func (e *customError) Type() ErrorType {
return e.errorType
}
func (e *customError) Wrap(message string) Error {
e.err = fmt.Errorf("%s: %w", message, e.err)
return e
}
func (e *customError) SetType(errorType ErrorType) Error {
e.errorType = errorType
return e
}