aboutsummaryrefslogtreecommitdiff
path: root/backend/handlers/record.go
diff options
context:
space:
mode:
Diffstat (limited to 'backend/handlers/record.go')
-rw-r--r--backend/handlers/record.go44
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.",