Conditions | 5 |
Total Lines | 39 |
Code Lines | 23 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | package main |
||
16 | func main() { |
||
17 | configPath := config.GetConfigPath() |
||
18 | |||
19 | cfg, err := config.LoadConfig(configPath) |
||
20 | if err != nil { |
||
21 | log.Fatalf("❌ Error loading config: %s", err.Error()) |
||
22 | } |
||
23 | |||
24 | logger.NewLogger().SetLogLevel(slog.LevelInfo) |
||
25 | |||
26 | e := v2.CreateEchoInstance(cfg.Server) |
||
27 | |||
28 | setup(cfg) |
||
29 | |||
30 | slog.Info("starting server 🚀", slog.String("version", cfg.Server.AppVersion)) |
||
31 | |||
32 | ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) |
||
33 | defer stop() |
||
34 | |||
35 | go func() { |
||
36 | if err = e.Start(); err != nil { |
||
37 | slog.Error("error starting server", slog.Any("error", err)) |
||
38 | os.Exit(1) |
||
39 | } |
||
40 | }() |
||
41 | |||
42 | const shutdownTimeout = 10 * time.Second |
||
43 | |||
44 | <-ctx.Done() |
||
45 | _, cancel := context.WithTimeout(context.Background(), shutdownTimeout) |
||
46 | defer cancel() |
||
47 | |||
48 | slog.Info("shutting down server") |
||
49 | |||
50 | if err = shutdown(); err != nil { |
||
51 | slog.Error("error shutting down server", slog.Any("error", err)) |
||
52 | } |
||
53 | |||
54 | slog.Info("server stopped") |
||
55 | } |
||
56 |