Documentation
¶
Index ¶
Examples ¶
Constants ¶
const ( CodeNumericValueOutOfRange = "22003" CodeInvalidTextRepresentation = "22P02" CodeNotNullViolation = "23502" CodeForeignKeyViolation = "23503" CodeUniqueViolation = "23505" CodeCheckViolation = "23514" CodeLockNotAvailable = "55P03" )
See http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html for a full listing of the error codes present here.
Variables ¶
This section is empty.
Functions ¶
func GetError ¶
GetError parses a given database error and returns a human-readable version of that error. If the error is unknown, it's returned as is, however, all errors of type `pq.Error` are re-thrown as an Error, so it's impossible to get a `pq.Error` back from this function.
func RegisterConstraint ¶
func RegisterConstraint(c *Constraint)
RegisterConstraint tells dberror about your custom constraint and its error handling. RegisterConstraint panics if you attempt to register two constraints with the same name.
Example ¶
package main import ( dberror "github.com/Shyp/go-dberror" "github.com/lib/pq" ) func main() { constraint := &dberror.Constraint{ Name: "accounts_balance_check", GetError: func(e *pq.Error) *dberror.Error { return &dberror.Error{ Message: "Cannot write a negative balance", Severity: e.Severity, Table: e.Table, Detail: e.Detail, Code: string(e.Code), } }, } dberror.RegisterConstraint(constraint) }
Output:
Types ¶
type Constraint ¶
Constraint is a custom database check constraint you've defined, like "CHECK balance > 0". Postgres doesn't define a very useful message for constraint failures (new row for relation "accounts" violates check constraint), so you can define your own. The Name should be the name of the constraint in the database. Define GetError to provide your own custom error handler for this constraint failure, with a custom message.
type Error ¶
type Error struct { Message string Code string Constraint string Severity string Routine string Table string Detail string Column string }
Error is a human-readable database error. Message should always be a non-empty, readable string, and is returned when you call err.Error(). The other fields may or may not be empty.