Passed
Push — main ( 961bc3...87c9df )
by Yume
01:10
created

handlers/answer.go   A

Size/Duplication

Total Lines 109
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 8
eloc 65
dl 0
loc 109
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A handlers.GetAnswerByID 0 20 2
A handlers.CreateNewAnswer 0 21 2
A handlers.GetAnswersByCardID 0 21 2
A handlers.GetAllAnswers 0 19 2
1
package handlers
2
3
import (
4
	"memnixrest/database"
5
	"memnixrest/models"
6
	"net/http"
7
8
	"github.com/gofiber/fiber/v2"
9
)
10
11
// GET
12
13
// GetAllAnswers
14
func GetAllAnswers(c *fiber.Ctx) error {
15
	db := database.DBConn
16
17
	var answers []models.Answer
18
19
	if res := db.Joins("Card").Find(&answers); res.Error != nil {
20
21
		return c.JSON(models.ResponseHTTP{
22
			Success: false,
23
			Message: "Get All answers",
24
			Data:    nil,
25
			Count:   0,
26
		})
27
	}
28
	return c.JSON(models.ResponseHTTP{
29
		Success: true,
30
		Message: "Get All answers",
31
		Data:    answers,
32
		Count:   len(answers),
33
	})
34
35
}
36
37
// GetAnswerByID
38
func GetAnswerByID(c *fiber.Ctx) error {
39
	id := c.Params("id")
40
	db := database.DBConn
41
42
	answer := new(models.Answer)
43
44
	if err := db.Joins("Card").First(&answer, id).Error; err != nil {
45
		return c.Status(http.StatusServiceUnavailable).JSON(models.ResponseHTTP{
46
			Success: false,
47
			Message: err.Error(),
48
			Data:    nil,
49
			Count:   0,
50
		})
51
	}
52
53
	return c.JSON(models.ResponseHTTP{
54
		Success: true,
55
		Message: "Success get answer by ID.",
56
		Data:    *answer,
57
		Count:   1,
58
	})
59
}
60
61
// GetAnswersByCardID
62
func GetAnswersByCardID(c *fiber.Ctx) error {
63
	db := database.DBConn
64
65
	cardID := c.Params("cardID")
66
67
	var answers []models.Answer
68
69
	if res := db.Joins("Card").Where("answers.card_id = ?", cardID).Find(&answers); res.Error != nil {
70
71
		return c.JSON(models.ResponseHTTP{
72
			Success: false,
73
			Message: "Get all answers",
74
			Data:    nil,
75
			Count:   0,
76
		})
77
	}
78
	return c.JSON(models.ResponseHTTP{
79
		Success: true,
80
		Message: "Get all answers",
81
		Data:    answers,
82
		Count:   len(answers),
83
	})
84
}
85
86
// POST
87
88
// CreateNewAnswer
89
func CreateNewAnswer(c *fiber.Ctx) error {
90
	db := database.DBConn
91
92
	answer := new(models.Answer)
93
94
	if err := c.BodyParser(&answer); err != nil {
95
		return c.Status(http.StatusBadRequest).JSON(models.ResponseHTTP{
96
			Success: false,
97
			Message: err.Error(),
98
			Data:    nil,
99
			Count:   0,
100
		})
101
	}
102
103
	db.Preload("Card").Create(answer)
104
105
	return c.JSON(models.ResponseHTTP{
106
		Success: true,
107
		Message: "Success register a answer",
108
		Data:    *answer,
109
		Count:   1,
110
	})
111
112
}
113