-
Notifications
You must be signed in to change notification settings - Fork 0
/
task.go
50 lines (40 loc) · 1.01 KB
/
task.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
package taskFactory
import (
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
taskController "github.com/Pietroski/adv-tech-techical-test/internal/controllers/task"
"github.com/Pietroski/adv-tech-techical-test/internal/services/datasource/postgreSQL/task"
)
type (
assembler struct {
store task.Store
Router *gin.Engine
handlers *taskController.Server
}
)
func NewTaskFactory(store task.Store) *assembler {
a := &assembler{
store: store,
handlers: taskController.NewServer(store),
}
a.handler()
return a
}
func (a *assembler) handler() {
gin.ForceConsoleColor()
router := gin.New()
// CORS middleware - default
router.Use(cors.Default())
v1 := router.Group("/v1")
{
v1.POST("/tasks", a.handlers.CreateTask)
v1.PUT("/tasks", a.handlers.UpdateTask)
v1.GET("/task", a.handlers.GetTask)
v1.GET("/tasks", a.handlers.ListTasks)
v1.DELETE("/tasks", a.handlers.DeleteTask)
}
a.Router = router
}
func (a *assembler) Start(address string) error {
return a.Router.Run(address)
}