feat: use injector shutdown rather than manually call Close()
This commit is contained in:
parent
9f1ad95f4e
commit
696804452e
@ -105,6 +105,11 @@ func wrap(f func(i *do.Injector) error) func(*cli.Context) error {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
injector := prepareServices(c)
|
injector := prepareServices(c)
|
||||||
|
defer func() {
|
||||||
|
if err := injector.Shutdown(); err != nil {
|
||||||
|
slog.Printf("shutdown injector failed: %v", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
logger := do.MustInvoke[log.Service](injector)
|
logger := do.MustInvoke[log.Service](injector)
|
||||||
defer func() { _ = logger.GetRawLogger().Sync() }()
|
defer func() { _ = logger.GetRawLogger().Sync() }()
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
"git.0x7f.app/WOJ/woj-server/internal/misc/config"
|
"git.0x7f.app/WOJ/woj-server/internal/misc/config"
|
||||||
"git.0x7f.app/WOJ/woj-server/internal/misc/log"
|
"git.0x7f.app/WOJ/woj-server/internal/misc/log"
|
||||||
"git.0x7f.app/WOJ/woj-server/internal/model"
|
"git.0x7f.app/WOJ/woj-server/internal/model"
|
||||||
"git.0x7f.app/WOJ/woj-server/internal/repo/db"
|
|
||||||
"git.0x7f.app/WOJ/woj-server/internal/web/router"
|
"git.0x7f.app/WOJ/woj-server/internal/web/router"
|
||||||
"git.0x7f.app/WOJ/woj-server/pkg/utils"
|
"git.0x7f.app/WOJ/woj-server/pkg/utils"
|
||||||
"git.0x7f.app/WOJ/woj-server/pkg/zapasynq"
|
"git.0x7f.app/WOJ/woj-server/pkg/zapasynq"
|
||||||
@ -24,15 +23,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func RunServerMigrate(i *do.Injector) error {
|
func RunServerMigrate(i *do.Injector) error {
|
||||||
slog := do.MustInvoke[log.Service](i).GetLogger("app.server")
|
|
||||||
|
|
||||||
// Migrate and shutdown database
|
return nil
|
||||||
err := do.MustInvoke[db.Service](i).Close()
|
|
||||||
if err != nil {
|
|
||||||
slog.Warn("Database Close Failed", zap.Error(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunServer(i *do.Injector) error {
|
func RunServer(i *do.Injector) error {
|
||||||
@ -98,11 +90,5 @@ func RunServer(i *do.Injector) error {
|
|||||||
// Graceful Shutdown Queue
|
// Graceful Shutdown Queue
|
||||||
queueSrv.Shutdown()
|
queueSrv.Shutdown()
|
||||||
|
|
||||||
// Graceful Shutdown Database
|
|
||||||
err = do.MustInvoke[db.Service](i).Close()
|
|
||||||
if err != nil {
|
|
||||||
slog.Warn("Database Close Failed", zap.Error(err))
|
|
||||||
}
|
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ type Service interface {
|
|||||||
Get() *gorm.DB
|
Get() *gorm.DB
|
||||||
Close() error
|
Close() error
|
||||||
HealthCheck() error
|
HealthCheck() error
|
||||||
|
Shutdown() error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewService(i *do.Injector) (Service, error) {
|
func NewService(i *do.Injector) (Service, error) {
|
||||||
@ -60,6 +61,10 @@ func (s *service) HealthCheck() error {
|
|||||||
return s.err
|
return s.err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *service) Shutdown() error {
|
||||||
|
return s.Close()
|
||||||
|
}
|
||||||
|
|
||||||
func (s *service) setup(conf *model.Config) {
|
func (s *service) setup(conf *model.Config) {
|
||||||
s.log.Info("Connecting to database...")
|
s.log.Info("Connecting to database...")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user