コード例 #1
0
        public async Task CanCreateUpdateRemoveAsync()
        {
            await ResetAsync();

            await _repository.RemoveAllAsync();

            await _client.RefreshAsync();

            Assert.Equal(0, await _repository.CountAsync());

            var stack = StackData.GenerateStack(projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId);

            Assert.Null(stack.Id);

            await _repository.AddAsync(stack);

            Assert.NotNull(stack.Id);
            await _client.RefreshAsync();

            stack = await _repository.GetByIdAsync(stack.Id);

            Assert.NotNull(stack);

            stack.Description = "New Description";
            await _repository.SaveAsync(stack);

            await _repository.RemoveAsync(stack.Id);
        }
コード例 #2
0
        public async Task CanFindManyAsync()
        {
            Assert.Equal(0, await _repository.CountAsync());
            await _repository.AddAsync(StackData.GenerateSampleStacks());

            await RefreshDataAsync();

            var stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, o => o.PageNumber(1).PageLimit(1));

            Assert.NotNull(stacks);
            Assert.Equal(3, stacks.Total);
            Assert.Equal(1, stacks.Documents.Count);

            var stacks2 = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, o => o.PageNumber(2).PageLimit(1));

            Assert.NotNull(stacks);
            Assert.Equal(1, stacks.Documents.Count);

            Assert.NotEqual(stacks.Documents.First().Id, stacks2.Documents.First().Id);

            stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId);

            Assert.NotNull(stacks);
            Assert.Equal(3, stacks.Documents.Count);

            await _repository.RemoveAsync(stacks.Documents);

            await RefreshDataAsync();

            Assert.Equal(0, await _repository.CountAsync());
        }
コード例 #3
0
        public override async Task HandleItemAsync(WorkItemContext context)
        {
            var wi = context.GetData <StackWorkItem>();

            using (Log.BeginScope(new ExceptionlessState().Organization(wi.OrganizationId).Project(wi.ProjectId))) {
                if (wi.Delete)
                {
                    await _eventRepository.RemoveAllByStackIdAsync(wi.OrganizationId, wi.ProjectId, wi.StackId).AnyContext();

                    await _stackRepository.RemoveAsync(wi.StackId).AnyContext();

                    return;
                }

                if (wi.UpdateIsFixed)
                {
                    await _eventRepository.UpdateFixedByStackAsync(wi.OrganizationId, wi.ProjectId, wi.StackId, wi.IsFixed).AnyContext();
                }

                if (wi.UpdateIsHidden)
                {
                    await _eventRepository.UpdateHiddenByStackAsync(wi.OrganizationId, wi.ProjectId, wi.StackId, wi.IsHidden).AnyContext();
                }
            }
        }
コード例 #4
0
        public async Task CanFindManyAsync()
        {
            Assert.Equal(0, await _repository.CountAsync());
            await _repository.AddAsync(StackData.GenerateSampleStacks());

            await _configuration.Client.RefreshAsync();

            var stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, new PagingOptions().WithPage(1).WithLimit(1));

            Assert.NotNull(stacks);
            Assert.Equal(3, stacks.Total);
            Assert.Equal(1, stacks.Documents.Count);

            var stacks2 = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId, new PagingOptions().WithPage(2).WithLimit(1));

            Assert.NotNull(stacks);
            Assert.Equal(1, stacks.Documents.Count);

            Assert.NotEqual(stacks.Documents.First().Id, stacks2.Documents.First().Id);

            stacks = await _repository.GetByOrganizationIdAsync(TestConstants.OrganizationId);

            Assert.NotNull(stacks);
            Assert.Equal(3, stacks.Documents.Count);

            await _repository.RemoveAsync(stacks.Documents);

            await _configuration.Client.RefreshAsync();

            Assert.Equal(0, await _repository.CountAsync());
        }
コード例 #5
0
        private async Task RemoveStackAsync(Stack stack, JobContext context)
        {
            _logger.LogInformation("Removing stack: {Stack} ({StackId})", stack.Title, stack.Id);

            await RenewLockAsync(context).AnyContext();

            long removedEvents = await _eventRepository.RemoveAllByStackIdAsync(stack.OrganizationId, stack.ProjectId, stack.Id).AnyContext();

            await _stackRepository.RemoveAsync(stack).AnyContext();

            _logger.LogInformation("Removed stack: {Stack} ({StackId}), Removed {RemovedEvents} Events", stack.Title, stack.Id, removedEvents);
        }
コード例 #6
0
        private async Task RemoveStackAsync(Stack stack, JobContext context)
        {
            _logger.RemoveStackStart(stack.Id);

            await RenewLockAsync(context).AnyContext();

            long removedEvents = await _eventRepository.RemoveAllByStackIdAsync(stack.OrganizationId, stack.ProjectId, stack.Id).AnyContext();

            await _stackRepository.RemoveAsync(stack).AnyContext();

            _logger.RemoveStackComplete(stack.Id, removedEvents);
        }
コード例 #7
0
    private async Task RemoveStacksAsync(IReadOnlyCollection <Stack> stacks, JobContext context)
    {
        await RenewLockAsync(context).AnyContext();

        string[] stackIds      = stacks.Select(s => s.Id).ToArray();
        long     removedEvents = await _eventRepository.RemoveAllByStackIdsAsync(stackIds).AnyContext();

        await _stackRepository.RemoveAsync(stacks).AnyContext();

        foreach (var orgGroup in stacks.GroupBy(s => (s.OrganizationId, s.ProjectId)))
        {
            await _cacheClient.RemoveByPrefixAsync(String.Concat("stack-filter:", orgGroup.Key.OrganizationId, ":", orgGroup.Key.ProjectId));
        }

        _logger.RemoveStacksComplete(stackIds.Length, removedEvents);
    }
コード例 #8
0
        public override async Task HandleItemAsync(WorkItemContext context)
        {
            var workItem = context.GetData <StackWorkItem>();

            if (workItem.Delete)
            {
                await _eventRepository.RemoveAllByStackIdsAsync(new[] { workItem.StackId });

                await _stackRepository.RemoveAsync(workItem.StackId);

                return;
            }

            if (workItem.UpdateIsFixed)
            {
                await _eventRepository.UpdateFixedByStackAsync(workItem.OrganizationId, workItem.StackId, workItem.IsFixed).AnyContext();
            }

            if (workItem.UpdateIsHidden)
            {
                await _eventRepository.UpdateHiddenByStackAsync(workItem.OrganizationId, workItem.StackId, workItem.IsHidden).AnyContext();
            }
        }