package packs

import (
	"errors"

	"github.com/go-sql-driver/mysql"
)

func managedLifecycleTransactionErrorNumber(err error) (uint16, bool) {
	var mysqlErr *mysql.MySQLError
	if !errors.As(err, &mysqlErr) {
		return 0, false
	}
	return mysqlErr.Number, true
}

func managedLifecycleDeterministicTransactionError(err error) bool {
	number, ok := managedLifecycleTransactionErrorNumber(err)
	return ok && (number == 1062 || number == 8147)
}

func managedLifecycleTransientLockError(err error) bool {
	number, ok := managedLifecycleTransactionErrorNumber(err)
	return ok && (number == 1205 || number == 1213)
}
