package coredb

import "strings"

type databaseReporter interface {
	Database() string
}

// IsTiDB reports whether the runtime query/tx/db adapter targets TiDB.
func IsTiDB(runtime any) bool {
	if reporter, ok := runtime.(databaseReporter); ok {
		return strings.EqualFold(strings.TrimSpace(reporter.Database()), "tidb")
	}
	switch runtime.(type) {
	case *tidbAdminDB, *sqlTxAdapter, *sqlxDB, *sqlxTx:
		return true
	default:
		return false
	}
}
