Added API project.

This commit is contained in:
2025-09-02 23:44:31 -04:00
parent cb15940d34
commit 429252e61f
23 changed files with 474 additions and 49 deletions

View File

@@ -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
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);