using Volo.Abp.Domain.Services;
using Volo.Abp.Users;
using Yi.Framework.AiHub.Application.Contracts.Dtos;
using Yi.Framework.AiHub.Domain.Entities;
using Yi.Framework.AiHub.Domain.Entities.Chat;
using Yi.Framework.SqlSugarCore.Abstractions;

namespace Yi.Framework.AiHub.Domain.Managers;

public class AiMessageManager : DomainService
{
    private readonly ISqlSugarRepository<MessageAggregateRoot> _repository;

    public AiMessageManager(ISqlSugarRepository<MessageAggregateRoot> repository)
    {
        _repository = repository;
    }

    /// <summary>
    /// 创建系统消息
    /// </summary>
    /// <param name="sessionId"></param>
    /// <param name="userId"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task CreateSystemMessageAsync(Guid userId, Guid? sessionId, MessageInputDto input)
    {
        input.Role = "system";
        var message = new MessageAggregateRoot(userId, sessionId, input.Content, input.Role, input.ModelId,input.TokenUsage);
        await _repository.InsertAsync(message);
    }
    
    /// <summary>
    /// 创建系统消息
    /// </summary>
    /// <param name="sessionId"></param>
    /// <param name="userId"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    public async Task CreateUserMessageAsync(Guid userId, Guid? sessionId, MessageInputDto input)
    {
        input.Role = "user";
        var message = new MessageAggregateRoot(userId, sessionId, input.Content, input.Role, input.ModelId,input.TokenUsage);
        await _repository.InsertAsync(message);
    }
}