replace Task.Run() logic in SiteService with async SiteRepository methods

This commit is contained in:
sbwalker
2024-02-27 15:12:48 -05:00
parent e2182344a2
commit e7157a8528
4 changed files with 99 additions and 31 deletions

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Oqtane.Models;
namespace Oqtane.Repository
@ -6,11 +7,17 @@ namespace Oqtane.Repository
public interface ISiteRepository
{
IEnumerable<Site> GetSites();
Task<IEnumerable<Site>> GetSitesAsync();
Site AddSite(Site site);
Task<Site> AddSiteAsync(Site site);
Site UpdateSite(Site site);
Task<Site> UpdateSiteAsync(Site site);
Site GetSite(int siteId);
Task<Site> GetSiteAsync(int siteId);
Site GetSite(int siteId, bool tracking);
Task<Site> GetSiteAsync(int siteId, bool tracking);
void DeleteSite(int siteId);
Task DeleteSiteAsync(int siteId);
void InitializeSite(Alias alias);
void CreatePages(Site site, List<PageTemplate> pageTemplates, Alias alias);
}

View File

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@ -52,17 +53,29 @@ namespace Oqtane.Repository
public IEnumerable<Site> GetSites()
{
return _db.Site;
return _db.Site.OrderBy(item => item.Name);
}
public async Task<IEnumerable<Site>> GetSitesAsync()
{
return await _db.Site.OrderBy(item => item.Name).ToListAsync();
}
public Site AddSite(Site site)
{
site.SiteGuid = System.Guid.NewGuid().ToString();
site.SiteGuid = Guid.NewGuid().ToString();
_db.Site.Add(site);
_db.SaveChanges();
CreateSite(site);
return site;
}
public async Task<Site> AddSiteAsync(Site site)
{
site.SiteGuid = Guid.NewGuid().ToString();
_db.Site.Add(site);
await _db.SaveChangesAsync();
CreateSite(site);
return site;
}
public Site UpdateSite(Site site)
{
@ -70,11 +83,21 @@ namespace Oqtane.Repository
_db.SaveChanges();
return site;
}
public async Task<Site> UpdateSiteAsync(Site site)
{
_db.Entry(site).State = EntityState.Modified;
await _db.SaveChangesAsync();
return site;
}
public Site GetSite(int siteId)
{
return GetSite(siteId, true);
}
public async Task<Site> GetSiteAsync(int siteId)
{
return await GetSiteAsync(siteId, true);
}
public Site GetSite(int siteId, bool tracking)
{
@ -87,6 +110,17 @@ namespace Oqtane.Repository
return _db.Site.AsNoTracking().FirstOrDefault(item => item.SiteId == siteId);
}
}
public async Task<Site> GetSiteAsync(int siteId, bool tracking)
{
if (tracking)
{
return await _db.Site.FindAsync(siteId);
}
else
{
return await _db.Site.AsNoTracking().FirstOrDefaultAsync(item => item.SiteId == siteId);
}
}
public void DeleteSite(int siteId)
{
@ -94,6 +128,12 @@ namespace Oqtane.Repository
_db.Site.Remove(site);
_db.SaveChanges();
}
public async Task DeleteSiteAsync(int siteId)
{
var site = await _db.Site.FindAsync(siteId);
_db.Site.Remove(site);
_db.SaveChanges();
}
public void InitializeSite(Alias alias)
{