feat(unitFilter): Оптимизация фильрации юнитов. Проверка значений аттрибутов теперь выполняется в 2 запроса:
- проверяем доступные в базе значения - проверяем наличие значений в юнитах по id значений
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user