using JSMR.Application.Common.Caching; using JSMR.Application.VoiceWorks.Ports; namespace JSMR.Application.VoiceWorks.Queries.Search; // TODO: Caching? public sealed class SearchVoiceWorksHandler(IVoiceWorkSearchProvider provider) { public async Task HandleAsync(SearchVoiceWorksRequest request, CancellationToken cancellationToken) { var searchOptions = request.Options; //string cacheKey = $"vw:{searchOptions.GetHashCode()}"; //VoiceWorkSearchResults? cachedResults = await cache.GetAsync(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); return new SearchVoiceWorksResponse(results); } }