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