using Autofac;
using HoneyBox.Core.Interfaces;
using HoneyBox.Infrastructure.Cache;
using HoneyBox.Infrastructure.External.Poster;
using HoneyBox.Infrastructure.External.Storage;

namespace HoneyBox.Infrastructure.Modules;

/// <summary>
/// 基础设施注册模块 - 用于注册基础设施服务
/// </summary>
public class InfrastructureModule : Module
{
    protected override void Load(ContainerBuilder builder)
    {
        // 注册缓存服务
        builder.RegisterType<RedisCacheService>()
            .As<ICacheService>()
            .SingleInstance();

        // 注册Redis服务
        builder.RegisterType<RedisService>()
            .As<IRedisService>()
            .SingleInstance();

        // 注册图片上传服务
        builder.RegisterType<CosImageUploadService>()
            .As<IImageUploadService>()
            .InstancePerLifetimeScope();

        // 注册海报生成服务
        builder.RegisterType<PosterService>()
            .As<IPosterService>()
            .InstancePerLifetimeScope();

        // 后续可在此注册其他基础设施服务
        // 如: 外部服务客户端、消息队列等
    }
}
