aboutsummaryrefslogtreecommitdiff
path: root/backend/controllers/userController.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-08-20 12:51:26 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-08-20 12:51:26 +0300
commitca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee (patch)
tree1196cbb2b253ecaddd80934cc849cfd52f68b3e4 /backend/controllers/userController.go
parentfix: change map history from timestamp to date (diff)
downloadlphub-ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee.tar.gz
lphub-ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee.tar.bz2
lphub-ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee.zip
refactor: move structs around for better understanding
Former-commit-id: 0030a6b0c7b228772d8e27f5722ee6de1718786b
Diffstat (limited to '')
-rw-r--r--backend/controllers/userController.go43
1 files changed, 29 insertions, 14 deletions
diff --git a/backend/controllers/userController.go b/backend/controllers/userController.go
index 6aa77fc..0dae155 100644
--- a/backend/controllers/userController.go
+++ b/backend/controllers/userController.go
@@ -11,6 +11,21 @@ import (
11 "github.com/pektezol/leastportalshub/backend/models" 11 "github.com/pektezol/leastportalshub/backend/models"
12) 12)
13 13
14type ProfileResponse struct {
15 Profile bool `json:"profile"`
16 SteamID string `json:"steam_id"`
17 UserName string `json:"user_name"`
18 AvatarLink string `json:"avatar_link"`
19 CountryCode string `json:"country_code"`
20 ScoresSP []ScoreResponse `json:"scores_sp"`
21 ScoresMP []ScoreResponse `json:"scores_mp"`
22}
23
24type ScoreResponse struct {
25 MapID int `json:"map_id"`
26 Records any `json:"records"`
27}
28
14// GET Profile 29// GET Profile
15// 30//
16// @Description Get profile page of session user. 31// @Description Get profile page of session user.
@@ -18,7 +33,7 @@ import (
18// @Accept json 33// @Accept json
19// @Produce json 34// @Produce json
20// @Param Authorization header string true "JWT Token" 35// @Param Authorization header string true "JWT Token"
21// @Success 200 {object} models.Response{data=models.ProfileResponse} 36// @Success 200 {object} models.Response{data=ProfileResponse}
22// @Failure 400 {object} models.Response 37// @Failure 400 {object} models.Response
23// @Failure 401 {object} models.Response 38// @Failure 401 {object} models.Response
24// @Router /profile [get] 39// @Router /profile [get]
@@ -30,7 +45,7 @@ func Profile(c *gin.Context) {
30 return 45 return
31 } 46 }
32 // Retrieve singleplayer records 47 // Retrieve singleplayer records
33 var scoresSP []models.ScoreResponse 48 var scoresSP []ScoreResponse
34 sql := `SELECT id, map_id, score_count, score_time, demo_id, record_date FROM records_sp WHERE user_id = $1 ORDER BY map_id` 49 sql := `SELECT id, map_id, score_count, score_time, demo_id, record_date FROM records_sp WHERE user_id = $1 ORDER BY map_id`
35 rows, err := database.DB.Query(sql, user.(models.User).SteamID) 50 rows, err := database.DB.Query(sql, user.(models.User).SteamID)
36 if err != nil { 51 if err != nil {
@@ -50,13 +65,13 @@ func Profile(c *gin.Context) {
50 // New map 65 // New map
51 recordsSP = []models.RecordSP{} 66 recordsSP = []models.RecordSP{}
52 recordsSP = append(recordsSP, record) 67 recordsSP = append(recordsSP, record)
53 scoresSP = append(scoresSP, models.ScoreResponse{ 68 scoresSP = append(scoresSP, ScoreResponse{
54 MapID: mapID, 69 MapID: mapID,
55 Records: recordsSP, 70 Records: recordsSP,
56 }) 71 })
57 } 72 }
58 // Retrieve multiplayer records 73 // Retrieve multiplayer records
59 var scoresMP []models.ScoreResponse 74 var scoresMP []ScoreResponse
60 sql = `SELECT id, map_id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date FROM records_mp 75 sql = `SELECT id, map_id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date FROM records_mp
61 WHERE host_id = $1 OR partner_id = $2 ORDER BY map_id` 76 WHERE host_id = $1 OR partner_id = $2 ORDER BY map_id`
62 rows, err = database.DB.Query(sql, user.(models.User).SteamID, user.(models.User).SteamID) 77 rows, err = database.DB.Query(sql, user.(models.User).SteamID, user.(models.User).SteamID)
@@ -77,7 +92,7 @@ func Profile(c *gin.Context) {
77 // New map 92 // New map
78 recordsMP = []models.RecordMP{} 93 recordsMP = []models.RecordMP{}
79 recordsMP = append(recordsMP, record) 94 recordsMP = append(recordsMP, record)
80 scoresMP = append(scoresMP, models.ScoreResponse{ 95 scoresMP = append(scoresMP, ScoreResponse{
81 MapID: mapID, 96 MapID: mapID,
82 Records: recordsMP, 97 Records: recordsMP,
83 }) 98 })
@@ -85,7 +100,7 @@ func Profile(c *gin.Context) {
85 c.JSON(http.StatusOK, models.Response{ 100 c.JSON(http.StatusOK, models.Response{
86 Success: true, 101 Success: true,
87 Message: "Successfully retrieved user scores.", 102 Message: "Successfully retrieved user scores.",
88 Data: models.ProfileResponse{ 103 Data: ProfileResponse{
89 Profile: true, 104 Profile: true,
90 SteamID: user.(models.User).SteamID, 105 SteamID: user.(models.User).SteamID,
91 UserName: user.(models.User).UserName, 106 UserName: user.(models.User).UserName,
@@ -105,7 +120,7 @@ func Profile(c *gin.Context) {
105// @Accept json 120// @Accept json
106// @Produce json 121// @Produce json
107// @Param id path int true "User ID" 122// @Param id path int true "User ID"
108// @Success 200 {object} models.Response{data=models.ProfileResponse} 123// @Success 200 {object} models.Response{data=ProfileResponse}
109// @Failure 400 {object} models.Response 124// @Failure 400 {object} models.Response
110// @Failure 404 {object} models.Response 125// @Failure 404 {object} models.Response
111// @Router /users/{id} [get] 126// @Router /users/{id} [get]
@@ -132,7 +147,7 @@ func FetchUser(c *gin.Context) {
132 return 147 return
133 } 148 }
134 // Retrieve singleplayer records 149 // Retrieve singleplayer records
135 var scoresSP []models.ScoreResponse 150 var scoresSP []ScoreResponse
136 sql := `SELECT id, map_id, score_count, score_time, demo_id, record_date FROM records_sp WHERE user_id = $1 ORDER BY map_id` 151 sql := `SELECT id, map_id, score_count, score_time, demo_id, record_date FROM records_sp WHERE user_id = $1 ORDER BY map_id`
137 rows, err := database.DB.Query(sql, user.SteamID) 152 rows, err := database.DB.Query(sql, user.SteamID)
138 if err != nil { 153 if err != nil {
@@ -152,13 +167,13 @@ func FetchUser(c *gin.Context) {
152 // New map 167 // New map
153 recordsSP = []models.RecordSP{} 168 recordsSP = []models.RecordSP{}
154 recordsSP = append(recordsSP, record) 169 recordsSP = append(recordsSP, record)
155 scoresSP = append(scoresSP, models.ScoreResponse{ 170 scoresSP = append(scoresSP, ScoreResponse{
156 MapID: mapID, 171 MapID: mapID,
157 Records: recordsSP, 172 Records: recordsSP,
158 }) 173 })
159 } 174 }
160 // Retrieve multiplayer records 175 // Retrieve multiplayer records
161 var scoresMP []models.ScoreResponse 176 var scoresMP []ScoreResponse
162 sql = `SELECT id, map_id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date FROM records_mp 177 sql = `SELECT id, map_id, host_id, partner_id, score_count, score_time, host_demo_id, partner_demo_id, record_date FROM records_mp
163 WHERE host_id = $1 OR partner_id = $2 ORDER BY map_id` 178 WHERE host_id = $1 OR partner_id = $2 ORDER BY map_id`
164 rows, err = database.DB.Query(sql, user.SteamID, user.SteamID) 179 rows, err = database.DB.Query(sql, user.SteamID, user.SteamID)
@@ -179,7 +194,7 @@ func FetchUser(c *gin.Context) {
179 // New map 194 // New map
180 recordsMP = []models.RecordMP{} 195 recordsMP = []models.RecordMP{}
181 recordsMP = append(recordsMP, record) 196 recordsMP = append(recordsMP, record)
182 scoresMP = append(scoresMP, models.ScoreResponse{ 197 scoresMP = append(scoresMP, ScoreResponse{
183 MapID: mapID, 198 MapID: mapID,
184 Records: recordsMP, 199 Records: recordsMP,
185 }) 200 })
@@ -187,7 +202,7 @@ func FetchUser(c *gin.Context) {
187 c.JSON(http.StatusOK, models.Response{ 202 c.JSON(http.StatusOK, models.Response{
188 Success: true, 203 Success: true,
189 Message: "Successfully retrieved user scores.", 204 Message: "Successfully retrieved user scores.",
190 Data: models.ProfileResponse{ 205 Data: ProfileResponse{
191 Profile: true, 206 Profile: true,
192 SteamID: user.SteamID, 207 SteamID: user.SteamID,
193 UserName: user.UserName, 208 UserName: user.UserName,
@@ -207,7 +222,7 @@ func FetchUser(c *gin.Context) {
207// @Accept json 222// @Accept json
208// @Produce json 223// @Produce json
209// @Param Authorization header string true "JWT Token" 224// @Param Authorization header string true "JWT Token"
210// @Success 200 {object} models.Response{data=models.ProfileResponse} 225// @Success 200 {object} models.Response{data=ProfileResponse}
211// @Failure 400 {object} models.Response 226// @Failure 400 {object} models.Response
212// @Failure 401 {object} models.Response 227// @Failure 401 {object} models.Response
213// @Router /profile [post] 228// @Router /profile [post]
@@ -233,7 +248,7 @@ func UpdateUser(c *gin.Context) {
233 c.JSON(http.StatusOK, models.Response{ 248 c.JSON(http.StatusOK, models.Response{
234 Success: true, 249 Success: true,
235 Message: "Successfully updated user.", 250 Message: "Successfully updated user.",
236 Data: models.ProfileResponse{ 251 Data: ProfileResponse{
237 Profile: true, 252 Profile: true,
238 SteamID: user.(models.User).SteamID, 253 SteamID: user.(models.User).SteamID,
239 UserName: profile.PersonaName, 254 UserName: profile.PersonaName,