package errs import ( "database/sql" "errors" "log" sqlite3 "github.com/mattn/go-sqlite3" ) func DB(err error) error { if err == nil { return nil } var e *Error if errors.As(err, &e) { return err } if errors.Is(err, sql.ErrNoRows) { return ErrNotFound } var se sqlite3.Error if errors.As(err, &se) { switch se.ExtendedCode { case sqlite3.ErrConstraintUnique, sqlite3.ErrConstraintPrimaryKey: return ErrAlreadyExists case sqlite3.ErrConstraintForeignKey, sqlite3.ErrConstraintCheck: return ErrConstraint } } log.Printf("Unexpected error: %v", err) return ErrUnexpected }