58 lines
1.4 KiB
Cheetah
58 lines
1.4 KiB
Cheetah
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"strings"
|
|
"syscall"
|
|
|
|
omni "git.yuntuo.hk/k2safe/go-omni"
|
|
"git.yuntuo.hk/k2safe/go-omni/config"
|
|
"git.yuntuo.hk/k2safe/go-omni/logx"
|
|
"{{.Module}}/internal/handler"
|
|
"{{.Module}}/internal/service"
|
|
"{{.Module}}/internal/servicecontext"
|
|
)
|
|
|
|
func main() {
|
|
if err := run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func run() error {
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
settings, err := config.LoadFromEnv("")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if strings.TrimSpace(settings.Log.Service) == "" {
|
|
settings.Log.Service = "{{.Module}}"
|
|
}
|
|
logger, err := logx.New(settings.Log)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer logger.Close()
|
|
// Access logs and business logs share the same configured sink.
|
|
logx.SetDefault(logger)
|
|
|
|
services, err := servicecontext.New(ctx, logger)
|
|
if err != nil { return err }
|
|
defer services.Close()
|
|
userService := service.NewUsers(services)
|
|
userHandler := handler.NewUsers(userService)
|
|
|
|
application := omni.New(omni.WithConfig(settings))
|
|
application.OnShutdown(logger.Close)
|
|
application.OnShutdown(services.Close)
|
|
application.GET("/health/live", services.Health.LivenessHandler())
|
|
application.GET("/health/ready", services.Health.ReadinessHandler())
|
|
userHandler.RegisterRoutes(application)
|
|
return application.RunContext(ctx, settings.Address)
|
|
}
|