Passed
Pull Request — main (#166)
by Yume
02:09
created

main.main   B

Complexity

Conditions 5

Size

Total Lines 39
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 23
nop 0
dl 0
loc 39
rs 8.8613
c 0
b 0
f 0
1
package main
2
3
import (
4
	"context"
5
	"log"
6
	"log/slog"
7
	"os"
8
	"os/signal"
9
	"time"
10
11
	v2 "github.com/memnix/memnix-rest/app/v2"
12
	"github.com/memnix/memnix-rest/cmd/v2/config"
13
	"github.com/memnix/memnix-rest/pkg/logger"
14
)
15
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