//go:build kvdb_sqlite && !(windows && (arm || 386)) && !(linux && (ppc64 || mips || mipsle || mips64)) package sqlbase import ( "errors" "fmt" "modernc.org/sqlite" sqlite3 "modernc.org/sqlite/lib" ) // parseSqliteError attempts to parse a sqlite error as a database agnostic // SQL error. func parseSqliteError(err error) error { var sqliteErr *sqlite.Error if !errors.As(err, &sqliteErr) { return nil } switch sqliteErr.Code() { // Handle unique constraint violation error. case sqlite3.SQLITE_CONSTRAINT_UNIQUE: return &ErrSQLUniqueConstraintViolation{ DBError: sqliteErr, } // Database is currently busy, so we'll need to try again. case sqlite3.SQLITE_BUSY: return &ErrSerializationError{ DBError: sqliteErr, } default: return fmt.Errorf("unknown sqlite error: %w", sqliteErr) } }