package database import ( "fmt" "log" "gorm.io/driver/mysql" "gorm.io/driver/postgres" "gorm.io/driver/sqlite" "gorm.io/gorm" "gorm.io/gorm/logger" ) var DB *gorm.DB type DBConfig struct { Driver string // "sqlite", "postgres", "mysql" DSN string // Data Source Name } // Initialize initialise la connexion à la base de données func Initialize(config DBConfig) error { var err error var dialector gorm.Dialector // Sélection du driver approprié switch config.Driver { case "sqlite": dialector = sqlite.Open(config.DSN) case "postgres": dialector = postgres.Open(config.DSN) case "mysql": dialector = mysql.Open(config.DSN) default: return fmt.Errorf("driver non supporté: %s", config.Driver) } // Configuration de GORM gormConfig := &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), } // Connexion à la base de données DB, err = gorm.Open(dialector, gormConfig) if err != nil { return fmt.Errorf("erreur lors de la connexion à la base de données: %w", err) } log.Printf("Connexion à la base de données (%s) établie avec succès", config.Driver) return nil } // AutoMigrate effectue les migrations automatiques pour les modèles func AutoMigrate(models ...interface{}) error { return DB.AutoMigrate(models...) } // Close ferme la connexion à la base de données func Close() error { sqlDB, err := DB.DB() if err != nil { return err } return sqlDB.Close() }