|
2 | 2 | // Elasticsearch B.V licenses this file to you under the Apache 2.0 License. |
3 | 3 | // See the LICENSE file in the project root for more information |
4 | 4 |
|
| 5 | +using Microsoft.Extensions.Logging; |
| 6 | + |
5 | 7 | namespace Elastic.Documentation.Api.Core.Search; |
6 | 8 |
|
7 | | -public class SearchUsecase(ISearchGateway searchGateway) |
| 9 | +public partial class SearchUsecase(ISearchGateway searchGateway, ILogger<SearchUsecase> logger) |
8 | 10 | { |
9 | 11 | public async Task<SearchResponse> Search(SearchRequest request, Cancel ctx = default) |
10 | 12 | { |
11 | | - |
12 | | - // var validationResult = validator.Validate(request); |
13 | | - // if (!validationResult.IsValid) |
14 | | - // throw new ArgumentException(validationResult.Message); |
15 | | - |
16 | 13 | var (totalHits, results) = await searchGateway.SearchAsync( |
17 | 14 | request.Query, |
18 | 15 | request.PageNumber, |
19 | 16 | request.PageSize, |
20 | 17 | ctx |
21 | 18 | ); |
22 | 19 |
|
23 | | - |
24 | | - return new SearchResponse |
| 20 | + var response = new SearchResponse |
25 | 21 | { |
26 | 22 | Results = results, |
27 | 23 | TotalResults = totalHits, |
28 | 24 | PageNumber = request.PageNumber, |
29 | 25 | PageSize = request.PageSize, |
30 | 26 | }; |
| 27 | + |
| 28 | + LogSearchResults( |
| 29 | + logger, |
| 30 | + response.PageSize, |
| 31 | + response.PageNumber, |
| 32 | + request.Query, |
| 33 | + new SearchResultsLogProperties(results.Select(i => i.Url).ToArray()) |
| 34 | + ); |
| 35 | + |
| 36 | + return response; |
31 | 37 | } |
| 38 | + |
| 39 | + [LoggerMessage(Level = LogLevel.Information, Message = "Search completed with {PageSize} (page {PageNumber}) results for query '{SearchQuery}'")] |
| 40 | + private static partial void LogSearchResults(ILogger logger, int pageSize, int pageNumber, string searchQuery, [LogProperties] SearchResultsLogProperties result); |
| 41 | + |
| 42 | + private sealed record SearchResultsLogProperties(string[] Urls); |
32 | 43 | } |
33 | 44 |
|
34 | 45 | public record SearchRequest |
|
0 commit comments