Passed
Push — main ( ec8dc2...0c32c3 )
by Yume
01:06
created

handlers.CreateNewAccess   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 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
// GetAllAccesses
14
func GetAllAccesses(c *fiber.Ctx) error {
15
	db := database.DBConn // DB Conn
16
17
	var accesses []models.Access // Accesses array
18
19
	if res := db.Joins("User").Joins("Deck").Find(&accesses); res.Error != nil {
20
		// Return error
21
		return c.JSON(models.ResponseHTTP{
22
			Success: false,
23
			Message: "Failed to get all accesses",
24
			Data:    nil,
25
			Count:   0,
26
		})
27
	}
28
	// Return success
29
	return c.JSON(models.ResponseHTTP{
30
		Success: true,
31
		Message: "Get all accesses",
32
		Data:    accesses,
33
		Count:   len(accesses),
34
	})
35
}
36
37
// GetAllAccesses
38
func GetAccessesByUserID(c *fiber.Ctx) error {
39
	db := database.DBConn // DB Conn
40
41
	// Params
42
	userID := c.Params("userID")
43
44
	var accesses []models.Access // Accesses array
45
46
	if res := db.Joins("User").Joins("Deck").Where("accesses.user_id = ?", userID).Find(&accesses); res.Error != nil {
47
		// Return error
48
		return c.JSON(models.ResponseHTTP{
49
			Success: false,
50
			Message: "Failed to get accesses of an user",
51
			Data:    nil,
52
			Count:   0,
53
		})
54
	}
55
	return c.JSON(models.ResponseHTTP{
56
		// Return success
57
		Success: true,
58
		Message: "Get accesses of an user",
59
		Data:    accesses,
60
		Count:   len(accesses),
61
	})
62
}
63
64
// GetAccessByID
65
func GetAccessByID(c *fiber.Ctx) error {
66
	db := database.DBConn // Db Conn
67
68
	// Params
69
	id := c.Params("id")
70
71
	access := new(models.Access)
72
73
	if err := db.Joins("User").Joins("Deck").First(&access, id).Error; err != nil {
74
		// Return error
75
		return c.Status(http.StatusServiceUnavailable).JSON(models.ResponseHTTP{
76
			Success: false,
77
			Message: err.Error(),
78
			Data:    nil,
79
			Count:   0,
80
		})
81
	}
82
83
	return c.JSON(models.ResponseHTTP{
84
		// Return success
85
		Success: true,
86
		Message: "Success get access by ID.",
87
		Data:    *access,
88
		Count:   1,
89
	})
90
}
91
92
// GetAccessByUserIDAndDeckID
93
func GetAccessByUserIDAndDeckID(c *fiber.Ctx) error {
94
	db := database.DBConn // DB Conn
95
96
	// Params
97
	userID := c.Params("userID")
98
	deckID := c.Params("deckID")
99
100
	access := new(models.Access)
101
102
	if err := db.Joins("User").Joins("Deck").Where("accesses.user_id = ? AND accesses.deck_id = ?", userID, deckID).First(&access).Error; err != nil {
103
		return c.Status(http.StatusServiceUnavailable).JSON(models.ResponseHTTP{
104
			Success: false,
105
			Message: err.Error(),
106
			Data:    nil,
107
			Count:   0,
108
		})
109
	}
110
111
	return c.JSON(models.ResponseHTTP{
112
		Success: true,
113
		Message: "Success get access by UserID & DeckID.",
114
		Data:    *access,
115
		Count:   1,
116
	})
117
}
118
119
// POST
120
121
// CreateNewAccess
122
func CreateNewAccess(c *fiber.Ctx) error {
123
	db := database.DBConn // DB Conn
124
125
	access := new(models.Access)
126
127
	if err := c.BodyParser(&access); err != nil {
128
		return c.Status(http.StatusBadRequest).JSON(models.ResponseHTTP{
129
			Success: false,
130
			Message: err.Error(),
131
			Data:    nil,
132
			Count:   0,
133
		})
134
	}
135
136
	db.Preload("User").Preload("Deck").Create(access)
137
138
	return c.JSON(models.ResponseHTTP{
139
		Success: true,
140
		Message: "Success register an access",
141
		Data:    *access,
142
		Count:   1,
143
	})
144
}
145
146
// PUT
147
148
// UpdateAccessByID
149
func UpdateAccessByID(c *fiber.Ctx) error {
150
	db := database.DBConn // DB Conn
151
152
	// Params
153
	id := c.Params("id")
154
155
	access := new(models.Access)
156
157
	if err := db.First(&access, id).Error; err != nil {
158
		return c.Status(http.StatusServiceUnavailable).JSON(models.ResponseHTTP{
159
			Success: false,
160
			Message: err.Error(),
161
			Data:    nil,
162
			Count:   0,
163
		})
164
	}
165
166
	if err := UpdateAccess(c, access); err != nil {
167
		return c.Status(http.StatusServiceUnavailable).JSON(models.ResponseHTTP{
168
			Success: false,
169
			Message: "Couldn't update the access",
170
			Data:    nil,
171
			Count:   0,
172
		})
173
	}
174
175
	return c.JSON(models.ResponseHTTP{
176
		Success: true,
177
		Message: "Success update access by Id.",
178
		Data:    *access,
179
		Count:   1,
180
	})
181
}
182
183
// UpdateAccess
184
func UpdateAccess(c *fiber.Ctx, a *models.Access) error {
185
	db := database.DBConn
186
187
	if err := c.BodyParser(&a); err != nil {
188
		return c.Status(http.StatusBadRequest).JSON(models.ResponseHTTP{
189
			Success: false,
190
			Message: err.Error(),
191
			Data:    nil,
192
			Count:   0,
193
		})
194
	}
195
196
	db.Preload("User").Preload("Deck").Save(a)
197
198
	return nil
199
}
200