diff options
Diffstat (limited to 'backend/handlers/record.go')
| -rw-r--r-- | backend/handlers/record.go | 44 |
1 files changed, 17 insertions, 27 deletions
diff --git a/backend/handlers/record.go b/backend/handlers/record.go index 4b0fafa..2dbc766 100644 --- a/backend/handlers/record.go +++ b/backend/handlers/record.go | |||
| @@ -65,7 +65,6 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 65 | return | 65 | return |
| 66 | } | 66 | } |
| 67 | if isDisabled { | 67 | if isDisabled { |
| 68 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInvalidRequest) | ||
| 69 | c.JSON(http.StatusOK, models.ErrorResponse("Map is not available for competitive boards.")) | 68 | c.JSON(http.StatusOK, models.ErrorResponse("Map is not available for competitive boards.")) |
| 70 | return | 69 | return |
| 71 | } | 70 | } |
| @@ -75,12 +74,12 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 75 | // Get record request | 74 | // Get record request |
| 76 | var record RecordRequest | 75 | var record RecordRequest |
| 77 | if err := c.ShouldBind(&record); err != nil { | 76 | if err := c.ShouldBind(&record); err != nil { |
| 78 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInvalidRequest) | 77 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInvalidRequestFail, "BIND: "+err.Error()) |
| 79 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 78 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 80 | return | 79 | return |
| 81 | } | 80 | } |
| 82 | if isCoop && (record.PartnerDemo == nil || record.PartnerID == "") { | 81 | if isCoop && (record.PartnerDemo == nil || record.PartnerID == "") { |
| 83 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInvalidRequest) | 82 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInvalidRequestFail) |
| 84 | c.JSON(http.StatusOK, models.ErrorResponse("Invalid entry for coop record submission.")) | 83 | c.JSON(http.StatusOK, models.ErrorResponse("Invalid entry for coop record submission.")) |
| 85 | return | 84 | return |
| 86 | } | 85 | } |
| @@ -110,28 +109,28 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 110 | // Upload & insert into demos | 109 | // Upload & insert into demos |
| 111 | err = c.SaveUploadedFile(header, "backend/parser/"+uuid+".dem") | 110 | err = c.SaveUploadedFile(header, "backend/parser/"+uuid+".dem") |
| 112 | if err != nil { | 111 | if err != nil { |
| 113 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailSaveDemo) | 112 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordSaveDemoFail, err.Error()) |
| 114 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 113 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 115 | return | 114 | return |
| 116 | } | 115 | } |
| 117 | defer os.Remove("backend/parser/" + uuid + ".dem") | 116 | defer os.Remove("backend/parser/" + uuid + ".dem") |
| 118 | f, err := os.Open("backend/parser/" + uuid + ".dem") | 117 | f, err := os.Open("backend/parser/" + uuid + ".dem") |
| 119 | if err != nil { | 118 | if err != nil { |
| 120 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailOpenDemo) | 119 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordOpenDemoFail, err.Error()) |
| 121 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 120 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 122 | return | 121 | return |
| 123 | } | 122 | } |
| 124 | defer f.Close() | 123 | defer f.Close() |
| 125 | file, err := createFile(srv, uuid+".dem", "application/octet-stream", f, os.Getenv("GOOGLE_FOLDER_ID")) | 124 | file, err := createFile(srv, uuid+".dem", "application/octet-stream", f, os.Getenv("GOOGLE_FOLDER_ID")) |
| 126 | if err != nil { | 125 | if err != nil { |
| 127 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailCreateDemo) | 126 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordCreateDemoFail, err.Error()) |
| 128 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 127 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 129 | return | 128 | return |
| 130 | } | 129 | } |
| 131 | hostDemoScoreCount, hostDemoScoreTime, err = parser.ProcessDemo("backend/parser/" + uuid + ".dem") | 130 | hostDemoScoreCount, hostDemoScoreTime, err = parser.ProcessDemo("backend/parser/" + uuid + ".dem") |
| 132 | if err != nil { | 131 | if err != nil { |
| 133 | deleteFile(srv, file.Id) | 132 | deleteFile(srv, file.Id) |
| 134 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailProcessDemo) | 133 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordProcessDemoFail, err.Error()) |
| 135 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 134 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 136 | return | 135 | return |
| 137 | } | 136 | } |
| @@ -145,7 +144,7 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 145 | _, err = tx.Exec(`INSERT INTO demos (id,location_id) VALUES ($1,$2)`, uuid, file.Id) | 144 | _, err = tx.Exec(`INSERT INTO demos (id,location_id) VALUES ($1,$2)`, uuid, file.Id) |
| 146 | if err != nil { | 145 | if err != nil { |
| 147 | deleteFile(srv, file.Id) | 146 | deleteFile(srv, file.Id) |
| 148 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInsertDemo) | 147 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInsertDemoFail, err.Error()) |
| 149 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 148 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 150 | return | 149 | return |
| 151 | } | 150 | } |
| @@ -167,42 +166,26 @@ func CreateRecordWithDemo(c *gin.Context) { | |||
| 167 | if err != nil { | 166 | if err != nil { |
| 168 | deleteFile(srv, hostDemoFileID) | 167 | deleteFile(srv, hostDemoFileID) |
| 169 | deleteFile(srv, partnerDemoFileID) | 168 | deleteFile(srv, partnerDemoFileID) |
| 170 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInsertRecord) | 169 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInsertRecordFail, err.Error()) |
| 171 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 170 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 172 | return | 171 | return |
| 173 | } | 172 | } |
| 174 | // If a new world record based on portal count | ||
| 175 | // if record.ScoreCount < wrScore { | ||
| 176 | // _, err := tx.Exec(`UPDATE maps SET wr_score = $1, wr_time = $2 WHERE id = $3`, record.ScoreCount, record.ScoreTime, mapId) | ||
| 177 | // if err != nil { | ||
| 178 | // c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | ||
| 179 | // return | ||
| 180 | // } | ||
| 181 | // } | ||
| 182 | } else { | 173 | } else { |
| 183 | sql := `INSERT INTO records_sp(map_id,score_count,score_time,user_id,demo_id) | 174 | sql := `INSERT INTO records_sp(map_id,score_count,score_time,user_id,demo_id) |
| 184 | VALUES($1, $2, $3, $4, $5)` | 175 | VALUES($1, $2, $3, $4, $5)` |
| 185 | _, err := tx.Exec(sql, mapId, hostDemoScoreCount, hostDemoScoreTime, user.(models.User).SteamID, hostDemoUUID) | 176 | _, err := tx.Exec(sql, mapId, hostDemoScoreCount, hostDemoScoreTime, user.(models.User).SteamID, hostDemoUUID) |
| 186 | if err != nil { | 177 | if err != nil { |
| 187 | deleteFile(srv, hostDemoFileID) | 178 | deleteFile(srv, hostDemoFileID) |
| 188 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInsertRecord) | 179 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordInsertRecordFail, err.Error()) |
| 189 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 180 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 190 | return | 181 | return |
| 191 | } | 182 | } |
| 192 | // If a new world record based on portal count | ||
| 193 | // if record.ScoreCount < wrScore { | ||
| 194 | // _, err := tx.Exec(`UPDATE maps SET wr_score = $1, wr_time = $2 WHERE id = $3`, record.ScoreCount, record.ScoreTime, mapId) | ||
| 195 | // if err != nil { | ||
| 196 | // c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | ||
| 197 | // return | ||
| 198 | // } | ||
| 199 | // } | ||
| 200 | } | 183 | } |
| 201 | if err = tx.Commit(); err != nil { | 184 | if err = tx.Commit(); err != nil { |
| 202 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 185 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 203 | return | 186 | return |
| 204 | } | 187 | } |
| 205 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordSuccess) | 188 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionCreateRecordSuccess) |
| 206 | c.JSON(http.StatusOK, models.Response{ | 189 | c.JSON(http.StatusOK, models.Response{ |
| 207 | Success: true, | 190 | Success: true, |
| 208 | Message: "Successfully created record.", | 191 | Message: "Successfully created record.", |
| @@ -256,10 +239,12 @@ func DeleteRecord(c *gin.Context) { | |||
| 256 | sql = `SELECT mp.id FROM records_mp mp WHERE mp.id = $1 AND mp.map_id = $2 AND (mp.host_id = $3 OR mp.partner_id = $3) AND is_deleted = false` | 239 | sql = `SELECT mp.id FROM records_mp mp WHERE mp.id = $1 AND mp.map_id = $2 AND (mp.host_id = $3 OR mp.partner_id = $3) AND is_deleted = false` |
| 257 | err = database.DB.QueryRow(sql, recordID, mapID, user.(models.User).SteamID).Scan(&validateRecordID) | 240 | err = database.DB.QueryRow(sql, recordID, mapID, user.(models.User).SteamID).Scan(&validateRecordID) |
| 258 | if err != nil { | 241 | if err != nil { |
| 242 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordFail, "S#records_mp: "+err.Error()) | ||
| 259 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 243 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 260 | return | 244 | return |
| 261 | } | 245 | } |
| 262 | if recordID != validateRecordID { | 246 | if recordID != validateRecordID { |
| 247 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordFail, "recordID != validateRecordID") | ||
| 263 | c.JSON(http.StatusOK, models.ErrorResponse("Selected record does not exist.")) | 248 | c.JSON(http.StatusOK, models.ErrorResponse("Selected record does not exist.")) |
| 264 | return | 249 | return |
| 265 | } | 250 | } |
| @@ -267,6 +252,7 @@ func DeleteRecord(c *gin.Context) { | |||
| 267 | sql = `UPDATE records_mp SET is_deleted = true WHERE id = $1` | 252 | sql = `UPDATE records_mp SET is_deleted = true WHERE id = $1` |
| 268 | _, err = database.DB.Exec(sql, recordID) | 253 | _, err = database.DB.Exec(sql, recordID) |
| 269 | if err != nil { | 254 | if err != nil { |
| 255 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordFail, "U#records_mp: "+err.Error()) | ||
| 270 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 256 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 271 | return | 257 | return |
| 272 | } | 258 | } |
| @@ -276,10 +262,12 @@ func DeleteRecord(c *gin.Context) { | |||
| 276 | sql = `SELECT sp.id FROM records_sp sp WHERE sp.id = $1 AND sp.map_id = $2 AND sp.user_id = $3 AND is_deleted = false` | 262 | sql = `SELECT sp.id FROM records_sp sp WHERE sp.id = $1 AND sp.map_id = $2 AND sp.user_id = $3 AND is_deleted = false` |
| 277 | err = database.DB.QueryRow(sql, recordID, mapID, user.(models.User).SteamID).Scan(&validateRecordID) | 263 | err = database.DB.QueryRow(sql, recordID, mapID, user.(models.User).SteamID).Scan(&validateRecordID) |
| 278 | if err != nil { | 264 | if err != nil { |
| 265 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordFail, "S#records_sp: "+err.Error()) | ||
| 279 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 266 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 280 | return | 267 | return |
| 281 | } | 268 | } |
| 282 | if recordID != validateRecordID { | 269 | if recordID != validateRecordID { |
| 270 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordFail, "recordID != validateRecordID") | ||
| 283 | c.JSON(http.StatusOK, models.ErrorResponse("Selected record does not exist.")) | 271 | c.JSON(http.StatusOK, models.ErrorResponse("Selected record does not exist.")) |
| 284 | return | 272 | return |
| 285 | } | 273 | } |
| @@ -287,10 +275,12 @@ func DeleteRecord(c *gin.Context) { | |||
| 287 | sql = `UPDATE records_sp SET is_deleted = true WHERE id = $1` | 275 | sql = `UPDATE records_sp SET is_deleted = true WHERE id = $1` |
| 288 | _, err = database.DB.Exec(sql, recordID) | 276 | _, err = database.DB.Exec(sql, recordID) |
| 289 | if err != nil { | 277 | if err != nil { |
| 278 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordFail, "U#records_sp: "+err.Error()) | ||
| 290 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) | 279 | c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) |
| 291 | return | 280 | return |
| 292 | } | 281 | } |
| 293 | } | 282 | } |
| 283 | CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionDeleteRecordSuccess) | ||
| 294 | c.JSON(http.StatusOK, models.Response{ | 284 | c.JSON(http.StatusOK, models.Response{ |
| 295 | Success: true, | 285 | Success: true, |
| 296 | Message: "Successfully deleted record.", | 286 | Message: "Successfully deleted record.", |