/
main.go
48 lines (39 loc) · 1.38 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
package main
import (
"context"
"github.com/amchicas/go-profile-srv/config"
"github.com/amchicas/go-profile-srv/internal/adder"
"github.com/amchicas/go-profile-srv/internal/domain"
"github.com/amchicas/go-profile-srv/internal/eraser"
"github.com/amchicas/go-profile-srv/internal/fetcher"
"github.com/amchicas/go-profile-srv/internal/grpc"
"github.com/amchicas/go-profile-srv/internal/modifier"
"github.com/amchicas/go-profile-srv/internal/storage/mongo"
"github.com/amchicas/go-profile-srv/pkg/log"
"golang.org/x/sync/errgroup"
)
func main() {
logger := log.New("Profile", "dev")
c, err := config.LoadConfig()
if err != nil {
logger.Error("Failed at config" + err.Error())
}
repo := newMongo(c.MongoHost, c.MongoPort, c.Database)
adderService := adder.NewService(repo, logger)
fetcherService := fetcher.NewService(repo, logger)
modifierService := modifier.NewService(repo, logger)
eraserService := eraser.NewService(repo, logger)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
g, ctx := errgroup.WithContext(ctx)
g.Go(func() error {
srv := grpc.NewServer(c.Port, adderService, fetcherService, modifierService, eraserService, logger)
return srv.Serve()
})
logger.Fatal(g.Wait().Error())
}
func newMongo(host, port, database string) domain.Repository {
db, cancel := mongo.NewConn(host, port, database)
defer cancel()
return mongo.NewMongo(db)
}