This commit is contained in:
2020-05-16 21:41:27 +00:00
parent 26fc7ed0e6
commit 933b5ce459
4 changed files with 55 additions and 51 deletions

View File

@@ -98,18 +98,18 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag)) if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag")); return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkAdd tag \"{tag}\" on {ayaType} ({idList.Count} specified)"; var JobName = $"Bulk operation: Add tag \"{tag}\" on {ayaType} ({idList.Count} specified)";
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
ayaType = ayaType,
idList = idList, idList = idList,
op = "bulk-add", op = "add-tag",
tag = tag tag = tag
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.Name = JobName; j.Name = JobName;
j.JobType = JobType.BulkTag; j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false; j.Exclusive = false;
j.JobInfo = o.ToString(); j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct); await JobsBiz.AddJobAsync(j, ct);
@@ -139,17 +139,17 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag)) if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag")); return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkAdd tag \"{tag}\" on any {ayaType}"; var JobName = $"Bulk operation: Add tag \"{tag}\" on any {ayaType}";
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
ayaType = ayaType, op = "add-any-tag",
op = "bulk-add-any",
tag = tag tag = tag
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.Name = JobName; j.Name = JobName;
j.JobType = JobType.BulkTag; j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false; j.Exclusive = false;
j.JobInfo = o.ToString(); j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct); await JobsBiz.AddJobAsync(j, ct);
@@ -181,18 +181,18 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag)) if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag")); return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkRemove tag \"{tag}\" from {ayaType} ({idList.Count} specified)"; var JobName = $"Bulk operation: Remove tag \"{tag}\" from {ayaType} ({idList.Count} specified)";
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
ayaType = ayaType,
idList = idList, idList = idList,
op = "bulk-remove", op = "remove-tag",
tag = tag tag = tag
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.Name = JobName; j.Name = JobName;
j.JobType = JobType.BulkTag; j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false; j.Exclusive = false;
j.JobInfo = o.ToString(); j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct); await JobsBiz.AddJobAsync(j, ct);
@@ -223,17 +223,17 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(tag)) if (string.IsNullOrWhiteSpace(tag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag")); return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "tag"));
var JobName = $"BulkRemove tag \"{tag}\" from any {ayaType}"; var JobName = $"Bulk operation: Remove tag \"{tag}\" from any {ayaType}";
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
ayaType = ayaType, op = "remove-any-tag",
op = "bulk-remove-any",
tag = tag tag = tag
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.Name = JobName; j.Name = JobName;
j.JobType = JobType.BulkTag; j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false; j.Exclusive = false;
j.JobInfo = o.ToString(); j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct); await JobsBiz.AddJobAsync(j, ct);
@@ -269,19 +269,19 @@ namespace AyaNova.Api.Controllers
toTag = TagBiz.NormalizeTag(toTag); toTag = TagBiz.NormalizeTag(toTag);
if (string.IsNullOrWhiteSpace(toTag)) if (string.IsNullOrWhiteSpace(toTag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "toTag")); return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "toTag"));
var JobName = $"BulkReplace tag \"{fromTag}\" with tag \"{toTag}\" on {ayaType} ({idList.Count} specified)"; var JobName = $"Bulk operation: Replace tag \"{fromTag}\" with tag \"{toTag}\" on {ayaType} ({idList.Count} specified)";
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
ayaType = ayaType,
idList = idList, idList = idList,
op = "bulk-replace", op = "replace-tag",
fromTag = fromTag, fromTag = fromTag,
toTag = toTag toTag = toTag
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.ObjectType = ayaType;
j.Name = JobName; j.Name = JobName;
j.JobType = JobType.BulkTag; j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false; j.Exclusive = false;
j.JobInfo = o.ToString(); j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct); await JobsBiz.AddJobAsync(j, ct);
@@ -316,18 +316,18 @@ namespace AyaNova.Api.Controllers
if (string.IsNullOrWhiteSpace(toTag)) if (string.IsNullOrWhiteSpace(toTag))
return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "toTag")); return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_REQUIRED, "toTag"));
var JobName = $"BulkReplace tag \"{fromTag}\" with tag \"{toTag}\" on any {ayaType}"; var JobName = $"Bulk operation: Replace tag \"{fromTag}\" with tag \"{toTag}\" on any {ayaType}";
JObject o = JObject.FromObject(new JObject o = JObject.FromObject(new
{ {
ayaType = ayaType, op = "replace-any-tag",
op = "bulk-replace-any",
fromTag = fromTag, fromTag = fromTag,
toTag = toTag toTag = toTag
}); });
OpsJob j = new OpsJob(); OpsJob j = new OpsJob();
j.Name = JobName; j.Name = JobName;
j.JobType = JobType.BulkTag; j.ObjectType = ayaType;
j.JobType = JobType.BulkCoreBizObjectOperation;
j.Exclusive = false; j.Exclusive = false;
j.JobInfo = o.ToString(); j.JobInfo = o.ToString();
await JobsBiz.AddJobAsync(j, ct); await JobsBiz.AddJobAsync(j, ct);

