コード例 #1
0
ファイル: Users.cs プロジェクト: darkclouddev/Rift
 public async Task <List <RiftUser> > GetAsync(Expression <Func <RiftUser, bool> > predicate)
 {
     await using var context = new RiftContext();
     return(await context.Users
            .Where(predicate)
            .ToListAsync());
 }
コード例 #2
0
        public async Task AddAsync(RiftActiveEvent activeEvent, CancellationToken ct = default)
        {
            await using var context = new RiftContext();
            await context.ActiveEvents.AddAsync(activeEvent, ct);

            await context.SaveChangesAsync(ct);
        }
コード例 #3
0
ファイル: Users.cs プロジェクト: darkclouddev/Rift
        public async Task <bool> EnsureExistsAsync(ulong userId)
        {
            await using var context = new RiftContext();
            if (await context.Users
                .AsQueryable()
                .AnyAsync(x => x.UserId == userId))
            {
                return(true);
            }

            try
            {
                var entry = new RiftUser
                {
                    UserId = userId,
                };

                await context.Users.AddAsync(entry);

                await context.SaveChangesAsync();

                OnUserCreated?.Invoke(null, new UserCreatedEventArgs(userId));
                return(true);
            }
            catch
            {
                RiftBot.Log.Error($"Failed to check {nameof(EnsureExistsAsync)} for user {userId.ToString()}.");
                return(false);
            }
        }
コード例 #4
0
ファイル: Users.cs プロジェクト: darkclouddev/Rift
 public async Task <int> GetCountAsync()
 {
     await using var context = new RiftContext();
     return(await context.Users
            .AsQueryable()
            .CountAsync());
 }
コード例 #5
0
 public async Task <List <RiftInventory> > GetAllAsync()
 {
     await using var context = new RiftContext();
     return(await context.Inventory
            .AsQueryable()
            .ToListAsync());
 }
コード例 #6
0
ファイル: Streamers.cs プロジェクト: darkclouddev/Rift
 public async Task <RiftStreamer> GetAsync(ulong userId)
 {
     await using var context = new RiftContext();
     return(await context.Streamers
            .AsQueryable()
            .FirstOrDefaultAsync(x => x.UserId == userId));
 }
コード例 #7
0
        public async Task AddAsync(RiftReward reward)
        {
            await using var context = new RiftContext();
            await context.Rewards.AddAsync(reward);

            await context.SaveChangesAsync();
        }
コード例 #8
0
        public async Task <bool> TryUpdateAsync(RiftReward reward)
        {
            await using var context = new RiftContext();
            var data = await GetAsync(reward.Id);

            if (data is null)
            {
                return(false); // nothing to update
            }
            var entry = context.Entry(data);

            if (!reward.Description.Equals(data.Description))
            {
                entry.Property(x => x.Description).IsModified = true;
            }

            if (!reward.ItemsData.Equals(data.ItemsData))
            {
                entry.Property(x => x.ItemsData).IsModified = true;
            }

            if (!reward.RoleData.Equals(data.RoleData))
            {
                entry.Property(x => x.RoleData).IsModified = true;
            }

            await context.SaveChangesAsync();

            return(true);
        }
コード例 #9
0
 public async Task <bool> AnyAsync()
 {
     await using var context = new RiftContext();
     return(await context.EventSchedule
            .AsQueryable()
            .AnyAsync());
 }
コード例 #10
0
ファイル: Events.cs プロジェクト: darkclouddev/Rift
 public async Task <RiftEvent> GetAsync(string name)
 {
     await using var context = new RiftContext();
     return(await context.Events
            .AsQueryable()
            .FirstOrDefaultAsync(x => x.Name.Equals(name, StringComparison.InvariantCulture)));
 }
コード例 #11
0
 public async Task <RiftProfileBackground> GetAsync(int id)
 {
     await using var context = new RiftContext();
     return(await context.Backgrounds
            .AsQueryable()
            .FirstOrDefaultAsync(x => x.Id == id));
 }
