feat(unitFilter): Оптимизация фильрации юнитов. Проверка значений аттрибутов теперь выполняется в 2 запроса:

- проверяем доступные в базе значения
- проверяем наличие значений в юнитах по id значений
This commit is contained in:
Mikhail Kuznetsov
2026-07-28 16:34:04 +10:00
parent 556d895c7c
commit 343468cf71
11 changed files with 1529 additions and 281 deletions

View File

@@ -11,16 +11,18 @@ namespace PARR.DAL.Repositories.Unit
{
public UnitFieldValueRepository(DataContext dataContext, ILogger<UnitFieldValueRepository> logger) : base(logger, dataContext) { }
public async Task<UnitFieldValue?> GetByValueNameAsync(string? value)
public async Task<List<Guid>> FindValueIdsByMaskAsync(
string mask,
CancellationToken ct = default)
{
var query = EntitySet
.Include(v => v.FieldValues);
var query = EntitySet.AsNoTracking();
if (string.IsNullOrWhiteSpace(value))
return await query.FirstOrDefaultAsync(uf => uf.Value == null);
var valueIds = await query
.Where(v => EF.Functions.ILike(v.Value!, mask))
.Select(v => v.Id)
.ToListAsync(ct);
return await query.FirstOrDefaultAsync(uf => uf.Value!.ToLower().Trim() == value.ToLower().Trim());
return valueIds;
}
}
}