diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-08-20 12:51:26 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-08-20 12:51:26 +0300 |
| commit | ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee (patch) | |
| tree | 1196cbb2b253ecaddd80934cc849cfd52f68b3e4 /backend/controllers/userController.go | |
| parent | fix: change map history from timestamp to date (diff) | |
| download | lphub-ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee.tar.gz lphub-ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee.tar.bz2 lphub-ca7acc2fdc6e6c8371ca5bbeeaabb02d11bb1bee.zip | |
refactor: move structs around for better understanding
Former-commit-id: 0030a6b0c7b228772d8e27f5722ee6de1718786b
Diffstat (limited to 'backend/controllers/userController.go')
| -rw-r--r-- | backend/controllers/userController.go | 43 |
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 | ||
| 14 | type 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 | |||
| 24 | type 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, |