-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Spectre.Console.Cli;
using Console.Features.Data.Api;
using Console.Features.Domain.Entities;
using Console.Mediation;
using Console.Mediation.Queries;
namespace Domain.Queries;
public static class Search
{
public record Query(Func<FilterBuilder, SearchFilter> Builder) : IQuery<Result>;
public record Result(string OriginalQuery, IEnumerable<SearchResult> SearchResults);
public class Handler : QueryHandlerBase<Query, Result>
{
/// <inheritdoc/>
protected override Task<Result> Handle(Query query, CancellationToken cancellationToken = default)
{
var filter = query.Builder.Invoke(FilterBuilder.Create());
return Task.FromResult(new Result(string.Empty, []));
}
}
public class FilterBuilder
{
private FilterBuilder()
{
}
public static implicit operator SearchFilter(FilterBuilder builder) => builder.Build();
public static FilterBuilder Create() => new FilterBuilder();
}
}Currently produces
internal sealed partial class QueryFixture : AutoFixtureBase<QueryFixture>
{
public static implicit operator Search.Query(QueryFixture fixture) => fixture.Build();
public QueryFixture WithBuilder(System.Func<Console.Features.Domain.Queries.Search+FilterBuilder,Console.Features.Domain.Entities.SearchFilter> Builder) => With(ref _Builder, Builder);
public QueryFixture WithOriginal(Console.Features.Domain.Queries.Search+Query original) => With(ref _original, original);
private Search.Query Build() => new Search.Query(_Builder, _original);
private System.Func<Console.Features.Domain.Queries.Search+FilterBuilder,Console.Features.Domain.Entities.SearchFilter> _Builder = default;
private Console.Features.Domain.Queries.Search+Query _original = default;
}Metadata
Metadata
Assignees
Labels
No labels