|
|
|
@ -44,7 +44,7 @@ namespace isnd.Services
|
|
|
|
|
new Resource
|
|
|
|
|
{
|
|
|
|
|
Id = extUrl + ApiConfig.Publish,
|
|
|
|
|
Type = "PackagePublish/2.0.0", // TODO BASE_API_LEVEL
|
|
|
|
|
Type = "PackagePublish/2.0.0",
|
|
|
|
|
Comment = "Package Publish service"
|
|
|
|
|
});
|
|
|
|
|
// under dev, only leash in release mode
|
|
|
|
@ -72,7 +72,7 @@ namespace isnd.Services
|
|
|
|
|
Type = "SearchQueryService/" + BASE_API_LEVEL,
|
|
|
|
|
Comment = "Search Query service"
|
|
|
|
|
});
|
|
|
|
|
if (unleashClient.IsEnabled("pkg-catalog", false))
|
|
|
|
|
if (unleashClient.IsEnabled("pkg-catalog", true))
|
|
|
|
|
res.Add(
|
|
|
|
|
new Resource
|
|
|
|
|
{
|
|
|
|
@ -81,7 +81,6 @@ namespace isnd.Services
|
|
|
|
|
Comment = "Package Catalog Index"
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
/* FIXME */
|
|
|
|
|
res.Add(
|
|
|
|
|
new Resource
|
|
|
|
|
{
|
|
|
|
@ -167,7 +166,7 @@ namespace isnd.Services
|
|
|
|
|
private IsndSettings isndSettings;
|
|
|
|
|
private string extUrl;
|
|
|
|
|
|
|
|
|
|
public virtual async Task<RegistrationPageIndex>GetCatalogIndexAsync()
|
|
|
|
|
public virtual async Task<RegistrationPageIndex> GetCatalogIndexAsync()
|
|
|
|
|
{
|
|
|
|
|
return await ÛpdateCatalogForAsync(null);
|
|
|
|
|
}
|
|
|
|
@ -178,11 +177,9 @@ namespace isnd.Services
|
|
|
|
|
|
|
|
|
|
string baseid = extUrl + ApiConfig.Catalog;
|
|
|
|
|
string bidreg = $"{extUrl}v3.4.0/{ApiConfig.Registration}";
|
|
|
|
|
string basepageid = extUrl + ApiConfig.CatalogPage;
|
|
|
|
|
RegistrationPageIndex CurrentCatalogIndex = new RegistrationPageIndex();
|
|
|
|
|
List<RegistrationPage> CurrentCatalogPages = new List<RegistrationPage>();
|
|
|
|
|
|
|
|
|
|
var scope = dbContext.Commits.OrderBy(c => c.TimeStamp);
|
|
|
|
|
var scope = await dbContext.Commits.OrderBy(c => c.TimeStamp).ToArrayAsync();
|
|
|
|
|
|
|
|
|
|
RegistrationPage page = null;
|
|
|
|
|
i = isndSettings.CatalogPageLen;
|
|
|
|
@ -190,44 +187,25 @@ namespace isnd.Services
|
|
|
|
|
{
|
|
|
|
|
if (i >= this.isndSettings.CatalogPageLen)
|
|
|
|
|
{
|
|
|
|
|
page = new RegistrationPage(basepageid, extUrl)
|
|
|
|
|
page = new RegistrationPage(bidreg, extUrl)
|
|
|
|
|
{
|
|
|
|
|
CommitId = commit.CommitId,
|
|
|
|
|
CommitTimeStamp = commit.CommitTimeStamp
|
|
|
|
|
};
|
|
|
|
|
CurrentCatalogPages.Add(page);
|
|
|
|
|
var pageRef = new RegistrationPage(page.Id, extUrl)
|
|
|
|
|
{
|
|
|
|
|
CommitId = commit.CommitId,
|
|
|
|
|
CommitTimeStamp = commit.CommitTimeStamp
|
|
|
|
|
};
|
|
|
|
|
CurrentCatalogIndex.Items.Add(pageRef);
|
|
|
|
|
CurrentCatalogIndex.Items.Add(page);
|
|
|
|
|
i = 0;
|
|
|
|
|
}
|
|
|
|
|
var validPkgs = dbContext.Packages
|
|
|
|
|
var validPkgs = (await dbContext.Packages
|
|
|
|
|
.Include(po => po.Owner)
|
|
|
|
|
.Include(pkg => pkg.Versions)
|
|
|
|
|
.Include(pkg => pkg.LatestVersion)
|
|
|
|
|
.ToList()
|
|
|
|
|
.ToArrayAsync())
|
|
|
|
|
.GroupBy((q) => q.Id);
|
|
|
|
|
// pkg.Versions.OrderByDescending(vi => vi.CommitNId).First().FullString
|
|
|
|
|
foreach (var pkgid in validPkgs)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder refid = new StringBuilder(bidreg);
|
|
|
|
|
refid.AppendFormat("{0}/",
|
|
|
|
|
pkgid.Key);
|
|
|
|
|
/* var pkgref = new PackageRef
|
|
|
|
|
{
|
|
|
|
|
Version = v.FullString,
|
|
|
|
|
LastCommit = v.LatestCommit,
|
|
|
|
|
CommitId = v.LatestCommit.CommitId,
|
|
|
|
|
CommitTimeStamp = v.LatestCommit.CommitTimeStamp,
|
|
|
|
|
RefId = refid.ToString(),
|
|
|
|
|
Id = v.PackageId,
|
|
|
|
|
RefType = v.LatestCommit.Action == PackageAction.PublishPackage
|
|
|
|
|
? "nuget:PackageDetails" :
|
|
|
|
|
"nuget:PackageDelete"
|
|
|
|
|
}; */
|
|
|
|
|
StringBuilder refid = new(bidreg);
|
|
|
|
|
refid.AppendFormat("{0}/", pkgid.Key);
|
|
|
|
|
foreach (var pkgv in pkgid)
|
|
|
|
|
page.AddVersionRange(pkgv.Versions);
|
|
|
|
|
}
|
|
|
|
@ -280,7 +258,7 @@ namespace isnd.Services
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IEnumerable<PackageVersion> GetCatalogLeaf(string pkgId, string semver=null, string pkgType=null)
|
|
|
|
|
public IEnumerable<PackageVersion> GetCatalogLeaf(string pkgId, string semver = null, string pkgType = null)
|
|
|
|
|
{
|
|
|
|
|
return dbContext.PackageVersions
|
|
|
|
|
.Include(v => v.Package)
|
|
|
|
@ -309,9 +287,9 @@ namespace isnd.Services
|
|
|
|
|
.Include(v => v.Package)
|
|
|
|
|
.Include(v => v.Package.Owner)
|
|
|
|
|
.Include(v => v.LatestCommit)
|
|
|
|
|
.Where(v => v.PackageId.Equals(pkgId, StringComparison.InvariantCultureIgnoreCase) && semver.Equals(v.FullString, StringComparison.InvariantCultureIgnoreCase)
|
|
|
|
|
.Where(v => v.PackageId == pkgId && semver == v.FullString
|
|
|
|
|
&& (pkgType == null || pkgType == v.Type))
|
|
|
|
|
.OrderByDescending(p=> p.CommitNId)
|
|
|
|
|
.OrderByDescending(p => p.CommitNId)
|
|
|
|
|
.Select(p => p.ToLeave(bid, extUrl))
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
@ -327,13 +305,12 @@ namespace isnd.Services
|
|
|
|
|
public async Task<RegistrationPageIndex> GetPackageRegistrationIndexAsync(RegistrationPageIndexQuery query)
|
|
|
|
|
{
|
|
|
|
|
// RegistrationPageIndexAndQuery
|
|
|
|
|
var scope = (await dbContext.Packages.Include(p => p.Versions).Include(p => p.Owner)
|
|
|
|
|
.ToListAsync()) .Where(p => MatchingExact(p, query));
|
|
|
|
|
var total = scope.Count();
|
|
|
|
|
var pkgs = scope.Skip(query.Skip).Take(query.Take).ToArray();
|
|
|
|
|
var scope = await dbContext.Packages.Include(p => p.Versions).Include(p => p.Owner)
|
|
|
|
|
.Where(p => MatchingExact(p, query)).Skip(query.Skip).Take(query.Take).ToListAsync();
|
|
|
|
|
|
|
|
|
|
string bid = $"{extUrl}v3.4.0/{ApiConfig.Registration}";
|
|
|
|
|
return
|
|
|
|
|
new RegistrationPageIndex(bid, query.Query, extUrl, pkgs);
|
|
|
|
|
new RegistrationPageIndex(bid, query.Query, extUrl, scope);
|
|
|
|
|
}
|
|
|
|
|
public async Task<RegistrationPageIndex> SearchPackageAsync(RegistrationPageIndexQuery query)
|
|
|
|
|
{
|
|
|
|
@ -342,25 +319,25 @@ namespace isnd.Services
|
|
|
|
|
if (query.Query == null) query.Query = "";
|
|
|
|
|
var scope = (await dbContext.Packages.Include(p => p.Versions).Include(p => p.Owner)
|
|
|
|
|
.ToListAsync())
|
|
|
|
|
.Where(p => Matching(p,query))
|
|
|
|
|
.Where(p => Matching(p, query))
|
|
|
|
|
;
|
|
|
|
|
var total = scope.Count();
|
|
|
|
|
var pkgs = scope.Skip(query.Skip).Take(query.Take);
|
|
|
|
|
var total = scope.Count();
|
|
|
|
|
var pkgs = scope.Skip(query.Skip).Take(query.Take);
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
new RegistrationPageIndex(bid, query.Query, extUrl, pkgs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static bool MatchingExact(Package p, RegistrationPageIndexQuery query)
|
|
|
|
|
private static bool MatchingExact(Package p, RegistrationPageIndexQuery query)
|
|
|
|
|
{
|
|
|
|
|
return
|
|
|
|
|
p.Id.Equals(query.Query, StringComparison.InvariantCultureIgnoreCase)
|
|
|
|
|
p.Id == query.Query
|
|
|
|
|
&& (query.Prerelease || p.Versions.Any(v => !v.IsPrerelease));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static bool Matching(Package p, RegistrationPageIndexQuery query)
|
|
|
|
|
{
|
|
|
|
|
return p.Id.StartsWith(query.Query, StringComparison.InvariantCultureIgnoreCase)
|
|
|
|
|
return p.Id.StartsWith(query.Query)
|
|
|
|
|
&& (query.Prerelease || p.Versions.Any(v => !v.IsPrerelease));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|