@@ -181,19 +181,27 @@ func UpdateAfterSeen(db *mongo.Database, ctx context.Context, judge *models.Judg
181181 return errors .New ("error updating judge: " + err .Error ())
182182 }
183183
184- incData := gin.H {}
185184 if judge .Track != "" {
186- incData ["track_seen." + judge .Track ] = 1
185+ project , findErr := FindProject (db , ctx , & seenProject .ProjectId )
186+ if findErr != nil {
187+ return errors .New ("error finding project: " + findErr .Error ())
188+ }
189+ if project .TrackSeen == nil {
190+ project .TrackSeen = make (map [string ]int64 )
191+ }
192+ project .TrackSeen [judge .Track ] += 1
193+ _ , err = db .Collection ("projects" ).UpdateOne (
194+ ctx ,
195+ gin.H {"_id" : seenProject .ProjectId },
196+ gin.H {"$set" : gin.H {"track_seen" : project .TrackSeen , "last_activity" : util .Now ()}},
197+ )
187198 } else {
188- incData ["seen" ] = 1
199+ _ , err = db .Collection ("projects" ).UpdateOne (
200+ ctx ,
201+ gin.H {"_id" : seenProject .ProjectId },
202+ gin.H {"$inc" : gin.H {"seen" : 1 }, "$set" : gin.H {"last_activity" : util .Now ()}},
203+ )
189204 }
190-
191- // Update the project's seen count
192- _ , err = db .Collection ("projects" ).UpdateOne (
193- ctx ,
194- gin.H {"_id" : seenProject .ProjectId },
195- gin.H {"$inc" : incData , "$set" : gin.H {"last_activity" : util .Now ()}},
196- )
197205 if err != nil {
198206 return errors .New ("error updating project: " + err .Error ())
199207 }
0 commit comments