public Task <List <ChatMessageDTO> > GetMessagesAsync(DateTimeOffset since) { return(_dbService .Query <ChatMessage>(m => m.DateTime >= since) .Order() .Project() .ToListAsync()); }
public async Task <PublishImpactChangesResponse> UpdateImpactedTests(IEnumerable <string> changedCodeSignatures) { _logger.LogInformation("Updating impacted tests for build {@BuildInfo}, with changes {CodeSignatures}", _buildInfo, changedCodeSignatures); var impactItems = from ii in _dbService.Query <TestCaseImpactItem>() where ii.ProductLineId == _productLineId && !ii.IsDeleted && changedCodeSignatures.Contains(ii.CodeSignature.Signature) select ii; var signaturesAndImpactedTests = await (from ii in impactItems join tl in GetTestLastStates() on ii.TestCaseId equals tl.TestCaseId select new { ii.CodeSignature.Signature, ii.TestCaseId, TestLastState = tl, tl.TestCase.AzureTestCaseId }) .ToListAsync(); var testLastStates = signaturesAndImpactedTests .Select(s => s.TestLastState) .Distinct(new TestLastState.IDEqulityComparer()) .ToList(); UpdateLastStateToImpacted(testLastStates); var impactedTests = signaturesAndImpactedTests .Select(s => new ImpactedTestResponse() { TestCaseId = s.TestCaseId, AzureTestCaseId = s.AzureTestCaseId }) .Distinct() .OrderBy(t => t.AzureTestCaseId) .ToList(); var codeSignatureTests = signaturesAndImpactedTests .GroupBy(s => s.Signature) .ToDictionary(s => s.Key, g => (IReadOnlyList <int>)g.Select(i => i.TestCaseId).ToList().AsReadOnly()); _logger.LogInformation("Impacted tests for build {@BuildInfo}: {CodeSignatureTests}", _buildInfo, codeSignatureTests); return(new PublishImpactChangesResponse() { ImpactedTests = impactedTests, CodeSignatureImpactedTestCaseIds = codeSignatureTests }); }
public async Task <IReadOnlyList <LastImpactUpdateResponse> > GetLastImpactUpdatesAsync() { return(await _dbService .Query <LastImpactUpdate>() .Project() .ToListAsync()); }
public Task <TestCaseResponse> GetAsync(int id) { return(_dbService.Query <TestCase>(id).Project().FirstOrDefaultAsync()); }
public async Task <(TestRunSessionResponse, ServiceError)> InsertSessionAsync(TestRunSessionRequest sessionDto) { var build = await _dbService.Query <Data.BuildInfo>(b => b.AzureBuildDefinitionId == sessionDto.ProductBuild.AzureBuildDefinitionId && b.AzureBuildId == sessionDto.ProductBuild.AzureBuildId) .FirstOrDefaultAsync(); if (build == null) { build = sessionDto.ProductBuild.ToDataModel(); _dbService.Add(build); } var(productLine, error) = await _productLineService.GetOrInsertProductLineAsync(sessionDto.ProductLine); if (!error.IsSuccessful()) { return(null, error); } sessionDto.ProductLine = productLine.ToDto(); var session = sessionDto.ToDataModel(); session.ProductBuildInfo = build; _dbService.Add(session); await _dbService.SaveChangesAsync(); var response = session.ToResponse(); response.ProductLine = sessionDto.ProductLine; return(response, ServiceError.NoError); }