-
Notifications
You must be signed in to change notification settings - Fork 0
/
configuration.go
55 lines (44 loc) · 1.91 KB
/
configuration.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
package infrastructure
import (
"github.com/gin-gonic/gin"
"github.com/thukabjj/go-triangle-classification/application/entrypoint"
"github.com/thukabjj/go-triangle-classification/application/entrypoint/authentication"
"github.com/thukabjj/go-triangle-classification/application/entrypoint/entity"
authenticationUserCase "github.com/thukabjj/go-triangle-classification/usecase/authentication"
triangleRepository "github.com/thukabjj/go-triangle-classification/application/database/dynamo/triangle"
"github.com/thukabjj/go-triangle-classification/application/entrypoint/triangle"
infrastructure "github.com/thukabjj/go-triangle-classification/infrastructure/dynamo"
"github.com/thukabjj/go-triangle-classification/infrastructure/dynamo/dao"
"github.com/thukabjj/go-triangle-classification/infrastructure/jwt"
"github.com/thukabjj/go-triangle-classification/usecase/triangle/classifier"
)
func Run() {
gin.ForceConsoleColor()
r := gin.Default()
r.Use(gin.Recovery(), gin.Logger())
dynamoDbConnector := infrastructure.NewConnectorDynamoDb()
entrypoint.Routes(r, buildHandlers(dynamoDbConnector))
r.Run()
}
func buildHandlers(dynamoDbConnector *infrastructure.ConnectorDynamoDb) *entity.Handlers {
triangle := InjectTriangleEntrypoint(dynamoDbConnector)
handlers := &entity.Handlers{
TriangleEntrypoint: triangle,
AuthenticationEntrypoint: &authentication.AuthenticationEntrypointImpl{
AuthenticationUseCase: &authenticationUserCase.AuthenticationUseCaseImpl{
JwtToken: &jwt.JwtTokenImpl{},
},
},
}
return handlers
}
func InjectTriangleEntrypoint(dynamoDbConnector *infrastructure.ConnectorDynamoDb) triangle.TriangleEntrypoint {
triangle := &triangle.TriangleEntrypointImpl{
TriangleTypeClassifierUseCase: &classifier.TriangleTypeClassifierUseCaseImpl{
TriangleRepository: &triangleRepository.TriangleRepositoryImpl{
TriangleDao: dao.NewTriangleDAOImpl(dynamoDbConnector),
},
},
}
return triangle
}