add compile & test worker

This commit is contained in:
prixod
2025-10-24 23:46:51 +04:00
parent 3d854c3470
commit 6cead15a5f
19 changed files with 849 additions and 13 deletions

View File

@@ -0,0 +1,64 @@
using LiquidCode.Tester.Worker.Services;
using Microsoft.AspNetCore.Mvc;
namespace LiquidCode.Tester.Worker.Controllers;
[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
private readonly ITestingService _testingService;
private readonly ILogger<TestController> _logger;
public TestController(ITestingService testingService, ILogger<TestController> logger)
{
_testingService = testingService;
_logger = logger;
}
[HttpPost]
public async Task<IActionResult> Test([FromForm] TestRequest request)
{
_logger.LogInformation("Received test request for submit {SubmitId}", request.Id);
try
{
// Start testing in background
_ = Task.Run(async () =>
{
try
{
await _testingService.ProcessSubmitAsync(request);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error processing submit {SubmitId}", request.Id);
}
});
return Accepted(new { message = "Test request accepted", submitId = request.Id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to accept test request for submit {SubmitId}", request.Id);
return StatusCode(500, new { error = "Failed to accept test request", details = ex.Message });
}
}
[HttpGet("health")]
public IActionResult Health()
{
return Ok(new { status = "healthy", service = "cpp-worker", timestamp = DateTime.UtcNow });
}
}
public class TestRequest
{
public long Id { get; set; }
public long MissionId { get; set; }
public string Language { get; set; } = string.Empty;
public string LanguageVersion { get; set; } = string.Empty;
public string SourceCode { get; set; } = string.Empty;
public string CallbackUrl { get; set; } = string.Empty;
public IFormFile? Package { get; set; }
}