feat: enhance error handling for database connection failure
Deploy Application / deploy (push) Successful in 21s Details

This commit is contained in:
Habib Fatkhul Rohman 2025-12-08 13:41:50 +07:00
parent 805a976858
commit 2eccaa33b3
2 changed files with 12 additions and 5 deletions

View File

@ -1,6 +1,7 @@
package main
import (
"fmt"
"io"
"log"
"os"
@ -32,6 +33,7 @@ import (
"github.com/Caknoooo/go-gin-clean-starter/modules/uom"
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse"
"github.com/Caknoooo/go-gin-clean-starter/modules/zona"
"github.com/Caknoooo/go-gin-clean-starter/pkg/constants"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
swaggerFiles "github.com/swaggo/files"
@ -118,19 +120,24 @@ func main() {
// Inisialisasi RabbitMQ
config.InitRabbitMQ()
logger := config.SetupLoggerLogrus()
// Register dependencies (termasuk logger)
providers.RegisterDependencies(injector)
// Ambil logger dari injector
logger := do.MustInvokeNamed[*logrus.Logger](injector, constants.LOGGER)
// 🔹 Tangkap panic global di luar Gin (worker, cron, dsb.)
defer func() {
if r := recover(); r != nil {
// Convert panic value ke string untuk menghindari serialization error
panicMsg := fmt.Sprintf("%v", r)
logger.WithFields(logrus.Fields{
"panic": r,
"panic": panicMsg,
"stack": string(debug.Stack()),
}).Error("Uncaught panic at main")
}
}()
providers.RegisterDependencies(injector)
// set Swagger info (opsional)
docs.SwaggerInfo.Title = "WMS Wareify API"
docs.SwaggerInfo.Version = "1.0"

View File

@ -37,7 +37,7 @@ func SetUpDatabaseConnection() *gorm.DB {
Logger: SetupLogger(),
})
if err != nil {
panic(err)
panic(fmt.Sprintf("Failed to connect to database: %v", err))
}
// RunExtension(db)