Added logging.

This commit is contained in:
2025-10-20 23:32:38 -04:00
parent e0e8945728
commit 3a115bc7b8
18 changed files with 381 additions and 64 deletions

View File

@@ -1,30 +1,31 @@
using JSMR.Application.Common.Caching;
using JSMR.Application.VoiceWorks.Ports;
using JSMR.Application.Common.Search;
using JSMR.Application.Logging;
using Microsoft.Extensions.Logging;
using System.Diagnostics;
namespace JSMR.Application.VoiceWorks.Queries.Search;
// TODO: Caching?
public sealed class SearchVoiceWorksHandler(IVoiceWorkSearchProvider provider)
public sealed class SearchVoiceWorksHandler(IVoiceWorkSearchProvider provider, ILogger<SearchVoiceWorksHandler> logger)
{
public async Task<SearchVoiceWorksResponse> HandleAsync(SearchVoiceWorksRequest request, CancellationToken cancellationToken)
{
var searchOptions = request.Options;
//string cacheKey = $"vw:{searchOptions.GetHashCode()}";
Stopwatch stopWatch = Stopwatch.StartNew();
SearchResult<VoiceWorkSearchResult> results = await provider.SearchAsync(searchOptions, cancellationToken);
long elapsedMilliseconds = stopWatch.ElapsedMilliseconds;
//VoiceWorkSearchResults? cachedResults = await cache.GetAsync<VoiceWorkSearchResults>(cacheKey, cancellationToken);
//if (cachedResults != null)
// return new SearchVoiceWorksResponse(cachedResults);
var results = await provider.SearchAsync(searchOptions, cancellationToken);
//CacheEntryOptions cacheEntryOptions = new()
//{
// SlidingExpiration = TimeSpan.FromMinutes(10)
//};
//await cache.SetAsync(cacheKey, results, cacheEntryOptions, cancellationToken);
LogEvents.SearchCompleted(
logger,
Elapsed: elapsedMilliseconds,
Items: results.Items.Length,
Total: results.TotalItems,
Page: searchOptions.PageNumber,
Size: searchOptions.PageSize,
Sort: searchOptions.SortOptions.ToLogObject(),
Criteria: searchOptions.Criteria.ToLogObject()
);
return new SearchVoiceWorksResponse(results);
}

View File

@@ -16,8 +16,8 @@ public class VoiceWorkSearchCriteria
public int[] CreatorIds { get; init; } = [];
public bool IncludeAllCreators { get; init; }
public Locale Locale { get; init; } = Locale.Japanese;
public DateTime? ReleaseDateStart { get; init; }
public DateTime? ReleaseDateEnd { get; init; }
public DateOnly? ReleaseDateStart { get; init; }
public DateOnly? ReleaseDateEnd { get; init; }
public AgeRating[] AgeRatings { get; init; } = [];
public Language[] SupportedLanguages { get; init; } = [];
public AIGeneration[] AIGenerationOptions { get; init; } = [];