Ejemplo n.º 1
0
        public Task Pending(DbContext db, SubmissionCreatedRequest args)
        {
            return(db.Set <ScoreCache>().MergeAsync(
                       sourceTable: new[] { new { args.ContestId, args.TeamId, args.ProblemId } },
                       targetKey: sc => new { sc.ContestId, sc.TeamId, sc.ProblemId },
                       sourceKey: sc => new { sc.ContestId, sc.TeamId, sc.ProblemId },

                       updateExpression: (t, s) => new ScoreCache
            {
                PendingRestricted = t.PendingRestricted + 1,
            },

                       insertExpression: s => new ScoreCache
            {
                ContestId = s.ContestId,
                TeamId = s.TeamId,
                ProblemId = s.ProblemId,
                PendingRestricted = 1,
            },

                       delete: false));
        }
Ejemplo n.º 2
0
        public async Task Pending(DbContext db, SubmissionCreatedRequest args)
        {
            await db.Set <ScoreCache>().MergeAsync(
                sourceTable: new[] { new { args.ContestId, args.ProblemId, args.TeamId } },
                targetKey: args => new { args.ContestId, args.ProblemId, args.TeamId },
                sourceKey: args => new { args.ContestId, args.ProblemId, args.TeamId },
                delete: false,

                updateExpression: (s, _) => new ScoreCache
            {
                PendingPublic     = s.PendingPublic + 1,
                PendingRestricted = s.PendingRestricted + 1,
            },

                insertExpression: r => new ScoreCache
            {
                ContestId         = r.ContestId,
                TeamId            = r.TeamId,
                ProblemId         = r.ProblemId,
                PendingPublic     = 1,
                PendingRestricted = 1,
            });
        }