feat(dal, core, workloadBuilderWorker): Сервисы по работе с очередями (задачиами). Заготовка WorkloadBuilderWorker
This commit is contained in:
@@ -322,7 +322,8 @@ namespace PARR.DAL.Repositories.Base
|
||||
{
|
||||
logger.LogDebug("Начинаю создание объекта типа {EntityType}", typeof(T).Name);
|
||||
|
||||
obj.DateCreated = DateTimeOffset.UtcNow;
|
||||
if (obj.DateCreated == DateTimeOffset.MinValue)
|
||||
obj.DateCreated = DateTimeOffset.UtcNow;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.Core.Repositories.Interfaces.TaskRepositories;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Repositories.Base;
|
||||
using PARR.Domain.Constants;
|
||||
using PARR.Domain.Entities.TaskEntities;
|
||||
using PARR.Domain.Enums;
|
||||
|
||||
namespace PARR.DAL.Repositories.TaskRepositories
|
||||
{
|
||||
@@ -10,7 +13,27 @@ namespace PARR.DAL.Repositories.TaskRepositories
|
||||
{
|
||||
public TaskRepository(DataContext dataContext, ILogger<TaskRepository> logger) : base(logger, dataContext) { }
|
||||
|
||||
public async Task<int> TaskCaptureAsync(Guid taskId)
|
||||
{
|
||||
//var affectedRows = await EntityContext.Database.ExecuteSqlInterpolatedAsync($@"
|
||||
// UPDATE ""{DatabaseSchemas.Task}"".""Tasks""
|
||||
// SET ""{nameof(TaskItem.StatusCode)}""={(int)TaskItemStatusEnum.Processing},
|
||||
// ""{nameof(TaskItem.DateModified)}""={DateTimeOffset.UtcNow}
|
||||
// WHERE ""{nameof(TaskItem.Id)}""={taskId}
|
||||
// AND ""{nameof(TaskItem.StatusCode)}""={(int)TaskItemStatusEnum.Pending}
|
||||
//");
|
||||
|
||||
var sql = $@"
|
||||
UPDATE ""{DatabaseSchemas.Task}"".""Tasks""
|
||||
SET ""{nameof(TaskItem.StatusCode)}"" = {(int)TaskItemStatusEnum.Processing},
|
||||
""{nameof(TaskItem.DateModified)}"" = {{0}}
|
||||
WHERE ""{nameof(TaskItem.Id)}"" = {{1}}
|
||||
AND ""{nameof(TaskItem.StatusCode)}"" = {(int)TaskItemStatusEnum.Pending}";
|
||||
|
||||
var affectedRows = await EntityContext.Database.ExecuteSqlRawAsync(sql, DateTimeOffset.UtcNow, taskId);
|
||||
|
||||
return affectedRows;
|
||||
}
|
||||
|
||||
// метод атомарного взятия в работу
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user