-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.go
48 lines (38 loc) · 1.53 KB
/
config.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/joho/godotenv"
joonix "github.com/joonix/log"
"github.com/lawmatsuyama/transactions/infra/apimanager"
"github.com/lawmatsuyama/transactions/infra/messagebroker"
"github.com/lawmatsuyama/transactions/infra/repository"
"github.com/lawmatsuyama/transactions/usecases"
log "github.com/sirupsen/logrus"
)
// LoadEnv load all enviroment variables from file if it is not already loaded
func LoadEnv() {
err := godotenv.Load()
if err != nil {
log.WithError(err).Error("couldnt load .env")
}
}
// LoggerSetup setup log format
func LoggerSetup() {
log.SetFormatter(joonix.NewFormatter(joonix.PrettyPrintFormat, joonix.DefaultFormat))
log.SetLevel(log.DebugLevel)
log.SetReportCaller(false)
}
// StartDependencies it will start and inject dependencies into api
func StartDependencies(ctxWithCancel context.Context) {
brokeSetuper := messagebroker.NewSetuper()
messagebroker.Start(ctxWithCancel, brokeSetuper)
dbCli := repository.Start(context.Background())
transactionRepository := repository.NewTransactionDB(dbCli)
userRepository := repository.NewUserDB(dbCli)
sessionControlRepository := repository.NewSessionControlDB(dbCli)
publisher := messagebroker.NewMessagePublisher()
transactionUseCase := usecases.NewTransactionUseCase(transactionRepository, userRepository, publisher, sessionControlRepository)
transactionAPI := apimanager.NewTransactionAPI(transactionUseCase)
handler := apimanager.NewHandler(transactionAPI)
apimanager.StartAPI(ctxWithCancel, handler, "8080", "transactions")
}