using AutoMapper; using MediatR; using mws.backend.dotnet.application.Common; namespace mws.backend.dotnet.application.Tasks; public record SearchTasksQuery(Guid UserId, string Term) : IRequest>; public class SearchTasksHandler(IUnitOfWork uow, IMapper mapper) : IRequestHandler> { public async Task> Handle(SearchTasksQuery query, CancellationToken ct) { var projectIds = await uow.Projects.GetProjectIdsForUserAsync(query.UserId, ct); var tasks = await uow.Tasks.SearchWithAssigneeAsync(projectIds, query.Term, 20, ct); return mapper.Map>(tasks); } }