diff --git a/API/Controllers/JobController.cs b/API/Controllers/JobController.cs
index a469c12..260cc53 100644
--- a/API/Controllers/JobController.cs
+++ b/API/Controllers/JobController.cs
@@ -189,6 +189,39 @@ public class JobController(PgsqlContext context) : Controller
}
}
+ ///
+ /// Modify Job with ID
+ ///
+ /// Job-ID
+ /// Fields to modify, set to null to keep previous value
+ /// Job modified
+ /// Malformed request
+ /// Job with ID not found
+ /// Internal Error
+ [HttpPatch("{id}/")]
+ [ProducesResponseType(Status202Accepted)]
+ [ProducesResponseType(Status400BadRequest)]
+ [ProducesResponseType(Status404NotFound)]
+ [ProducesResponseType(Status500InternalServerError)]
+ public IActionResult ModifyJob(string id, [FromBody]ModifyJobRecord modifyJobRecord)
+ {
+ try
+ {
+ Job? ret = context.Jobs.Find(id);
+ if(ret is null)
+ return NotFound();
+
+ ret.RecurrenceMs = modifyJobRecord.RecurrenceMs ?? ret.RecurrenceMs;
+
+ context.SaveChanges();
+ return new AcceptedResult(ret.JobId, ret);
+ }
+ catch (Exception e)
+ {
+ return StatusCode(500, e.Message);
+ }
+ }
+
///
/// Starts the Job with the requested ID
///
@@ -198,10 +231,10 @@ public class JobController(PgsqlContext context) : Controller
/// Job was already running
/// Internal Error
[HttpPost("{id}/Start")]
- [ProducesResponseType(Status202Accepted)]
- [ProducesResponseType(Status404NotFound)]
- [ProducesResponseType(Status409Conflict)]
- [ProducesResponseType(Status500InternalServerError)]
+ [ProducesResponseType(Status202Accepted)]
+ [ProducesResponseType(Status404NotFound)]
+ [ProducesResponseType(Status409Conflict)]
+ [ProducesResponseType(Status500InternalServerError)]
public IActionResult StartJob(string id)
{
Job? ret = context.Jobs.Find(id);
@@ -230,13 +263,14 @@ public class JobController(PgsqlContext context) : Controller
/// Job was not running
/// Internal Error
/// NOT IMPLEMENTED
- [ProducesResponseType(Status202Accepted)]
- [ProducesResponseType(Status404NotFound)]
- [ProducesResponseType(Status409Conflict)]
- [ProducesResponseType(Status500InternalServerError)]
+ [ProducesResponseType(Status202Accepted)]
+ [ProducesResponseType(Status404NotFound)]
+ [ProducesResponseType(Status409Conflict)]
+ [ProducesResponseType(Status500InternalServerError)]
[HttpPost("{id}/Stop")]
public IActionResult StopJob(string id)
{
- return NotFound(new ProblemResponse("Not implemented")); //TODO
+ throw new NotImplementedException();
+ return NotFound(new ProblemResponse("Not implemented"));
}
}
\ No newline at end of file
diff --git a/API/ModifyJobRecord.cs b/API/ModifyJobRecord.cs
new file mode 100644
index 0000000..4c9a476
--- /dev/null
+++ b/API/ModifyJobRecord.cs
@@ -0,0 +1,3 @@
+namespace API;
+
+public record ModifyJobRecord(ulong? RecurrenceMs);
\ No newline at end of file