33 lines
452 B
Go
Executable File
33 lines
452 B
Go
Executable File
package dao
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type Type int
|
|
|
|
const (
|
|
ErrTypeNotFound Type = iota
|
|
ErrTypeDuplicate
|
|
ErrTypeForeignKeyViolation
|
|
)
|
|
|
|
type Error struct {
|
|
Cause error
|
|
Type Type
|
|
}
|
|
|
|
func NewDAOError(t Type, cause error) error {
|
|
return &Error{
|
|
Type: t,
|
|
Cause: cause,
|
|
}
|
|
}
|
|
|
|
func (e *Error) Error() string {
|
|
if e.Cause != nil {
|
|
return fmt.Sprintf("Type %d: %s", e.Type, e.Cause.Error())
|
|
}
|
|
return fmt.Sprintf("Type %d: no cause given", e.Type)
|
|
}
|