-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtask_usecase.go
94 lines (85 loc) · 2.45 KB
/
task_usecase.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package usecase
import (
"go-react-example-api/model"
"go-react-example-api/repository"
)
type ITaskUsecase interface {
GetAllTasks(userId uint) ([]model.TaskResponse, error)
GetTaskById(userId uint, taskId uint) (model.TaskResponse, error)
CreateTask(task model.Task) (model.TaskResponse, error)
UpdateTask(task model.Task, userId uint, taskId uint) (model.TaskResponse, error)
DeleteTask(userId uint, taskId uint) error
}
type taskUsecase struct {
tr repository.ITaskRepository
tv validator.ITaskValidator
}
func NewTaskUsecase(tr repository.ITaskRepository, tv validator.ITaskValidator) ITaskUsecase {
return &taskUsecase{tr, tv}
}
func (tu *taskUsecase) GetAllTasks(userId uint) ([]model.TaskResponse, error) {
tasks := []model.Task{}
if err := tu.tr.GetAllTasks(&tasks, userId); err != nil {
return nil, err
}
resTasks := []model.TaskResponse{}
for _, v := range tasks {
t := model.TaskResponse{
ID: v.ID,
Title: v.Title,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
}
resTasks = append(resTasks, t)
}
return resTasks, nil
}
func (tu *taskUsecase) GetTaskById(userId uint, taskId uint) (model.TaskResponse, error) {
task := model.Task{}
if err := tu.tr.GetTaskById(&task, userId, taskId); err != nil {
return model.TaskResponse{}, err
}
resTask := model.TaskResponse{
ID: task.ID,
Title: task.Title,
CreatedAt: task.CreatedAt,
UpdatedAt: task.UpdatedAt,
}
return resTask, nil
}
func (tu *taskUsecase) CreateTask(task model.Task) (model.TaskResponse, error) {
if err := tu.tv.TaskValidate(task); err != nil {
return model.TaskResponse{}, err
}
if err := tu.tr.CreateTask(&task); err != nil {
return model.TaskResponse{}, err
}
resTask := model.TaskResponse{
ID: task.ID,
Title: task.Title,
CreatedAt: task.CreatedAt,
UpdatedAt: task.UpdatedAt,
}
return resTask, nil
}
func (tu *taskUsecase) UpdateTask(task model.Task, userId uint, taskId uint) (model.TaskResponse, error) {
if err := tu.tv.TaskValidate(task); err != nil {
return model.TaskResponse{}, err
}
if err := tu.tr.UpdateTask(&task, userId, taskId); err != nil {
return model.TaskResponse{}, err
}
resTask := model.TaskResponse{
ID: task.ID,
Title: task.Title,
CreatedAt: task.CreatedAt,
UpdatedAt: task.UpdatedAt,
}
return resTask, nil
}
func (tu *taskUsecase) DeleteTask(userId uint, taskId uint) error {
if err := tu.tr.DeleteTask(userId, taskId); err != nil {
return err
}
return nil
}