init
This commit is contained in:
31
app/app.go
31
app/app.go
@@ -4,16 +4,23 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"go_oxspeak_server/config"
|
||||
"go_oxspeak_server/database"
|
||||
"go_oxspeak_server/models"
|
||||
"go_oxspeak_server/network/http"
|
||||
"go_oxspeak_server/network/udp"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type App struct {
|
||||
cfg *config.Config
|
||||
|
||||
// DB
|
||||
db *gorm.DB
|
||||
|
||||
// Serveurs
|
||||
udpServer *udp.Server
|
||||
httpServer *http.Server
|
||||
@@ -54,7 +61,25 @@ func (app *App) Run() error {
|
||||
// Context pour gérer l'arrêt gracieux
|
||||
defer app.cancel()
|
||||
|
||||
// Lancer les app ici
|
||||
dbConfig := database.DBConfig{
|
||||
Driver: app.cfg.Database.Type,
|
||||
DSN: app.cfg.GetDSN(),
|
||||
}
|
||||
|
||||
// 1) Initialiser la DB
|
||||
if err := database.Initialize(dbConfig); err != nil {
|
||||
return fmt.Errorf("failed to initialize database: %w", err)
|
||||
}
|
||||
|
||||
// (optionnel) garder une référence locale si tu veux utiliser app.db ailleurs
|
||||
app.db = database.DB
|
||||
|
||||
// 2) Lancer les migrations en utilisant le registry des modèles
|
||||
if err := database.AutoMigrate(models.All()...); err != nil {
|
||||
return fmt.Errorf("failed to auto-migrate database: %w", err)
|
||||
}
|
||||
|
||||
// 3) Lancer les workers / serveurs
|
||||
go app.runWorkers()
|
||||
|
||||
fmt.Println("App started, press CTRL+C to stop...")
|
||||
@@ -69,6 +94,10 @@ func (app *App) Run() error {
|
||||
}
|
||||
}
|
||||
|
||||
func (app *App) runDBMigrations() {
|
||||
database.AutoMigrate()
|
||||
}
|
||||
|
||||
func (app *App) runWorkers() {
|
||||
// lancer le serveur udp
|
||||
go func() {
|
||||
|
||||
Reference in New Issue
Block a user