feat(core,dal,domain,templateUpdater): Задания роботам выдаюстя с учетом подмены и множества переименований

This commit is contained in:
Mikhail Trubnikov
2026-07-29 16:31:50 +10:00
parent 7d5fb23daf
commit acdb6ec893
6 changed files with 4306 additions and 54 deletions

View File

@@ -299,46 +299,87 @@ namespace PARR.TemplateUpdater.Services
/// <returns></returns>
private async Task<bool> PrepareOldTemplateNameAsync(string oldName, string newName, Template template)
{
// Проверяем, не запущено ли уже переименование для этого шаблона
var alreadyPending = await _templateRenamePendingRepository.Get()
.AsNoTracking()
var existRenamePending = await _templateRenamePendingRepository.Get()
.FirstOrDefaultAsync(t => t.TemplateId == template.Id);
if (alreadyPending != null)
if (existRenamePending != null)
{
logger.LogError("При попытке переименования шаблона {TemplateId}, из '{OldName}' в '{NewName}', " +
"произошла ошибка, этот шаблон уже находится в процессе переименования (старое имя {PendingName})", template.Id, oldName, newName, alreadyPending.OldName);
return false;
logger.LogInformation(
"Найдено существующее задание на переименование шаблона {TemplateId}. " +
"Обновляю OldName с '{OriginalOldName}' на '{NewOldName}'.",
template.Id, existRenamePending.OldName, oldName);
// Подменяем имя шаблона
existRenamePending.OldName = oldName;
existRenamePending.DateModified = DateTimeOffset.UtcNow;
return true;
}
else
{
// Создаем запись
var pendingRename = new TemplateRenamePending
{
TemplateId = template.Id,
DateCreated = DateTimeOffset.UtcNow,
OldName = oldName
};
logger.LogInformation(
"Добавлен шаблон в таблицу ожидания переименования. TemplateId: {TemplateId}, OldName: '{OldName}', NewName: '{NewName}'.",
template.Id, oldName, newName);
var addResult = await _templateRenamePendingRepository.CreateAsync(pendingRename);
if (!addResult)
return false;
return true;
}
// Уникально ли имя в таблице ожидания переименования
var existPendingOldName = await _templateRenamePendingRepository.Get()
.AsNoTracking()
.FirstOrDefaultAsync(t => t.OldName == oldName);
#region Old
if (existPendingOldName != null)
{
logger.LogError("При добавлении старого имени в таблицу ожидания для шаблона {TemplateId} обнаружен конфликт: " +
"имя '{ExistOldName}' уже зарезервировано другим процессом для шаблона {ExistTemplateId}",
template.Id, existPendingOldName.OldName, existPendingOldName.TemplateId);
//// Проверяем, не запущено ли уже переименование для этого шаблона
//var alreadyPending = await _templateRenamePendingRepository.Get()
// .AsNoTracking()
// .FirstOrDefaultAsync(t => t.TemplateId == template.Id);
return false;
}
//if (alreadyPending != null)
//{
// logger.LogError("При попытке переименования шаблона {TemplateId}, из '{OldName}' в '{NewName}', " +
// "произошла ошибка, этот шаблон уже находится в процессе переименования (старое имя {PendingName})", template.Id, oldName, newName, alreadyPending.OldName);
// return false;
//}
// Все нормально, добавляем запись в таблицу
var pendingRename = new TemplateRenamePending
{
TemplateId = template.Id,
DateCreated = DateTimeOffset.UtcNow,
OldName = oldName,
Template = template
};
//// Уникально ли имя в таблице ожидания переименования
//var existPendingOldName = await _templateRenamePendingRepository.Get()
// .AsNoTracking()
// .FirstOrDefaultAsync(t => t.OldName == oldName);
var addResult = await _templateRenamePendingRepository.CreateAsync(pendingRename);
if (!addResult)
return false;
//if (existPendingOldName != null)
//{
// logger.LogError("При добавлении старого имени в таблицу ожидания для шаблона {TemplateId} обнаружен конфликт: " +
// "имя '{ExistOldName}' уже зарезервировано другим процессом для шаблона {ExistTemplateId}",
// template.Id, existPendingOldName.OldName, existPendingOldName.TemplateId);
return true;
// return false;
//}
//// Все нормально, добавляем запись в таблицу
//var pendingRename = new TemplateRenamePending
//{
// TemplateId = template.Id,
// DateCreated = DateTimeOffset.UtcNow,
// OldName = oldName,
// Template = template
//};
//var addResult = await _templateRenamePendingRepository.CreateAsync(pendingRename);
//if (!addResult)
// return false;
//return true;
#endregion
}
}
}