Example #1
0
        public async Task<IPaginatedList<DependencyDto>> GetByRepositoryIdAsync(Guid repoId, IEnumerable<EcosystemKind> kinds, string search, int pageIndex = 1, int pageSize = 10)
        {
            var filter = kinds.ToIntArray();
            VcsRepository repository = context.VcsRepositories.Find(repoId);
            List<string> assetNames = context.Assets.Where(asset => asset.RepositoryId == repoId).Select(asset => extractor.ExtractPublishName(asset)).ToList();

            IQueryable<Dependency> query = context.Dependencies.AsQueryable();

            if (filter.Any())
            {
                query = query.Where(dependency => filter.Contains((int)dependency.Kind));
            }

            if (!string.IsNullOrWhiteSpace(search))
            {
                query = query.Where(dependency => dependency.Name.Contains(search));
            }

            query = query.Where(dependency => assetNames.Contains(dependency.Name) || context.DependencyVersions.Any(dv => dv.DependencyId == dependency.Id && string.Equals(dv.ProjectUrl, repository.Url) || string.Equals(dv.ProjectUrl, repository.WebUrl)));

            var paging = query.Select(dependency => new DependencyDto
            {
                Assets = context.AssetDependencies.Count(ad => ad.DependencyId == dependency.Id),
                DependencyId = dependency.Id,
                Kind = dependency.Kind,
                Name = dependency.Name,
                Versions = context.DependencyVersions.Count(dv => dv.DependencyId == dependency.Id)
            })
            .OrderByDescending(d => d.Assets)
            .ThenByDescending(d => d.Versions);

            return await PaginatedList<DependencyDto>.CreateAsync(paging, pageIndex, pageSize);
        }
Example #2
0
        public async Task <List <string> > GetPublishedNamesByRepositoryIdAsync(Guid repositoryId)
        {
            List <Asset> assets = await context.Assets.Where(asset => asset.RepositoryId == repositoryId).ToListAsync();

            return(assets.Select(asset => extractor.ExtractPublishName(asset)).ToList());
        }