feat(core): Рефакторинг ShortcodesService, реализован паттерн стратегия
This commit is contained in:
@@ -20,26 +20,27 @@ namespace PARR.DAL.Repositories.Unit
|
||||
this.dataContext = dataContext;
|
||||
}
|
||||
|
||||
public async Task<List<UnitInValue>> GetByUnitIdAsync(Guid unitId)
|
||||
public async Task<List<UnitInValue>> GetByUnitIdAsync(Guid unitId, CancellationToken ct = default)
|
||||
{
|
||||
return await dataContext.UnitInValues.AsNoTracking()
|
||||
.Include(t => t.Value)
|
||||
.Where(uv => uv.UnitId == unitId)
|
||||
.ToListAsync();
|
||||
.ToListAsync(ct);
|
||||
}
|
||||
|
||||
public async Task<List<UnitInValue>> GetByUnitIdsAsync(IEnumerable<Guid> unitIds)
|
||||
public async Task<List<UnitInValue>> GetByUnitIdsAsync(IEnumerable<Guid> unitIds, CancellationToken ct = default)
|
||||
{
|
||||
return await dataContext.UnitInValues.AsNoTracking()
|
||||
.Include(t => t.Value)
|
||||
.Where(uv => unitIds.Contains(uv.UnitId))
|
||||
.ToListAsync();
|
||||
.ToListAsync(ct);
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<(string FieldName, string? Value)>> GetFieldValuesAsync(
|
||||
Guid unitId,
|
||||
IReadOnlyCollection<string> aihitNames)
|
||||
IReadOnlyCollection<string> aihitNames
|
||||
, CancellationToken ct = default)
|
||||
{
|
||||
if (aihitNames == null || aihitNames.Count == 0)
|
||||
return new List<(string, string?)>();
|
||||
@@ -52,7 +53,7 @@ namespace PARR.DAL.Repositories.Unit
|
||||
&& uiv.Value != null
|
||||
&& aihitNames.Contains(uiv.Field.AihitName.ToUpper()))
|
||||
.Select(uiv => new { Key = uiv.Field!.AihitName.ToUpper(), Value = uiv.Value!.Value })
|
||||
.ToListAsync();
|
||||
.ToListAsync(ct);
|
||||
|
||||
// Журналируем если не нашли поля
|
||||
var foundFieldNames = keyValuePairs.Select(kvp => kvp.Key).ToHashSet(StringComparer.OrdinalIgnoreCase);
|
||||
@@ -69,7 +70,7 @@ namespace PARR.DAL.Repositories.Unit
|
||||
}
|
||||
|
||||
|
||||
public async Task<List<UnitInValue>> GetByUnitIdsAndFieldIdsAsync(IEnumerable<Guid> unitIds, IEnumerable<Guid> fieldIds)
|
||||
public async Task<List<UnitInValue>> GetByUnitIdsAndFieldIdsAsync(IEnumerable<Guid> unitIds, IEnumerable<Guid> fieldIds, CancellationToken ct = default)
|
||||
{
|
||||
var unitIdSet = unitIds.ToHashSet();
|
||||
var fieldIdSet = fieldIds.ToHashSet();
|
||||
@@ -78,7 +79,7 @@ namespace PARR.DAL.Repositories.Unit
|
||||
.AsNoTracking()
|
||||
.Include(uv => uv.Value)
|
||||
.Where(uv => unitIdSet.Contains(uv.UnitId) && fieldIdSet.Contains(uv.FieldId))
|
||||
.ToListAsync();
|
||||
.ToListAsync(ct);
|
||||
}
|
||||
|
||||
public IQueryable<UnitInValue> Get()
|
||||
@@ -86,7 +87,7 @@ namespace PARR.DAL.Repositories.Unit
|
||||
return dataContext.UnitInValues;
|
||||
}
|
||||
|
||||
public async Task<string?> GetMostFrequentValueForFieldAsync(List<Guid> unitIds, string fieldName)
|
||||
public async Task<string?> GetMostFrequentValueForFieldAsync(List<Guid> unitIds, string fieldName, CancellationToken ct)
|
||||
{
|
||||
if (unitIds == null || !unitIds.Any() || string.IsNullOrWhiteSpace(fieldName))
|
||||
{
|
||||
@@ -121,7 +122,7 @@ namespace PARR.DAL.Repositories.Unit
|
||||
.Select(g => new { Value = g.Key, Count = g.Count() })
|
||||
.OrderByDescending(x => x.Count)
|
||||
.ThenBy(x => x.Value)
|
||||
.FirstOrDefaultAsync();
|
||||
.FirstOrDefaultAsync(ct);
|
||||
|
||||
var mostFrequentValue = result?.Value;
|
||||
logger.LogDebug("Наиболее частое значение для поля '{FieldName}': {Value}", fieldName, mostFrequentValue);
|
||||
@@ -131,16 +132,6 @@ namespace PARR.DAL.Repositories.Unit
|
||||
|
||||
public IQueryable<Guid> GetMatchingTargetIds(Guid fieldId, string valueMask)
|
||||
{
|
||||
//TODO: Вынесено из UnitFilterService
|
||||
|
||||
//var matchingTargetIds = await unitInValueService.Get()
|
||||
// .AsNoTracking()
|
||||
// .Where(uiv => uiv.FieldId == relFilter.FieldId)
|
||||
// .Where(uiv => EF.Functions.ILike(uiv.Value.Value, dbValueMask))
|
||||
// .Select(uiv => uiv.UnitId)
|
||||
// .Distinct()
|
||||
// .ToListAsync(cancellationToken);
|
||||
|
||||
return Get()
|
||||
.AsNoTracking()
|
||||
.Where(uiv => uiv.FieldId == fieldId)
|
||||
@@ -152,4 +143,3 @@ namespace PARR.DAL.Repositories.Unit
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user