コード例 #12
0
        public async Task AddAsync(RiftProfileBackground background)
        {
            await using var context = new RiftContext();
            await context.Backgrounds.AddAsync(background);

            await context.SaveChangesAsync();
        }
コード例 #13
0
 public async Task <bool> HasAsync(ulong userId, ulong roleId)
 {
     await using var context = new RiftContext();
     return(await context.TempRoles
            .AsQueryable()
            .AnyAsync(x => x.UserId == userId && x.RoleId == roleId));
 }
コード例 #14
0
ファイル: Toxicity.cs プロジェクト: darkclouddev/Rift
        public async Task UpdatePercentAsync(ulong userId, uint percent)
        {
            await EnsureExistsAsync(userId);

            var oldToxicity = await GetAsync(userId);

            await using var context = new RiftContext();
            var toxicity = new RiftToxicity
            {
                UserId  = userId,
                Percent = percent
            };

            context.Entry(toxicity).Property(x => x.Percent).IsModified = true;

            if (percent > oldToxicity.Percent)
            {
                toxicity.LastIncreased = DateTime.UtcNow;
                context.Entry(toxicity).Property(x => x.LastIncreased).IsModified = true;
            }
            else if (percent < oldToxicity.Percent)
            {
                toxicity.LastDecreased = DateTime.UtcNow;
                context.Entry(toxicity).Property(x => x.LastDecreased).IsModified = true;
            }

            await context.SaveChangesAsync();
        }
コード例 #15
0
ファイル: ActiveGiveaways.cs プロジェクト: darkclouddev/Rift
        public async Task AddAsync(RiftActiveGiveaway giveaway)
        {
            await using var context = new RiftContext();
            await context.ActiveGiveaways.AddAsync(giveaway);

            await context.SaveChangesAsync();
        }
コード例 #16
0
ファイル: Toxicity.cs プロジェクト: darkclouddev/Rift
        static async Task <bool> EnsureExistsAsync(ulong userId)
        {
            if (!await DB.Users.EnsureExistsAsync(userId))
            {
                throw new DatabaseException(nameof(EnsureExistsAsync));
            }

            await using var context = new RiftContext();
            if (await context.Toxicity
                .AsQueryable()
                .AnyAsync(x => x.UserId == userId))
            {
                return(true);
            }

            try
            {
                var entry = new RiftToxicity
                {
                    UserId        = userId,
                    LastIncreased = DateTime.MinValue,
                };

                await context.Toxicity.AddAsync(entry);

                await context.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                RiftBot.Log.Error(ex, $"Failed to check {nameof(EnsureExistsAsync)} for user {userId.ToString()}.");
                return(false);
            }
        }
コード例 #17
0
 public async Task <int> CountAsync(ulong userId)
 {
     await using var context = new RiftContext();
     return(await context.RoleInventories
            .AsQueryable()
            .CountAsync(x => x.UserId == userId));
 }
コード例 #18
0
ファイル: PendingUsers.cs プロジェクト: darkclouddev/Rift
 public async Task <List <RiftPendingUser> > GetAllAsync()
 {
     await using var context = new RiftContext();
     return(await context.PendingUsers
            .AsQueryable()
            .ToListAsync());
 }
コード例 #19
0
ファイル: PendingUsers.cs プロジェクト: darkclouddev/Rift
 public async Task <bool> IsPendingAsync(ulong userId)
 {
     await using var context = new RiftContext();
     return(await context.PendingUsers
            .AsQueryable()
            .AnyAsync(x => x.UserId == userId));
 }
コード例 #20
0
ファイル: EventLogs.cs プロジェクト: darkclouddev/Rift
 public async Task <List <RiftEventLog> > GetStartedAsync(Expression <Func <RiftEventLog, bool> > predicate)
 {
     await using var context = new RiftContext();
     return(await context.EventLogs
            .Where(predicate)
            .ToListAsync());
 }
