optimize package update queries
This commit is contained in:
parent
417c8d7874
commit
bdd1ba05e8
|
@ -37,7 +37,7 @@ else
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<Pager Items="@_moduleDefinitions.Where(item => item.Categories.Contains(_category))">
|
||||
<Pager Items="@_moduleDefinitions">
|
||||
<Header>
|
||||
<th style="width: 1px;"> </th>
|
||||
<th style="width: 1px;"> </th>
|
||||
|
@ -99,6 +99,7 @@ else
|
|||
}
|
||||
|
||||
@code {
|
||||
private List<ModuleDefinition> _allModuleDefinitions;
|
||||
private List<ModuleDefinition> _moduleDefinitions;
|
||||
private List<Package> _packages;
|
||||
private List<string> _categories = new List<string>();
|
||||
|
@ -110,9 +111,9 @@ else
|
|||
{
|
||||
try
|
||||
{
|
||||
_moduleDefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId);
|
||||
_packages = await PackageService.GetPackagesAsync("module");
|
||||
_categories = _moduleDefinitions.SelectMany(m => m.Categories.Split(',')).Distinct().ToList();
|
||||
_allModuleDefinitions = await ModuleDefinitionService.GetModuleDefinitionsAsync(PageState.Site.SiteId);
|
||||
_categories = _allModuleDefinitions.SelectMany(m => m.Categories.Split(',')).Distinct().ToList();
|
||||
await LoadModuleDefinitions();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -124,6 +125,12 @@ else
|
|||
}
|
||||
}
|
||||
|
||||
private async Task LoadModuleDefinitions()
|
||||
{
|
||||
_moduleDefinitions = _allModuleDefinitions.Where(item => item.Categories.Contains(_category)).ToList();
|
||||
_packages = await PackageService.GetPackagesAsync(_moduleDefinitions.Select(item => item.PackageName).ToList());
|
||||
}
|
||||
|
||||
private string PurchaseLink(string packagename)
|
||||
{
|
||||
string link = "";
|
||||
|
@ -205,9 +212,9 @@ else
|
|||
}
|
||||
}
|
||||
|
||||
private void CategoryChanged(ChangeEventArgs e)
|
||||
private async Task CategoryChanged(ChangeEventArgs e)
|
||||
{
|
||||
_category = (string)e.Value;
|
||||
StateHasChanged();
|
||||
await LoadModuleDefinitions();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -79,7 +79,7 @@ else
|
|||
try
|
||||
{
|
||||
_themes = await ThemeService.GetThemesAsync();
|
||||
_packages = await PackageService.GetPackagesAsync("theme");
|
||||
_packages = await PackageService.GetPackagesAsync(_themes.Select(item => item.PackageName).ToList());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
|
@ -38,6 +38,13 @@ namespace Oqtane.Services
|
|||
/// <returns></returns>
|
||||
Task<List<Package>> GetPackagesAsync(string type, string search, string price, string package, string sort);
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of packages matching the list of package names
|
||||
/// </summary>
|
||||
/// <param name="names"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<Package>> GetPackagesAsync(List<string> packagenames);
|
||||
|
||||
/// <summary>
|
||||
/// Returns a specific package
|
||||
/// </summary>
|
||||
|
|
|
@ -31,6 +31,11 @@ namespace Oqtane.Services
|
|||
return await GetJsonAsync<List<Package>>($"{Apiurl}?type={type}&search={WebUtility.UrlEncode(search)}&price={price}&package={package}&sort={sort}");
|
||||
}
|
||||
|
||||
public async Task<List<Package>> GetPackagesAsync(List<string> packagenames)
|
||||
{
|
||||
return await GetJsonAsync<List<Package>>($"{Apiurl}/list/?names={string.Join(",", packagenames)}");
|
||||
}
|
||||
|
||||
public async Task<Package> GetPackageAsync(string packageId, string version)
|
||||
{
|
||||
return await PostJsonAsync<Package>($"{Apiurl}?packageid={packageId}&version={version}", null);
|
||||
|
|
|
@ -51,6 +51,25 @@ namespace Oqtane.Controllers
|
|||
return packages;
|
||||
}
|
||||
|
||||
// GET: api/<controller>/list/?names=x,y,z
|
||||
[HttpGet("list")]
|
||||
public async Task<IEnumerable<Package>> GetPackages(string names)
|
||||
{
|
||||
// get packages
|
||||
List<Package> packages = new List<Package>();
|
||||
var url = _configManager.GetSetting("PackageRegistryUrl", Constants.PackageRegistryUrl);
|
||||
if (!string.IsNullOrEmpty(url) && !string.IsNullOrEmpty(names))
|
||||
{
|
||||
using (var client = new HttpClient())
|
||||
{
|
||||
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
|
||||
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
|
||||
packages = await GetJson<List<Package>>(client, url + $"/api/registry/list/?id={_configManager.GetInstallationId()}&version={Constants.Version}&list={names}");
|
||||
}
|
||||
}
|
||||
return packages;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Authorize(Roles = RoleNames.Host)]
|
||||
public async Task<Package> Post(string packageid, string version, string folder)
|
||||
|
|
Loading…
Reference in New Issue
Block a user