Files
vppn/hub/errs/db.go
2026-06-14 09:04:41 +02:00

38 lines
613 B
Go

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
}