public void Initialize()
        {
            _blocksHelper = new BlocksHelper();
            _blocksHelper.DeleteBlocks(TestConstants.ApplicationName);
            _executionHelper = new ExecutionsHelper();
            _executionHelper.DeleteRecordsOfApplication(TestConstants.ApplicationName);

            _taskDefinitionId = _executionHelper.InsertTask(TestConstants.ApplicationName, TestConstants.TaskName);
            _executionHelper.InsertAvailableExecutionToken(_taskDefinitionId);
        }
Exemplo n.º 2
0
        public void Initialize()
        {
            _blocksHelper = new BlocksHelper();
            _blocksHelper.DeleteBlocks(TestConstants.ApplicationName);
            _executionHelper = new ExecutionsHelper();
            _executionHelper.DeleteRecordsOfApplication(TestConstants.ApplicationName);

            _taskDefinitionId = _executionHelper.InsertTask(TestConstants.ApplicationName, TestConstants.TaskName);
            _executionHelper.InsertUnlimitedExecutionToken(_taskDefinitionId);

            TaskRepository.ClearCache();
        }
Exemplo n.º 3
0
        public async Task <AddOrUpdateOperationResult <TEntity> > UpdateWithBlocksAsync(TEntity item,
                                                                                        IBioRepositoryOperationContext?operationContext = null)
        {
            var(validationResult, changes, oldItem) = await DoUpdateAsync(item, operationContext);

            if (validationResult.isValid)
            {
                await BlocksHelper.UpdateBlocksAsync(item, DbContext);
                await DoSaveAsync(item, changes, oldItem, operationContext);
            }

            return(new AddOrUpdateOperationResult <TEntity>(item, validationResult.errors, changes));
        }
Exemplo n.º 4
0
        public async Task <AddOrUpdateOperationResult <TEntity> > AddWithBlocksAsync(TEntity item,
                                                                                     IBioRepositoryOperationContext?operationContext = null)
        {
            var result = await DoAddAsync(item, operationContext);

            if (result.isValid)
            {
                await BlocksHelper.AddBlocksAsync(item, DbContext);
                await DoSaveAsync(item, null, null, operationContext);
            }

            return(new AddOrUpdateOperationResult <TEntity>(item, result.errors, new PropertyChange[0]));
        }
Exemplo n.º 5
0
        public override async Task <TEntity?> DeleteAsync(Guid id,
                                                          IBioRepositoryOperationContext?operationContext = null)
        {
            var entity = await base.DeleteAsync(id, operationContext);

            if (entity != null)
            {
                await BlocksHelper.DeleteBlocksAsync(entity, DbContext);

                await DbContext.SaveChangesAsync();
            }

            return(entity);
        }
Exemplo n.º 6
0
        public void If_SetStatusOfObjectBlock_ThenItemsCountIsCorrect()
        {
            // ARRANGE
            InsertObjectBlock();

            var request = new BlockExecutionChangeStatusRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                _taskExecution1,
                BlockType.Object,
                _blockExecutionId.ToString(),
                BlockExecutionStatus.Completed);
            request.ItemsProcessed = 10000;


            // ACT
            var sut = CreateSut();
            sut.ChangeStatus(request);

            var itemCount = new BlocksHelper().GetBlockExecutionItemCount(_blockExecutionId);

            // ASSERT
            Assert.AreEqual(itemCount, 10000);
        }
Exemplo n.º 7
0
        public async Task If_SetStatusOfObjectBlock_ThenItemsCountIsCorrect()
        {
            // ARRANGE
            InsertObjectBlock();

            var request = new BlockExecutionChangeStatusRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                                                                _taskExecution1,
                                                                BlockType.Object,
                                                                _blockExecutionId.ToString(),
                                                                BlockExecutionStatus.Completed);

            request.ItemsProcessed = 10000;


            // ACT
            var sut = CreateSut();
            await sut.ChangeStatusAsync(request);

            var itemCount = new BlocksHelper().GetBlockExecutionItemCount(_blockExecutionId);

            // ASSERT
            Assert.Equal(10000, itemCount);
        }
Exemplo n.º 8
0
        public void If_SetStatusOfNumericRangeBlock_ThenItemsCountIsCorrect()
        {
            // ARRANGE
            InsertNumericRangeBlock();

            var request = new BlockExecutionChangeStatusRequest(new TaskId(TestConstants.ApplicationName, TestConstants.TaskName),
                                                                _taskExecution1,
                                                                BlockType.NumericRange,
                                                                _blockExecutionId.ToString(),
                                                                BlockExecutionStatus.Completed);

            request.ItemsProcessed = 10000;


            // ACT
            var sut = CreateSut();

            sut.ChangeStatus(request);

            var itemCount = new BlocksHelper().GetBlockExecutionItemCount(_blockExecutionId);

            // ASSERT
            Assert.AreEqual(itemCount, 10000);
        }
