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) }