using JSMR.Application.Circles.Queries.Search;
using JSMR.Application.Creators.Commands.UpdateCreatorStatus;
using JSMR.Application.Creators.Queries.Search;
using JSMR.Application.Scanning;
using JSMR.Application.Tags.Commands.SetEnglishName;
using JSMR.Application.Tags.Commands.UpdateTagStatus;
using JSMR.Application.Tags.Queries.Search;
using JSMR.Application.VoiceWorks.Commands.Delete;
using JSMR.Application.VoiceWorks.Commands.SetFavorite;
using JSMR.Application.VoiceWorks.Queries.Search;
using Microsoft.Extensions.DependencyInjection;

namespace JSMR.Application.DI;

public static class ApplicationServiceCollectionExtensions
{
    public static IServiceCollection AddApplication(this IServiceCollection services)
    {
        // Handlers / Use-cases
        services.AddScoped<SearchCirclesHandler>();

        services.AddScoped<SearchVoiceWorksHandler>();
        services.AddScoped<SetVoiceWorkFavoriteHandler>();
        services.AddScoped<DeleteVoiceWorkHandler>();

        services.AddScoped<ScanVoiceWorksHandler>();

        services.AddScoped<SearchTagsHandler>();
        services.AddScoped<SetTagEnglishNameHandler>();
        services.AddScoped<UpdateTagStatusHandler>();

        services.AddScoped<SearchCreatorsHandler>();
        services.AddScoped<UpdateCreatorStatusHandler>();

        return services;
    }
}