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