63187ee905
Export CurrentDialect(), return setup errors when debug logger is not registered, and guard DestName logging when the module is uninitialized. Co-authored-by: Cursor <cursoragent@cursor.com>
39 lines
1002 B
Go
39 lines
1002 B
Go
package dbxshared
|
|
|
|
import "fmt"
|
|
|
|
type Logger interface {
|
|
InitLogger()
|
|
}
|
|
|
|
type dialectString interface {
|
|
String() string
|
|
}
|
|
|
|
var loggerRegistry = make(map[string]Logger)
|
|
|
|
// RegisterLogger allows dialect-specific loggers to be registered.
|
|
func RegisterLogger(dialect dialectString, logger Logger) {
|
|
dialectStr := dialect.String()
|
|
if _, exists := loggerRegistry[dialectStr]; exists {
|
|
panic("Logger for dialect already registered: " + dialectStr)
|
|
}
|
|
loggerRegistry[dialectStr] = logger
|
|
}
|
|
|
|
// InitLogger initializes the logger for a specific dialect.
|
|
func InitLogger(dialect dialectString) error {
|
|
dialectStr := dialect.String()
|
|
logger, exists := loggerRegistry[dialectStr]
|
|
if !exists {
|
|
return fmt.Errorf("no logger registered for dialect %q: blank-import dbxm (MySQL) or dbxp (Postgres)", dialectStr)
|
|
}
|
|
logger.InitLogger()
|
|
return nil
|
|
}
|
|
|
|
// ResetLoggerRegistry clears registered loggers. It is intended for tests only.
|
|
func ResetLoggerRegistry() {
|
|
loggerRegistry = make(map[string]Logger)
|
|
}
|