using Microsoft.EntityFrameworkCore;
using OpenHarbor.CQRS.DynamicQuery.Abstractions;
namespace Codex.Dal.QueryProviders;
///
/// Queryable provider for listing conversations with filtering, sorting, and pagination
///
public class ListConversationsQueryableProvider(CodexDbContext dbContext)
: IQueryableProviderOverride
{
public Task> GetQueryableAsync(
object query,
CancellationToken cancellationToken = default)
{
var result = dbContext.Conversations
.AsNoTracking()
.Select(c => new ListConversationsQueryItem
{
Id = c.Id,
Title = c.Title,
Summary = c.Summary,
IsActive = c.IsActive,
CreatedAt = c.StartedAt,
LastMessageAt = c.LastMessageAt,
MessageCount = c.Messages.Count,
ExecutionCount = c.Executions.Count
});
return Task.FromResult(result);
}
}