View File

@@ -11,7 +11,7 @@ namespace AyaNova.Biz
TestWidgetJob = 1,//test job for unit testing TestWidgetJob = 1,//test job for unit testing
CoreJobSweeper = 2, CoreJobSweeper = 2,
SeedTestData = 4, SeedTestData = 4,
BulkTag = 5 BulkCoreBizObjectOperation = 5
} }

View File

@@ -408,8 +408,8 @@ namespace AyaNova.Biz
case JobType.SeedTestData: case JobType.SeedTestData:
o = (IJobObject)BizObjectFactory.GetBizObject(AyaType.TrialSeeder, ct); o = (IJobObject)BizObjectFactory.GetBizObject(AyaType.TrialSeeder, ct);
break; break;
case JobType.BulkTag: case JobType.BulkCoreBizObjectOperation:
o = (IJobObject)TagBiz.GetBiz(ct); o = (IJobObject)BizObjectFactory.GetBizObject(job.ObjectType, ct);
break; break;
default: default:
throw new System.NotSupportedException($"ProcessJobAsync type {job.JobType.ToString()} is not supported"); throw new System.NotSupportedException($"ProcessJobAsync type {job.JobType.ToString()} is not supported");

View File

@@ -11,7 +11,7 @@ using System.Linq;
namespace AyaNova.Biz namespace AyaNova.Biz
{ {
internal class TagBiz : BizObject, IJobObject internal class TagBiz : BizObject//, IJobObject
{ {
internal TagBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles) internal TagBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
{ {
@@ -239,37 +239,41 @@ namespace AyaNova.Biz
#endregion utilities #endregion utilities
//Originally this whole object was just a simple utility class but was going to handle bulk tag jobs here so made it a full biz object
//keeping only in case I need to handle some job but in the end this could go back to a simple static utility class if it never pans out
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
//JOB / OPERATIONS //JOB / OPERATIONS
// //
public async Task HandleJobAsync(OpsJob job) // public async Task HandleJobAsync(OpsJob job)
{ // {
switch (job.JobType) // await Task.CompletedTask;
{ // switch (job.JobType)
case JobType.BulkTag: // {
await ProcessBulkJobAsync(job); // // case JobType.BulkCoreBizObjectOperation:
break; // // await ProcessBulkJobAsync(job);
default: // // break;
throw new System.ArgumentOutOfRangeException($"TagBiz.HandleJob-> Invalid job type{job.JobType.ToString()}"); // default:
} // throw new System.ArgumentOutOfRangeException($"TagBiz.HandleJob-> Invalid job type{job.JobType.ToString()}");
} // }
// }
private async Task ProcessBulkJobAsync(OpsJob job) // private async Task ProcessBulkJobAsync(OpsJob job)
{ // {
//Simulate a long running job here // //Simulate a long running job here
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running, ct); // await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Running, ct);
await JobsBiz.LogJobAsync(job.GId, $"Tag::BulkJob started...", ct); // await JobsBiz.LogJobAsync(job.GId, $"Tag::BulkJob started...", ct);
//get XBiz for type specified // //get XBiz for type specified
//use XBiz to call get then update then save // //use XBiz to call get then update then save
//ideally don't have a huge switch statement with identical code for each object // //ideally don't have a huge switch statement with identical code for each object
await JobsBiz.LogJobAsync(job.GId, "Tag::BulkJob completed", ct);
await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed, ct);
} // await JobsBiz.LogJobAsync(job.GId, "Tag::BulkJob completed", ct);
// await JobsBiz.UpdateJobStatusAsync(job.GId, JobStatus.Completed, ct);
// }