Exemplo n.º 9
0
        public async Task ImportAsync(Guid siteId, Export data)
        {
            _logger.LogCritical("Begin import");
            await PrintStatsAsync();

            var transaction = await _dbContext.Database.BeginTransactionAsync();

            var site = await _dbContext.Sites.FirstOrDefaultAsync(s => s.Id == siteId);

            if (site == null)
            {
                throw new Exception($"Site with id {siteId.ToString()} not found");
            }

            _tags = await _dbContext.Tags.ToListAsync();

            _filesUploader.BeginBatch();
            _propertiesProvider.BeginBatch();
            _propertiesProvider.DisableChecks();

            try
            {
                _logger.LogInformation($"Developers: {data.Developers.Count.ToString()}");

                _redirects = new Dictionary <string, string>();

                _developersMap = new Dictionary <int, Developer>();
                await ImportDevelopersAsync(data, site);

                _logger.LogInformation($"Games: {data.Games.Count.ToString()}");
                _gamesMap = new Dictionary <int, Game>();
                await ImportGamesAsync(data, site);

                _logger.LogInformation($"Topics: {data.Topics.Count.ToString()}");
                _topicsMap = new Dictionary <int, Topic>();
                await ImportTopicsAsync(data, site);

                var posts   = new List <Post <string> >();
                var newsMap = new Dictionary <NewsExport, Post <string> >();
                if (_options.ImportNews)
                {
                    _logger.LogWarning("News");
                    await ImportNewsAsync(data, site, posts, newsMap);
                }

                //articles
                if (_options.ImportArticles)
                {
                    _logger.LogWarning("Articles");
                    await ImportArticlesAsync(data, site, posts);
                }

                // files
                if (_options.ImportFiles)
                {
                    _logger.LogWarning("Files");
                    ImportFiles(data, site, posts);
                }

                // pictures
                if (_options.ImportGallery)
                {
                    _logger.LogWarning("Gallery");
                    await ImportGalleryAsync(data, site, posts);
                }

                if (posts.Any())
                {
                    var urls         = posts.Select(p => p.Url).ToArray();
                    var existedPosts = await _dbContext.Set <Post <string> >().Where(p => urls.Contains(p.Url))
                                       .ToListAsync();

                    var blocks = await BlocksHelper.GetBlocksAsync(existedPosts.ToArray(), _dbContext);

                    foreach (var existedPost in existedPosts)
                    {
                        existedPost.Blocks = blocks[existedPost.Id];
                    }

                    var toRemove = new List <ContentBlock>();
                    foreach (var post in posts.OrderBy(p => p.DateAdded))
                    {
                        var version = new PostVersion <string> {
                            Id = Guid.NewGuid()
                        };
                        var existedPost = existedPosts.FirstOrDefault(p => p.Url == post.Url);
                        if (existedPost != null)
                        {
                            toRemove.AddRange(existedPost.Blocks);
                            existedPost.Blocks = new List <ContentBlock>();
                            foreach (ContentBlock block in post.Blocks)
                            {
                                block.ContentId = existedPost.Id;
                                existedPost.Blocks.Add(block);
                                _dbContext.Blocks.Add(block);
                            }

                            existedPost.Title      = post.Title;
                            existedPost.SectionIds = post.SectionIds;
                            existedPost.SiteIds    = post.SiteIds;
                            _dbContext.Update(existedPost);
                            _dbContext.Add(existedPost.Blocks);
                            version.ContentId = existedPost.Id;
                            version.SetContent(existedPost);
                        }
                        else
                        {
                            await _dbContext.AddAsync(post);

                            version.ContentId = post.Id;
                            version.SetContent(post);
                        }

                        version.ChangeAuthorId = post.AuthorId;
                        await _dbContext.AddAsync(version);
                    }

                    if (toRemove.Any())
                    {
                        _dbContext.Blocks.RemoveRange(toRemove);
                    }

                    _logger.LogWarning("Properties");
                    foreach (var(news, post) in newsMap)
                    {
                        if (news.TwitterId > 0)
                        {
                            _dbContext.Add(new TwitterPublishRecord
                            {
                                Type      = post.GetKey(),
                                ContentId = post.Id,
                                TweetId   = news.TwitterId.Value,
                                SiteIds   = post.SiteIds
                            });
                        }

                        if (!string.IsNullOrEmpty(news.FacebookId))
                        {
                            _dbContext.Add(new FacebookPublishRecord
                            {
                                Type      = post.GetKey(),
                                ContentId = post.Id,
                                PostId    = news.FacebookId,
                                SiteIds   = post.SiteIds
                            });
                        }

                        if (news.ForumTopicId > 0 && news.ForumPostId > 0)
                        {
                            _dbContext.Add(new IPBPublishRecord
                            {
                                Type      = post.GetKey(),
                                ContentId = post.Id,
                                TopicId   = news.ForumTopicId.Value,
                                PostId    = news.ForumPostId.Value,
                                SiteIds   = post.SiteIds
                            });
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                Rollback(transaction);
                return;
            }

            await _dbContext.SaveChangesAsync();

            await PrintStatsAsync();

            transaction.Commit();

            // export redirects
            var redirects = string.Join("\n", _redirects.Select(p => $"{p.Key}          {p.Value};"));
            var nginxMap  = "map $request_uri $redirect_uri {\n" + redirects + "\n}";

            File.WriteAllText($"{_options.OutputPath}/redirects.conf", nginxMap);
            _logger.LogCritical("Done!");
        }