Passed
Push — main ( 26be31...19cade )
by Yume
01:25
created

controllers.CreateNewAnswer   A

Complexity

Conditions 2

Size

Total Lines 21
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 15
nop 1
dl 0
loc 21
rs 9.65
c 0
b 0
f 0
1
package controllers
2
3
import (
4
	"memnixrest/app/models"
5
	"memnixrest/app/database"
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 // DB Conn
16
17
	var answers []models.Answer
18
19
	if res := db.Joins("Card").Find(&answers); res.Error != nil {
20
21
		return c.Status(http.StatusInternalServerError).JSON(models.ResponseHTTP{
22
			Success: false,
23
			Message: "Failed to get All answers",
24
			Data:    nil,
25
			Count:   0,
26
		})
27
	}
28
	return c.Status(http.StatusOK).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
	db := database.DBConn // DB Conn
40
41
	// Params
42
	id := c.Params("id")
43
44
	answer := new(models.Answer)
45
46
	if err := db.Joins("Card").First(&answer, id).Error; err != nil {
47
		return c.Status(http.StatusServiceUnavailable).JSON(models.ResponseHTTP{
48
			Success: false,
49
			Message: err.Error(),
50
			Data:    nil,
51
			Count:   0,
52
		})
53
	}
54
55
	return c.Status(http.StatusOK).JSON(models.ResponseHTTP{
56
		Success: true,
57
		Message: "Success get answer by ID.",
58
		Data:    *answer,
59
		Count:   1,
60
	})
61
}
62
63
// GetAnswersByCardID
64
func GetAnswersByCardID(c *fiber.Ctx) error {
65
	db := database.DBConn // DB Conn
66
67
	// Params
68
	cardID := c.Params("cardID")
69
70
	var answers []models.Answer
71
72
	if res := db.Joins("Card").Where("answers.card_id = ?", cardID).Find(&answers); res.Error != nil {
73
74
		return c.Status(http.StatusInternalServerError).JSON(models.ResponseHTTP{
75
			Success: false,
76
			Message: "Failed to get answers by cardID",
77
			Data:    nil,
78
			Count:   0,
79
		})
80
	}
81
	return c.Status(http.StatusOK).JSON(models.ResponseHTTP{
82
		Success: true,
83
		Message: "Get answers by cardID",
84
		Data:    answers,
85
		Count:   len(answers),
86
	})
87
}
88
89
// POST
90
91
// CreateNewAnswer
92
func CreateNewAnswer(c *fiber.Ctx) error {
93
	db := database.DBConn // DB Conn
94
95
	answer := new(models.Answer)
96
97
	if err := c.BodyParser(&answer); err != nil {
98
		return c.Status(http.StatusBadRequest).JSON(models.ResponseHTTP{
99
			Success: false,
100
			Message: err.Error(),
101
			Data:    nil,
102
			Count:   0,
103
		})
104
	}
105
106
	db.Preload("Card").Create(answer)
107
108
	return c.Status(http.StatusOK).JSON(models.ResponseHTTP{
109
		Success: true,
110
		Message: "Success register an answer",
111
		Data:    *answer,
112
		Count:   1,
113
	})
114
115
}
116