Files
sponge/cmd/serverNameExample_httpExample/initial/close.go
2024-02-08 16:35:33 +08:00

45 lines
876 B
Go

package initial
import (
"context"
"time"
"github.com/zhufuyi/sponge/internal/config"
"github.com/zhufuyi/sponge/internal/model"
"github.com/zhufuyi/sponge/pkg/app"
"github.com/zhufuyi/sponge/pkg/tracer"
)
// Close releasing resources after service exit
func Close(servers []app.IServer) []app.Close {
var closes []app.Close
// close server
for _, s := range servers {
closes = append(closes, s.Stop)
}
// close database
closes = append(closes, func() error {
return model.CloseDB()
})
// close redis
if config.Get().App.CacheType == "redis" {
closes = append(closes, func() error {
return model.CloseRedis()
})
}
// close tracing
if config.Get().App.EnableTrace {
closes = append(closes, func() error {
ctx, _ := context.WithTimeout(context.Background(), 2*time.Second) //nolint
return tracer.Close(ctx)
})
}
return closes
}