change JobTask to SiteTask

This commit is contained in:
sbwalker
2026-02-19 10:47:30 -05:00
parent 0fd97d34d9
commit 060eaa7aff
19 changed files with 197 additions and 160 deletions

View File

@@ -4,7 +4,7 @@ using Oqtane.Models;
namespace Oqtane.Infrastructure
{
public interface IJobTask
public interface ISiteTask
{
string ExecuteTask(IServiceProvider provider, Site site, string parameters);

View File

@@ -33,6 +33,7 @@ namespace Oqtane.Infrastructure
var visitorRepository = provider.GetRequiredService<IVisitorRepository>();
var notificationRepository = provider.GetRequiredService<INotificationRepository>();
var urlMappingRepository = provider.GetRequiredService<IUrlMappingRepository>();
var siteTaskRepository = provider.GetRequiredService<ISiteTaskRepository>();
// iterate through sites for current tenant
List<Site> sites = siteRepository.GetSites().ToList();
@@ -94,6 +95,18 @@ namespace Oqtane.Infrastructure
{
log += $"Error Purging Broken Urls - {ex.Message}<br />";
}
// purge completed site tasks
retention = 30; // 30 day default
try
{
count = siteTaskRepository.DeleteSiteTasks(site.SiteId, retention);
log += count.ToString() + " Completed Tasks Purged<br />";
}
catch (Exception ex)
{
log += $"Error Purging Completed Site Tasks - {ex.Message}<br />";
}
}
return log;

View File

@@ -7,11 +7,11 @@ using Oqtane.Repository;
namespace Oqtane.Infrastructure
{
public class TaskJob : HostedServiceBase
public class SiteTaskJob : HostedServiceBase
{
public TaskJob(IServiceScopeFactory serviceScopeFactory) : base(serviceScopeFactory)
public SiteTaskJob(IServiceScopeFactory serviceScopeFactory) : base(serviceScopeFactory)
{
Name = "Task Job";
Name = "Site Task Job";
Frequency = "m"; // run every minute
Interval = 1;
IsEnabled = true;
@@ -33,8 +33,8 @@ namespace Oqtane.Infrastructure
log += $"Processing Site: {site.Name}<br />";
// get incomplete tasks for site
var jobTaskRepository = provider.GetRequiredService<IJobTaskRepository>();
var tasks = jobTaskRepository.GetJobTasks(site.SiteId).ToList();
var siteTaskRepository = provider.GetRequiredService<ISiteTaskRepository>();
var tasks = siteTaskRepository.GetSiteTasks(site.SiteId).ToList();
if (tasks != null && tasks.Any())
{
foreach (var task in tasks)
@@ -42,15 +42,15 @@ namespace Oqtane.Infrastructure
log += $"Executing Task: {task.Name}<br />";
Type taskType = Type.GetType(task.Type);
if (taskType != null && taskType.GetInterface(nameof(IJobTask)) != null)
if (taskType != null && taskType.GetInterface(nameof(ISiteTask)) != null)
{
try
{
tenantManager.SetAlias(tenant.TenantId, site.SiteId);
var taskObject = ActivatorUtilities.CreateInstance(provider, taskType);
var taskLog = ((IJobTask)taskObject).ExecuteTask(provider, site, task.Parameters);
taskLog += await ((IJobTask)taskObject).ExecuteTaskAsync(provider, site, task.Parameters);
var taskLog = ((ISiteTask)taskObject).ExecuteTask(provider, site, task.Parameters);
taskLog += await ((ISiteTask)taskObject).ExecuteTaskAsync(provider, site, task.Parameters);
task.Status = taskLog;
}
@@ -66,7 +66,7 @@ namespace Oqtane.Infrastructure
// update task
task.IsCompleted = true;
jobTaskRepository.UpdateJobTask(task);
siteTaskRepository.UpdateSiteTask(task);
log += task.Status + "<br />";
}

View File

@@ -8,7 +8,7 @@ using Oqtane.Repository;
namespace Oqtane.Infrastructure
{
public class GlobalReplaceTask : JobTaskBase
public class GlobalReplaceTask : SiteTaskBase
{
public override string ExecuteTask(IServiceProvider provider, Site site, string parameters)
{

View File

@@ -7,7 +7,7 @@ using Oqtane.Repository;
namespace Oqtane.Infrastructure
{
public class ImportUsersTask : JobTaskBase
public class ImportUsersTask : SiteTaskBase
{
public override async Task<string> ExecuteTaskAsync(IServiceProvider provider, Site site, string parameters)
{

View File

@@ -4,7 +4,7 @@ using Oqtane.Models;
namespace Oqtane.Infrastructure
{
public class JobTaskBase : IJobTask
public class SiteTaskBase : ISiteTask
{
public virtual string ExecuteTask(IServiceProvider provider, Site site, string parameters)
{