From 6a65a7f6261969f060927be7fc8bc5fc4f76067e Mon Sep 17 00:00:00 2001 From: Timothy Baldridge Date: Wed, 15 Apr 2020 16:12:06 -0600 Subject: [PATCH] Fixes for jobs --- .../Models/Sql/SqlService.cs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Wabbajack.BuildServer/Models/Sql/SqlService.cs b/Wabbajack.BuildServer/Models/Sql/SqlService.cs index 6fa5b2a4..c49a76c9 100644 --- a/Wabbajack.BuildServer/Models/Sql/SqlService.cs +++ b/Wabbajack.BuildServer/Models/Sql/SqlService.cs @@ -204,14 +204,14 @@ namespace Wabbajack.BuildServer.Model.Models new { job.Id, Success = job.Result.ResultType == JobResultType.Success, - ResultContent = job.Result.ToJson() + ResultContent = job.Result }); if (job.OnSuccess != null) await EnqueueJob(job.OnSuccess); } - + /// /// Get a Job from the Job queue to run. /// @@ -219,16 +219,24 @@ namespace Wabbajack.BuildServer.Model.Models public async Task GetJob() { await using var conn = await Open(); - var result = await conn.QueryAsync( + var result = await conn.QueryAsync<(long, DateTime, DateTime, DateTime, AJobPayload, int)>( @"UPDATE jobs SET Started = GETDATE(), RunBy = @RunBy WHERE ID in (SELECT TOP(1) ID FROM Jobs WHERE Started is NULL AND PrimaryKeyString NOT IN (SELECT PrimaryKeyString from jobs WHERE Started IS NOT NULL and Ended IS NULL) ORDER BY Priority DESC, Created); - SELECT TOP(1) * FROM jobs WHERE RunBy = @RunBy ORDER BY Started DESC", + SELECT TOP(1) Id, Started, Ended, Created, Payload, Priority FROM jobs WHERE RunBy = @RunBy ORDER BY Started DESC", new {RunBy = Guid.NewGuid().ToString()}); - return result.FirstOrDefault(); - } + return result.Select(k => + new Job { + Id = k.Item1, + Started = k.Item2, + Ended = k.Item3, + Created = k.Item4, + Payload = k.Item5, + Priority = (Job.JobPriority)k.Item6 + }).FirstOrDefault(); + } public async Task> GetRunningJobs() @@ -260,6 +268,8 @@ namespace Wabbajack.BuildServer.Model.Models SqlMapper.AddTypeHandler(new RelativePathMapper()); SqlMapper.AddTypeHandler(new JsonMapper()); SqlMapper.AddTypeHandler(new JsonMapper()); + SqlMapper.AddTypeHandler(new JsonMapper()); + SqlMapper.AddTypeHandler(new JsonMapper()); } public class JsonMapper : SqlMapper.TypeHandler