-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
51 lines (42 loc) · 1.3 KB
/
server.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
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"gokost.com/m/delivery/api"
"gokost.com/m/manager"
)
type AppServer interface {
Run()
}
type serverConfig struct {
gin *gin.Engine
Name string
Port string
InfraManager manager.InfraManager
RepoManager manager.RepoManager
UseCaseManager manager.UseCaseManager
}
func (s *serverConfig) initHeader() {
s.routeGroupApi()
}
func (s *serverConfig) routeGroupApi() {
apiGroupCustomer := s.gin.Group("/customer")
api.NewCustomerApi(apiGroupCustomer, s.UseCaseManager.ListCustomerUseCase())
apiGroupBoardingRoom := s.gin.Group("boarding_room")
api.NewBoardingApi(apiGroupBoardingRoom, s.UseCaseManager.AvailableRoomUseCase())
apiGroupTransaction := s.gin.Group("transaction")
api.NewTransactionApi(apiGroupTransaction, s.UseCaseManager.InsertTransactionUseCase(), s.UseCaseManager.UpdateCustomerUseCase(), s.UseCaseManager.CustomerTransactionUseCase())
}
func (s *serverConfig) Run() {
s.initHeader()
s.gin.Run(fmt.Sprintf("%s:%s", s.Name, s.Port))
}
func Server() AppServer {
ginStart := gin.Default()
infra := manager.NewInfraManager()
repo := manager.NewRepoManager(infra.PostgreConn())
usecase := manager.NewUseCaseManager(repo)
return &serverConfig{
ginStart, "localhost", "8000", infra, repo, usecase,
}
}