using System;
using System.Collections.Generic;
using FluentResults;
using MediatR;

namespace NexusReader.Application.Queries.Recommendations;

/// <summary>
/// MediatR query to fetch contextual recommendations based on the user's active reading state.
/// </summary>
public record GetContextualRecommendationsQuery(string UserId) 
    : IRequest<Result<ContextualRecommendationResponse>>;

/// <summary>
/// Response DTO containing contextual recommendations.
/// </summary>
public record ContextualRecommendationResponse(List<RecommendationDto> Recommendations);

/// <summary>
/// Individual contextual recommendation details.
/// </summary>
public record RecommendationDto(
    string BookTitle,
    string ChapterTitle,
    int MatchPercentage,
    bool IsPremiumUpsell,
    Guid TargetBookId
);
