From 266698e46744063752f7cc893c539f132e3cdc37 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Sat, 2 Sep 2023 22:02:11 +0300 Subject: feat: detailed logs for records (#55) Former-commit-id: af37633ce05f08fc517cb3e8fec3e84a0bd5ba49 --- backend/handlers/logs.go | 14 ++++++++++++-- backend/handlers/record.go | 11 +++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) (limited to 'backend') diff --git a/backend/handlers/logs.go b/backend/handlers/logs.go index 0fef6a1..c971f79 100644 --- a/backend/handlers/logs.go +++ b/backend/handlers/logs.go @@ -11,8 +11,9 @@ import ( ) const ( - LogTypeMod string = "Mod" - LogTypeLogin string = "Login" + LogTypeMod string = "Mod" + LogTypeLogin string = "Login" + LogTypeRecord string = "Record" LogDescriptionLoginSuccess string = "Success" LogDescriptionLoginFailToken string = "TokenFail" @@ -23,6 +24,15 @@ const ( LogDescriptionMapSummaryEdit string = "MapSummaryEdit" LogDescriptionMapSummaryEditImage string = "MapSummaryEditImage" LogDescriptionMapSummaryDelete string = "MapSummaryDelete" + + LogDescriptionRecordSuccess string = "Success" + LogDescriptionRecordFailInsertRecord string = "InsertRecordFail" + LogDescriptionRecordFailInsertDemo string = "InsertDemoFail" + LogDescriptionRecordFailProcessDemo string = "ProcessDemoFail" + LogDescriptionRecordFailCreateDemo string = "CreateDemoFail" + LogDescriptionRecordFailOpenDemo string = "OpenDemoFail" + LogDescriptionRecordFailSaveDemo string = "SaveDemoFail" + LogDescriptionRecordFailInvalidRequest string = "InvalidRequestFail" ) type Log struct { diff --git a/backend/handlers/record.go b/backend/handlers/record.go index 00c9b7d..3d29eb8 100644 --- a/backend/handlers/record.go +++ b/backend/handlers/record.go @@ -66,6 +66,7 @@ func CreateRecordWithDemo(c *gin.Context) { return } if isDisabled { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInvalidRequest) c.JSON(http.StatusBadRequest, models.ErrorResponse("Map is not available for competitive boards.")) return } @@ -75,10 +76,12 @@ func CreateRecordWithDemo(c *gin.Context) { // Get record request var record RecordRequest if err := c.ShouldBind(&record); err != nil { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInvalidRequest) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } if isCoop && (record.PartnerDemo == nil || record.PartnerID == "") { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInvalidRequest) c.JSON(http.StatusBadRequest, models.ErrorResponse("Invalid entry for coop record submission.")) return } @@ -108,23 +111,27 @@ func CreateRecordWithDemo(c *gin.Context) { // Upload & insert into demos err = c.SaveUploadedFile(header, "backend/parser/"+uuid+".dem") if err != nil { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailSaveDemo) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } defer os.Remove("backend/parser/" + uuid + ".dem") f, err := os.Open("backend/parser/" + uuid + ".dem") if err != nil { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailOpenDemo) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } defer f.Close() file, err := createFile(srv, uuid+".dem", "application/octet-stream", f, os.Getenv("GOOGLE_FOLDER_ID")) if err != nil { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailCreateDemo) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } hostDemoScoreCount, hostDemoScoreTime, err = parser.ProcessDemo("backend/parser/" + uuid + ".dem") if err != nil { + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailProcessDemo) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } @@ -138,6 +145,7 @@ func CreateRecordWithDemo(c *gin.Context) { _, err = tx.Exec(`INSERT INTO demos (id,location_id) VALUES ($1,$2)`, uuid, file.Id) if err != nil { deleteFile(srv, file.Id) + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInsertDemo) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } @@ -159,6 +167,7 @@ func CreateRecordWithDemo(c *gin.Context) { if err != nil { deleteFile(srv, hostDemoFileID) deleteFile(srv, partnerDemoFileID) + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInsertRecord) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } @@ -176,6 +185,7 @@ func CreateRecordWithDemo(c *gin.Context) { _, err := tx.Exec(sql, mapId, hostDemoScoreCount, hostDemoScoreTime, user.(models.User).SteamID, hostDemoUUID) if err != nil { deleteFile(srv, hostDemoFileID) + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordFailInsertRecord) c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return } @@ -192,6 +202,7 @@ func CreateRecordWithDemo(c *gin.Context) { c.JSON(http.StatusInternalServerError, models.ErrorResponse(err.Error())) return } + CreateLog(user.(models.User).SteamID, LogTypeRecord, LogDescriptionRecordSuccess) c.JSON(http.StatusOK, models.Response{ Success: true, Message: "Successfully created record.", -- cgit v1.2.3