public async Task <IEnumerable <TAbility> > Search <TAbility>(SearchAbilitiesQuery query, string userId, CancellationToken cancellationToken) where TAbility : BaseAbility { var abilities = _context.Abilities.Where(a => a.GetType() == typeof(TAbility)); var response = abilities.OfType <TAbility>() .Where(s => s.UserId == null || s.UserId == userId); if (!string.IsNullOrWhiteSpace(query.Name)) { response = response.Where(s => s.Name.Contains(query.Name)); } return(await response.ToListAsync(cancellationToken)); }
public async Task <IActionResult> SearchAbilities([FromQuery] SearchAbilitiesQuery request) { return(Ok(await _mediator.Send(request))); }