示例#1
0
        public async Task UpdateUsersImages(int index = 0)
        {
            PixelUser user = null;

            do
            {
                _logger.Info($"index: {index}");
                using (var pixelContext = new PixelContext(_dbContextOptions))
                {
                    user = await pixelContext.PixelUser.Skip(index).FirstOrDefaultAsync();
                }
                index++;
                _logger.Info($"user.NickName: {user.NickName}");

                await UpdateUserImages(user);
            } while (user != null);
        }
示例#2
0
        public async Task UpdateUserImages(PixelUser pixelUser, int page = 1)
        {
            while (true)
            {
                _logger.Info($"Page: {page}");
                var list = await _imagesParser.LoadImagesByUser(pixelUser.NickName, page);

                if (list is null || list.Count == 0)
                {
                    _logger.Info("No images.");
                    return;
                }
                _logger.Info($"Images loaded: {list.Count}");
                using (var pixelContext = new PixelContext(_dbContextOptions))
                {
                    foreach (var item in list)
                    {
                        var entity = await pixelContext.PixelImage
                                     .Include(x => x.PixelUser)
                                     .SingleOrDefaultAsync(x => x.Url == item.imgUrl);

                        if (entity == null)
                        {
                            await pixelContext.PixelImage.AddAsync(new PixelImage {
                                PixelImageId = Guid.NewGuid(),
                                Url          = item.imgUrl,
                                MetaUrl      = item.metaUrl,
                                Title        = item.title,
                                PixelUserId  = pixelUser.PixelUserId
                            });
                        }
                        else
                        {
                            entity.Title   = item.title;
                            entity.MetaUrl = item.metaUrl;
                            pixelContext.PixelImage.Update(entity);
                        }
                    }

                    await pixelContext.SaveChangesAsync();
                }

                page++;
            }
        }