private async Task InsertPipelineToDB(Pipeline pipeline, Project project) { var staticBranchesNamesDb = await _staticBranchPanelRepository.GetBranchNamesFromStaticPanelsForProject(project.Id); PipelinesMerger merger = new PipelinesMerger(); List <Pipeline> projectPipelines = new List <Pipeline>(project.Pipelines); merger.AddPipelinesPageAtEnd(new List <Pipeline>() { pipeline }); var staticPipelines = project.Pipelines.Where(p => staticBranchesNamesDb.Contains(p.Ref)); var mergeResult = merger.MergePipelines(project.Pipelines, staticPipelines, project.PipelinesNumber); await SaveMergedInDB(mergeResult, project); }
private async Task DownloadNewestPipelinesNotInBrancNameList(ICiDataProvider dataProvider, Project project, int howMany, IEnumerable <string> branchNames, PipelinesMerger merger) { var branchNamesSet = new HashSet <string>(branchNames); var pageCounter = 0; var maxPagesToLookFor = int.Parse(_configuration["DataProviders:NewestPipelinesMaxPages"]); while (merger.NewestPipelinesCount < howMany && pageCounter++ <= maxPagesToLookFor) { var pagedNewest = await dataProvider.FetchNewestPipelines(project.ApiHostUrl, project.ApiAuthenticationToken, project.ApiProjectId, pageCounter, perPage : howMany); var pagePipelinesNotInLocalStatic = pagedNewest.pipelines.Where(p => !branchNamesSet.Contains(p.Ref)); merger.AddPipelinesPageAtEnd(pagePipelinesNotInLocalStatic); if (pageCounter >= pagedNewest.totalPages) //If last page { break; } } }