This commit is contained in:
2025-11-02 01:25:30 +01:00
commit ed18be9fbd
17 changed files with 598 additions and 0 deletions

65
database/database.go Normal file
View File

@@ -0,0 +1,65 @@
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()
}