QueueJob - model and DB migration

This commit is contained in:
Michał Zieliski
2024-08-25 16:45:36 +02:00
parent adc3ba0c4b
commit ae266ed50e
9 changed files with 578 additions and 12 deletions

View File

@@ -26,7 +26,7 @@ public class LayersController : Controller
GoogleSheetsHelper googleSheetsHelper,
GoogleDriveHelper googleDriveHelper,
IConfiguration configuration
)
)
{
_db = db;
if (googleSheetsHelper.Service is not null)
@@ -182,6 +182,83 @@ public class LayersController : Controller
return Ok(true);
}
[HttpGet]
[Route("AutoImportWithQueue/{apiKey}")]
[AllowAnonymous]
public async Task<IActionResult> AutoImportWithQueue(string apiKey)
{
if (Request.Host.Value != _configuration["apiLocalUrl"] || apiKey != _configuration["apiKey"])
{
return Unauthorized();
}
var importWorkerLayers = _db.Layers
.Include(x => x.Records)
.Where(x =>
x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ImportWorker") &&
x.Records!.Any(y => y.Code == "IsEnabled" && y.Desc1 == "True")
)
.OrderBy(x => x.CreatedAt)
.ToList();
if (importWorkerLayers.Count == 0)
{
_logsController.AddEntry(new LogEntry
{
Title = "No Layers to import.",
Type = LogEntryType.Info,
LogType = LogType.Queue,
CreatedAt = DateTime.UtcNow
});
return Ok();
}
foreach (var importWorker in importWorkerLayers)
{
try
{
/*
await _queue.AddJob(new QueueJob
{
LayerId = importWorker.Id,
Type = JobType.ImportWorker,
});
*/
}
catch (Exception e)
{
_logsController.AddEntry(new LogEntry
{
Title = $"Error while adding job into queue (import): {importWorker.Name}, {importWorker.Id}",
Type = LogEntryType.Error,
LogType = LogType.Queue,
Message = e.ToString(),
CreatedAt = DateTime.UtcNow
});
}
}
return Ok();
}
[HttpGet]
[Route("ProcessQueue/{apiKey}")]
[AllowAnonymous]
public async Task<IActionResult> ProcessQueue(string apiKey)
{
/*
var allJobs = await _queue.GetJobs();
var importJobs = allJobs
.Where(x => x.Type == JobType.ImportWorker && x.Status == JobStatus.New);
foreach (var job in importJobs)
{
job.Attempts = job.Attempts + 1;
//await _queue.UpdateJob(job);
}
*/
return Ok();
}
[HttpGet]
[Route("AutoImport/{apiKey}")]
[AllowAnonymous]
@@ -200,8 +277,8 @@ public class LayersController : Controller
var importWorkerLayers = _db.Layers
.Include(x => x.Records)
.Where(x =>
x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ImportWorker") &&
x.Records!.Any(y => y.Code == "IsEnabled" && y.Desc1 == "True")
x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ImportWorker") &&
x.Records!.Any(y => y.Code == "IsEnabled" && y.Desc1 == "True")
)
.OrderBy(x => x.CreatedAt)
.ToList();
@@ -231,7 +308,7 @@ public class LayersController : Controller
var importer = new MorskaFk2Importer(_db, _googleSheetValues, this);
importer.Import(importWorker);
Thread.Sleep(5000); // be aware of GSheet API quota
_logsController.AddEntry(new LogEntry
{
Title = $"{importWorker.Name}, {importWorker.Id}",
@@ -665,9 +742,10 @@ public class LayersController : Controller
if (!double.TryParse(data[1][i].ToString(), CultureInfo.GetCultureInfo("pl-PL"),
out var value) ||
double.Abs((double)(record.Value1-value)!) < 0.01) continue;
double.Abs((double)(record.Value1 - value)!) < 0.01) continue;
isUpToDate = false;
}
foreach (var record in newestLayer.Records!)
{
if (data[0].Contains(record.Code))
@@ -678,6 +756,7 @@ public class LayersController : Controller
WriteToConsole($"Code not found in GoogleSheet: {record.Code}");
isUpToDate = false;
}
return isUpToDate;
}
}

View File

@@ -33,6 +33,7 @@ public class LogsController : Controller
LogType.Process => "Process",
LogType.PowerBi => "PowerBIAccess",
LogType.DataInbox => "DataInbox",
LogType.Queue => "Queue",
_ => "Other"
};
var response = _googleSheetValues.Get(_configuration["appLogsFile"], $"{type}!A:A").Execute();