using Journal.Core.Dtos;

namespace Journal.Core.Services.Ai;

public sealed class DisabledAiService(string provider, string message = "AI provider disabled.", bool healthy = true) : IAiService
{
    private readonly string _provider = string.IsNullOrWhiteSpace(provider) ? "none" : provider.Trim();
    private readonly string _message = string.IsNullOrWhiteSpace(message) ? "AI provider disabled." : message.Trim();
    private readonly bool _healthy = healthy;

    public Task<AiHealthDto> HealthAsync(CancellationToken cancellationToken = default) =>
        Task.FromResult(new AiHealthDto(_provider, Enabled: false, Healthy: _healthy, Message: _message));

    public Task<string> SummarizeEntryAsync(string content, string? fileStem = null, CancellationToken cancellationToken = default) =>
        Task.FromResult(_message);

    public Task<string> SummarizeAllAsync(IReadOnlyList<string> entries, CancellationToken cancellationToken = default) =>
        Task.FromResult(_message);

    public Task<string> ChatAsync(string prompt, CancellationToken cancellationToken = default) =>
        Task.FromResult(_message);

    public Task<string> ChatWithHistoryAsync(IReadOnlyList<(string Role, string Text)> history, string prompt, CancellationToken cancellationToken = default) =>
        Task.FromResult(_message);

    public Task<IReadOnlyList<double>> EmbedAsync(string content, CancellationToken cancellationToken = default) =>
        Task.FromResult<IReadOnlyList<double>>([]);
}