コード例 #21
0
ファイル: Cooldowns.cs プロジェクト: darkclouddev/Rift
        static async Task <bool> EnsureExistsAsync(ulong userId)
        {
            if (!await DB.Users.EnsureExistsAsync(userId))
            {
                return(false);
            }

            await using var context = new RiftContext();
            if (await context.Cooldowns
                .AsQueryable()
                .AnyAsync(x => x.UserId == userId))
            {
                return(true);
            }

            try
            {
                var entry = new RiftCooldowns
                {
                    UserId = userId,
                };

                await context.Cooldowns.AddAsync(entry);

                await context.SaveChangesAsync();

                return(true);
            }
            catch (Exception ex)
            {
                RiftBot.Log.Error(ex, $"Failed to check {nameof(EnsureExistsAsync)} for user {userId.ToString()}.");
                return(false);
            }
        }
コード例 #22
0
ファイル: EventLogs.cs プロジェクト: darkclouddev/Rift
 public async Task <RiftEventLog> GetAsync(int id)
 {
     await using var context = new RiftContext();
     return(await context.EventLogs
            .AsQueryable()
            .FirstOrDefaultAsync(x => x.Id == id));
 }
コード例 #23
0
ファイル: EventLogs.cs プロジェクト: darkclouddev/Rift
        public async Task AddAsync(RiftEventLog log)
        {
            await using var context = new RiftContext();
            await context.EventLogs.AddAsync(log);

            await context.SaveChangesAsync();
        }
コード例 #24
0
ファイル: ActiveGiveaways.cs プロジェクト: darkclouddev/Rift
 public async Task <List <RiftActiveGiveaway> > GetAllAsync()
 {
     await using var context = new RiftContext();
     return(await context.ActiveGiveaways
            .AsQueryable()
            .ToListAsync());
 }
コード例 #25
0
ファイル: ActiveGiveaways.cs プロジェクト: darkclouddev/Rift
 public async Task <RiftActiveGiveaway> GetAsync(int id)
 {
     await using var context = new RiftContext();
     return(await context.ActiveGiveaways
            .AsQueryable()
            .FirstOrDefaultAsync(x => x.Id == id));
 }
コード例 #26
0
 public async Task <bool> HasAsync(ulong userId, int backgroundId)
 {
     await using var context = new RiftContext();
     return(await context.BackgroundInventories
            .AsQueryable()
            .Where(x => x.UserId == userId && x.BackgroundId == backgroundId)
            .AnyAsync());
 }
コード例 #27
0
 public async Task <bool> HasAllAsync(ulong userId, params int[] roleIds)
 {
     await using var context = new RiftContext();
     return(await context.RoleInventories
            .AsQueryable()
            .AllAsync(x => x.UserId == userId &&
                      roleIds.Contains(x.RoleId)));
 }
コード例 #28
0
 public async Task <List <RiftRoleInventory> > GetAsync(ulong userId)
 {
     await using var context = new RiftContext();
     return(await context.RoleInventories
            .AsQueryable()
            .Where(x => x.UserId == userId)
            .ToListAsync());
 }
コード例 #29
0
ファイル: PendingUsers.cs プロジェクト: darkclouddev/Rift
 public async Task <List <RiftPendingUser> > GetExpiredAsync()
 {
     await using var context = new RiftContext();
     return(await context.PendingUsers
            .AsQueryable()
            .Where(x => x.ExpirationTime > DateTime.UtcNow)
            .ToListAsync());
 }
コード例 #30
0
ファイル: ActiveGiveaways.cs プロジェクト: darkclouddev/Rift
 public async Task <List <RiftActiveGiveaway> > GetLinkedAsync(string giveawayName)
 {
     await using var context = new RiftContext();
     return(await context.ActiveGiveaways
            .AsQueryable()
            .Where(x => x.GiveawayName.Equals(giveawayName))
            .ToListAsync());
 }