47 lines
948 B
Go
47 lines
948 B
Go
package domain
|
|
|
|
type ErrorCode string
|
|
|
|
const (
|
|
// File errors
|
|
ErrFileNotFound ErrorCode = "FILE_NOT_FOUND"
|
|
ErrMIMENotSupported ErrorCode = "MIME_NOT_SUPPORTEDF"
|
|
|
|
// Tag errors
|
|
ErrTagNotFound ErrorCode = "TAG_NOT_FOUND"
|
|
|
|
// General errors
|
|
ErrValidation ErrorCode = "VALIDATION_ERROR"
|
|
ErrInternal ErrorCode = "INTERNAL_SERVER_ERROR"
|
|
)
|
|
|
|
type DomainError struct {
|
|
Err error `json:"-"`
|
|
Code ErrorCode `json:"code"`
|
|
Message string `json:"message"`
|
|
Details []any `json:"-"`
|
|
}
|
|
|
|
func (e *DomainError) Error() string {
|
|
if e.Err != nil {
|
|
return e.Message + ": " + e.Err.Error()
|
|
}
|
|
return e.Message
|
|
}
|
|
|
|
func NewDomainError(err error, code ErrorCode, details ...any) *DomainError {
|
|
return &DomainError{
|
|
Err: err,
|
|
Code: code,
|
|
Details: details,
|
|
}
|
|
}
|
|
|
|
func NewUnexpectedError(err error) *DomainError {
|
|
return &DomainError{
|
|
Err: err,
|
|
Code: ErrInternal,
|
|
Message: "An unexpected error occured",
|
|
}
|
|
}
|