package postgres 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) }