fix(generatorTemplates): добавлена дополнительная проверка, на сущестование в БД шаблонов с таким же именем.
This commit is contained in:
@@ -108,6 +108,11 @@ namespace PARR.GeneratorTemplates.Services
|
||||
|
||||
var templates = CreateQueryTemplates(groupingHosts, query);
|
||||
|
||||
//проверяем, что нет шаблонов с такими именами, исключаем их
|
||||
templates = await ExcludeExistTemplatesAsync(templates);
|
||||
if (!templates.Any())
|
||||
continue;
|
||||
|
||||
//заполняем NextRun
|
||||
templates = await templateDistributor.DistributeTemplateAsync(templates, appInWorkWg.Id, (Guid)group.Key!);
|
||||
|
||||
@@ -174,6 +179,27 @@ namespace PARR.GeneratorTemplates.Services
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Исключаем существующие шаблоны из запроса на создание
|
||||
/// </summary>
|
||||
/// <param name="templates"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<List<Template>> ExcludeExistTemplatesAsync(List<Template> templates)
|
||||
{
|
||||
// то ли костыль, то ли нет. Иногда попадают отфильтрованные шаблоны для создания, но они уже есть в БД. На всякий проверяем есть они или нет, и если есть, исключаем их из запроса.
|
||||
|
||||
// ищмем по имени такие шаблоны в БД и исключаем их
|
||||
var existTemplates = await templateService.Get().Where(t => templates.Select(x => x.Name).Any(x => x == t.Name)).ToListAsync();
|
||||
|
||||
if (existTemplates.Any())
|
||||
{
|
||||
existTemplates.ForEach(item => logger.LogWarning($"Исключаем из запроса на создание шаблон, так как он уже есть в БД: {item.Name}"));
|
||||
templates = templates.Where(t => !existTemplates.Any(x => x.Name == t.Name)).ToList();
|
||||
}
|
||||
|
||||
return templates;
|
||||
}
|
||||
|
||||
private List<Template> CreateQueryTemplates(List<Host> hosts, GeneratorTemplateMq query)
|
||||
{
|
||||
var templates = new List<Template>();
|
||||
|
||||
Reference in New Issue
Block a user