feat(api): UnitFieldValueController - GetAll ускорение запроса
This commit is contained in:
@@ -24,14 +24,17 @@ namespace PARR.API.Controllers.V1
|
|||||||
{
|
{
|
||||||
private readonly IMapper mapper;
|
private readonly IMapper mapper;
|
||||||
private readonly IUnitFieldValueService unitFieldValueService;
|
private readonly IUnitFieldValueService unitFieldValueService;
|
||||||
|
private readonly IUnitInValueService unitInValueService;
|
||||||
|
|
||||||
public UnitFieldValueController(
|
public UnitFieldValueController(
|
||||||
IMapper mapper,
|
IMapper mapper,
|
||||||
IUnitFieldValueService unitFieldValueService
|
IUnitFieldValueService unitFieldValueService,
|
||||||
|
IUnitInValueService unitInValueService
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.mapper = mapper;
|
this.mapper = mapper;
|
||||||
this.unitFieldValueService = unitFieldValueService;
|
this.unitFieldValueService = unitFieldValueService;
|
||||||
|
this.unitInValueService = unitInValueService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -44,14 +47,22 @@ namespace PARR.API.Controllers.V1
|
|||||||
{
|
{
|
||||||
var paginationFilter = mapper.Map<PaginationFilter>(paginationQuery);
|
var paginationFilter = mapper.Map<PaginationFilter>(paginationQuery);
|
||||||
|
|
||||||
IQueryable<UnitFieldValue> query = unitFieldValueService.Get()
|
//IQueryable<UnitFieldValue> query = unitFieldValueService.Get()
|
||||||
.Where(t => t.UnitInValues.Any(t => t.FieldId == fieldId))
|
// .Where(t => t.UnitInValues.Any(t => t.FieldId == fieldId))
|
||||||
.OrderBy(t => t.Value);
|
// .OrderBy(t => t.Value);
|
||||||
|
|
||||||
|
IQueryable<UnitFieldValue> query = unitInValueService.Get()
|
||||||
|
.Where(t => t.FieldId == fieldId)
|
||||||
|
.Select(t => t.Value)
|
||||||
|
.Distinct()
|
||||||
|
.OrderBy(t => t!.Value);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(filter.Mask))
|
if (!string.IsNullOrEmpty(filter.Mask))
|
||||||
query = query.Where(t => EF.Functions.Like(t.Value!.ToLower(), SqlHelpers.RegexToLike(filter.Mask)));
|
query = query.Where(t => EF.Functions.Like(t.Value!.ToLower(), SqlHelpers.RegexToLike(filter.Mask)));
|
||||||
|
|
||||||
var fieldValues = await unitFieldValueService.GetPage(query, paginationFilter).ToListAsync();
|
var fieldValuesQuery = unitFieldValueService.GetPage(query, paginationFilter);
|
||||||
|
|
||||||
|
var fieldValues = await fieldValuesQuery.ToListAsync();
|
||||||
|
|
||||||
if (!fieldValues.Any())
|
if (!fieldValues.Any())
|
||||||
return NoContent();
|
return NoContent();
|
||||||
|
|||||||
Reference in New Issue
Block a user