Поиск Done

This commit is contained in:
romai 2024-12-12 00:44:42 +04:00
parent 0717772516
commit b80493698a
6 changed files with 37 additions and 2 deletions

View File

@ -9,5 +9,7 @@ namespace Domain.Repository
Task AddAsync(City city); Task AddAsync(City city);
Task UpdateAsync(City city); Task UpdateAsync(City city);
Task DeleteAsync(City city); Task DeleteAsync(City city);
} }
} }

View File

@ -9,5 +9,8 @@ namespace Domain.Repository
Task AddAsync(Street street); Task AddAsync(Street street);
Task UpdateAsync(Street street); Task UpdateAsync(Street street);
Task DeleteAsync(Street street); Task DeleteAsync(Street street);
//Фичи
Task<List<Street>> SearchAsync(string query);
} }
} }

View File

@ -37,6 +37,14 @@ namespace Persistence.Repositories
.FirstOrDefaultAsync(s => s.Id == id); .FirstOrDefaultAsync(s => s.Id == id);
} }
public async Task<List<Street>> SearchAsync(string query)
{
return await _dbContext.Streets
.Where(s => s.Name.Contains(query))
.OrderBy(s => s.Name)
.ToListAsync();
}
public async Task UpdateAsync(Street street) public async Task UpdateAsync(Street street)
{ {
_dbContext.Streets.Update(street); _dbContext.Streets.Update(street);

View File

@ -1,4 +1,5 @@
using Contracts; using Contracts;
using Domain.Entities;
namespace Services.Abstractions namespace Services.Abstractions
{ {
@ -9,5 +10,8 @@ namespace Services.Abstractions
Task<StreetDto> CreateAsync(StreetDtoForCreate streetDto); Task<StreetDto> CreateAsync(StreetDtoForCreate streetDto);
Task UpdateAsync(Guid streetId, StreetDtoForUpdate street); Task UpdateAsync(Guid streetId, StreetDtoForUpdate street);
Task DeleteAsync(Guid streetId); Task DeleteAsync(Guid streetId);
//Фичи
Task<List<StreetDto>> SearchAsync(string query);
} }
} }

View File

@ -53,6 +53,16 @@ namespace Services
return _mapper.Map<StreetDto>(street); return _mapper.Map<StreetDto>(street);
} }
public async Task<List<StreetDto>> SearchAsync(string query)
{
if (query == null)
{
throw new KeyNotFoundException("Query cannot be empty");
}
var streets = await _streetRepository.SearchAsync(query);
return _mapper.Map<List<StreetDto>>(streets);
}
public async Task UpdateAsync(Guid streetId, StreetDtoForUpdate streetDto) public async Task UpdateAsync(Guid streetId, StreetDtoForUpdate streetDto)
{ {
var street = await _streetRepository.GetByIdAsync(streetId); var street = await _streetRepository.GetByIdAsync(streetId);

View File

@ -16,8 +16,8 @@ namespace Web.Controllers
[HttpGet] [HttpGet]
public async Task<IActionResult> GetAllAsync() public async Task<IActionResult> GetAllAsync()
{ {
var cities = await _streetService.GetAllAsync(); var steets = await _streetService.GetAllAsync();
return Ok(cities); return Ok(steets);
} }
[HttpGet("{id:guid}")] [HttpGet("{id:guid}")]
public async Task<IActionResult> GetByIdAsync(Guid id) public async Task<IActionResult> GetByIdAsync(Guid id)
@ -73,5 +73,13 @@ namespace Web.Controllers
return NoContent(); return NoContent();
} }
//Фичи
[HttpGet("search")]
public async Task<IActionResult> SearchStreet([FromQuery] string query)
{
var streets = await _streetService.SearchAsync(query);
return Ok(streets);
}
} }
} }