public async Task <UserRole> CreateRole(ulong roleId, string name)
        {
            var userRole = new UserRole()
            {
                RoleId = roleId,
                Name   = name
            };

            await _dbContext.AddAsync(userRole);

            await _dbContext.SaveChangesAsync();

            return(userRole);
        }
        public async Task <AwardMessage> CreateAwardMessage(
            ulong originalMessageId,
            ulong originalChannelId,
            ulong awardedMessageId,
            ulong awardChannelId,
            ulong userId,
            uint awardCount)
        {
            var awardMessage = new AwardMessage
            {
                OriginalMessageId = originalMessageId,
                OriginalChannelId = originalChannelId,
                UserId            = userId,
                AwardedMessageId  = awardedMessageId,
                AwardChannelId    = awardChannelId,
                AwardCount        = awardCount,
                DateTime          = DateTime.UtcNow
            };

            await _dbContext.AddAsync(awardMessage);

            await _dbContext.SaveChangesAsync();

            return(awardMessage);
        }
示例#3
0
        private async Task <UserScore> FindOrCreateUser(ulong userID)
        {
            var existingUser = await dbContext.UserScores.FindAsync(userID);

            if (existingUser == null)
            {
                // Optimistic concurrency: Concurrent creations result in exception since user ID is unique
                await dbContext.AddAsync(new UserScore(userID));

                await dbContext.SaveChangesAsync();

                // Reload new user from database to be in correct context
                existingUser = await dbContext.UserScores.FindAsync(userID);

                if (existingUser == null)
                {
                    throw new Exception($"User with ID {userID} should have been created but database returned null");
                }
            }

            return(existingUser);
        }