feat: use injector shutdown rather than manually call Close()

This commit is contained in:
Paul Pan 2024-01-06 19:23:12 +08:00
parent 9f1ad95f4e
commit 696804452e
Signed by: Paul
GPG Key ID: D639BDF5BA578AF4
3 changed files with 11 additions and 15 deletions

View File

@ -105,6 +105,11 @@ func wrap(f func(i *do.Injector) error) func(*cli.Context) error {
}()
injector := prepareServices(c)
defer func() {
if err := injector.Shutdown(); err != nil {
slog.Printf("shutdown injector failed: %v", err)
}
}()
logger := do.MustInvoke[log.Service](injector)
defer func() { _ = logger.GetRawLogger().Sync() }()

View File

@ -8,7 +8,6 @@ import (
"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/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/pkg/utils"
"git.0x7f.app/WOJ/woj-server/pkg/zapasynq"
@ -24,15 +23,8 @@ import (
)
func RunServerMigrate(i *do.Injector) error {
slog := do.MustInvoke[log.Service](i).GetLogger("app.server")
// Migrate and shutdown database
err := do.MustInvoke[db.Service](i).Close()
if err != nil {
slog.Warn("Database Close Failed", zap.Error(err))
}
return err
return nil
}
func RunServer(i *do.Injector) error {
@ -98,11 +90,5 @@ func RunServer(i *do.Injector) error {
// Graceful Shutdown Queue
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
}

View File

@ -24,6 +24,7 @@ type Service interface {
Get() *gorm.DB
Close() error
HealthCheck() error
Shutdown() error
}
func NewService(i *do.Injector) (Service, error) {
@ -60,6 +61,10 @@ func (s *service) HealthCheck() error {
return s.err
}
func (s *service) Shutdown() error {
return s.Close()
}
func (s *service) setup(conf *model.Config) {
s.log.Info("Connecting to database...")