Added API project.
This commit is contained in:
@@ -2,10 +2,10 @@
|
||||
|
||||
public enum Language
|
||||
{
|
||||
Unknown,
|
||||
Japanese,
|
||||
English,
|
||||
ChineseSimplified,
|
||||
ChineseTraditional,
|
||||
Korean
|
||||
Unknown = -1,
|
||||
Japanese = 0,
|
||||
English = 1,
|
||||
ChineseSimplified = 2,
|
||||
ChineseTraditional = 3,
|
||||
Korean = 4
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
using JSMR.Application.Tags.Commands.SetEnglishName;
|
||||
using JSMR.Application.Circles.Queries.Search;
|
||||
using JSMR.Application.Creators.Queries.Search;
|
||||
using JSMR.Application.Tags.Commands.SetEnglishName;
|
||||
using JSMR.Application.Tags.Commands.UpdateTagStatus;
|
||||
using JSMR.Application.Tags.Queries.Search;
|
||||
using JSMR.Application.VoiceWorks.Queries.Search;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace JSMR.Application.DI;
|
||||
@@ -9,12 +13,17 @@ public static class ApplicationServiceCollectionExtensions
|
||||
public static IServiceCollection AddApplication(this IServiceCollection services)
|
||||
{
|
||||
// Handlers / Use-cases
|
||||
//services.AddScoped<SearchVoiceWorksHandler>();
|
||||
services.AddScoped<SearchCirclesHandler>();
|
||||
|
||||
services.AddScoped<SearchVoiceWorksHandler>();
|
||||
//services.AddScoped<ScanVoiceWorksHandler>();
|
||||
|
||||
services.AddScoped<SearchTagsHandler>();
|
||||
services.AddScoped<SetTagEnglishNameHandler>();
|
||||
services.AddScoped<UpdateTagStatusHandler>();
|
||||
|
||||
services.AddScoped<SearchCreatorsHandler>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
@@ -5,27 +5,27 @@ using JSMR.Application.Tags.Queries.Search.Ports;
|
||||
|
||||
namespace JSMR.Application.Tags.Queries.Search;
|
||||
|
||||
public sealed class SearchTagsHandler(ITagSearchProvider searchProvider, ICache cache)
|
||||
public sealed class SearchTagsHandler(ITagSearchProvider searchProvider)
|
||||
{
|
||||
public async Task<SearchTagsResponse> HandleAsync(SearchTagsRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
SearchOptions<TagSearchCriteria, TagSortField> searchOptions = request.Options;
|
||||
|
||||
string cacheKey = $"tag:{searchOptions.GetHashCode()}";
|
||||
//string cacheKey = $"tag:{searchOptions.GetHashCode()}";
|
||||
|
||||
TagSearchResults? cachedResults = await cache.GetAsync<TagSearchResults>(cacheKey, cancellationToken);
|
||||
//TagSearchResults? cachedResults = await cache.GetAsync<TagSearchResults>(cacheKey, cancellationToken);
|
||||
|
||||
if (cachedResults != null)
|
||||
return new SearchTagsResponse(cachedResults);
|
||||
//if (cachedResults != null)
|
||||
// return new SearchTagsResponse(cachedResults);
|
||||
|
||||
SearchResult<TagSearchItem> results = await searchProvider.SearchAsync(searchOptions, cancellationToken);
|
||||
|
||||
CacheEntryOptions cacheEntryOptions = new()
|
||||
{
|
||||
SlidingExpiration = TimeSpan.FromMinutes(10)
|
||||
};
|
||||
//CacheEntryOptions cacheEntryOptions = new()
|
||||
//{
|
||||
// SlidingExpiration = TimeSpan.FromMinutes(10)
|
||||
//};
|
||||
|
||||
await cache.SetAsync(cacheKey, results, cacheEntryOptions, cancellationToken);
|
||||
//await cache.SetAsync(cacheKey, results, cacheEntryOptions, cancellationToken);
|
||||
|
||||
return new SearchTagsResponse(results);
|
||||
}
|
||||
|
||||
@@ -3,28 +3,29 @@ using JSMR.Application.VoiceWorks.Ports;
|
||||
|
||||
namespace JSMR.Application.VoiceWorks.Queries.Search;
|
||||
|
||||
//public sealed class SearchVoiceWorksHandler(IVoiceWorkReader reader, ICache cache)
|
||||
//{
|
||||
// //public async Task<SearchVoiceWorksResponse> HandleAsync(SearchVoiceWorksRequest request, CancellationToken cancellationToken)
|
||||
// //{
|
||||
// // VoiceWorkSearchOptions searchOptions = request.Options;
|
||||
// TODO: Caching?
|
||||
public sealed class SearchVoiceWorksHandler(IVoiceWorkSearchProvider provider)
|
||||
{
|
||||
public async Task<SearchVoiceWorksResponse> HandleAsync(SearchVoiceWorksRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
var searchOptions = request.Options;
|
||||
|
||||
// // string cacheKey = $"vw:{searchOptions.GetHashCode()}";
|
||||
//string cacheKey = $"vw:{searchOptions.GetHashCode()}";
|
||||
|
||||
// // VoiceWorkSearchResults? cachedResults = await cache.GetAsync<VoiceWorkSearchResults>(cacheKey, cancellationToken);
|
||||
//VoiceWorkSearchResults? cachedResults = await cache.GetAsync<VoiceWorkSearchResults>(cacheKey, cancellationToken);
|
||||
|
||||
// // if (cachedResults != null)
|
||||
// // return new SearchVoiceWorksResponse(cachedResults);
|
||||
//if (cachedResults != null)
|
||||
// return new SearchVoiceWorksResponse(cachedResults);
|
||||
|
||||
// // VoiceWorkSearchResults results = await reader.SearchAsync(searchOptions, cancellationToken);
|
||||
var results = await provider.SearchAsync(searchOptions, cancellationToken);
|
||||
|
||||
// // CacheEntryOptions cacheEntryOptions = new()
|
||||
// // {
|
||||
// // SlidingExpiration = TimeSpan.FromMinutes(10)
|
||||
// // };
|
||||
//CacheEntryOptions cacheEntryOptions = new()
|
||||
//{
|
||||
// SlidingExpiration = TimeSpan.FromMinutes(10)
|
||||
//};
|
||||
|
||||
// // await cache.SetAsync(cacheKey, results, cacheEntryOptions, cancellationToken);
|
||||
//await cache.SetAsync(cacheKey, results, cacheEntryOptions, cancellationToken);
|
||||
|
||||
// // return new SearchVoiceWorksResponse(results);
|
||||
// //}
|
||||
//}
|
||||
return new SearchVoiceWorksResponse(results);
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
namespace JSMR.Application.VoiceWorks.Queries.Search;
|
||||
using JSMR.Application.Common.Search;
|
||||
|
||||
public sealed record SearchVoiceWorksResponse(VoiceWorkSearchResults Results);
|
||||
namespace JSMR.Application.VoiceWorks.Queries.Search;
|
||||
|
||||
public sealed record SearchVoiceWorksResponse(SearchResult<VoiceWorkSearchResult> Results);
|
||||
Reference in New Issue
Block a user