diff options
Diffstat (limited to 'api/internal/controllers/preferences.go')
-rw-r--r-- | api/internal/controllers/preferences.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/api/internal/controllers/preferences.go b/api/internal/controllers/preferences.go new file mode 100644 index 0000000..a1bcf4f --- /dev/null +++ b/api/internal/controllers/preferences.go | |||
@@ -0,0 +1,45 @@ | |||
1 | package controllers | ||
2 | |||
3 | import ( | ||
4 | "github.com/gin-gonic/gin" | ||
5 | "net/http" | ||
6 | "database/sql" | ||
7 | "water/api/internal/database" | ||
8 | "water/api/internal/models" | ||
9 | ) | ||
10 | |||
11 | func GetSizes(c *gin.Context) { | ||
12 | db := database.EstablishDBConnection() | ||
13 | defer func(db *sql.DB) { | ||
14 | err := db.Close() | ||
15 | if err != nil { | ||
16 | c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) | ||
17 | } | ||
18 | }(db) | ||
19 | |||
20 | rows, err := db.Query("SELECT id, size, unit FROM Sizes") | ||
21 | if err != nil { | ||
22 | c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) | ||
23 | return | ||
24 | } | ||
25 | defer func(rows *sql.Rows) { | ||
26 | err := rows.Close() | ||
27 | if err != nil { | ||
28 | c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) | ||
29 | return | ||
30 | } | ||
31 | }(rows) | ||
32 | |||
33 | var data []models.Size | ||
34 | |||
35 | for rows.Next() { | ||
36 | var size models.Size | ||
37 | if err := rows.Scan(&size.ID, &size.Size, &size.Unit); err != nil { | ||
38 | c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) | ||
39 | return | ||
40 | } | ||
41 | data = append(data, size) | ||
42 | } | ||
43 | |||
44 | c.JSON(http.StatusOK, data) | ||
45 | } | ||