package internal
import (
)
var (
ErrNoRows = Errorf("pg: no rows in result set")
ErrMultiRows = Errorf("pg: multiple rows in result set")
)
type Error struct {
s string
}
func ( string, ...interface{}) Error {
return Error{s: fmt.Sprintf(, ...)}
}
func ( Error) () string {
return .s
}
type PGError struct {
m map[byte]string
}
func ( map[byte]string) PGError {
return PGError{
m: ,
}
}
func ( PGError) ( byte) string {
return .m[]
}
func ( PGError) () bool {
switch .Field('C') {
case "23000", "23001", "23502", "23503", "23505", "23514", "23P01":
return true
default:
return false
}
}
func ( PGError) () string {
return fmt.Sprintf("%s #%s %s",
.Field('S'), .Field('C'), .Field('M'))
}
func ( int) error {
switch {
case == 0:
return ErrNoRows
case > 1:
return ErrMultiRows
default:
return nil
}
}