/
main.go
92 lines (75 loc) · 2.31 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package main
import (
"context"
"os"
"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/log"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/pbufio/pbuf-registry/internal/background"
"github.com/pbufio/pbuf-registry/internal/config"
"github.com/pbufio/pbuf-registry/internal/data"
"github.com/pbufio/pbuf-registry/internal/server"
)
// go build -ldflags "-X main.Version=x.y.z"
var (
// Name is the name of the compiled software.
Name string
// Version is the version of the compiled software.
Version string
id, _ = os.Hostname()
)
type Launcher struct {
config *config.Config
mainApp *kratos.App
debugApp *kratos.App
compactionDaemon background.Daemon
protoParsingDaemon background.Daemon
}
func main() {
config.NewLoader().MustLoad()
logger := log.DefaultLogger
logHelper := log.NewHelper(logger)
pool, err := pgxpool.New(context.Background(), config.Cfg.Data.Database.DSN)
if err != nil {
logHelper.Errorf("failed to connect to database: %v", err)
return
}
defer pool.Close()
registryRepository := data.NewRegistryRepository(pool, logger)
metadataRepository := data.NewMetadataRepository(pool, logger)
registryServer := server.NewRegistryServer(registryRepository, metadataRepository, logger)
metadataServer := server.NewMetadataServer(registryRepository, metadataRepository, logger)
app := kratos.New(
kratos.ID(id),
kratos.Name(Name),
kratos.Version(Version),
kratos.Metadata(map[string]string{}),
kratos.Logger(logger),
kratos.Server(
server.NewGRPCServer(&config.Cfg.Server, registryServer, metadataServer, logger),
server.NewHTTPServer(&config.Cfg.Server, registryServer, metadataServer, logger),
server.NewDebugServer(&config.Cfg.Server, logger),
),
)
debugApp := kratos.New(
kratos.ID(id),
kratos.Name(Name),
kratos.Version(Version),
kratos.Metadata(map[string]string{}),
kratos.Logger(logger),
kratos.Server(
server.NewDebugServer(&config.Cfg.Server, logger),
),
)
launcher := &Launcher{
config: config.Cfg,
mainApp: app,
debugApp: debugApp,
compactionDaemon: background.NewCompactionDaemon(registryRepository, logger),
protoParsingDaemon: background.NewProtoParsingDaemon(metadataRepository, logger),
}
err = CreateRootCommand(launcher).Execute()
if err != nil {
logHelper.Errorf("failed to run application: %v", err)
}
}