init
This commit is contained in:
65
database/database.go
Normal file
65
database/database.go
Normal 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()
|
||||
}
|
||||
Reference in New Issue
Block a user