allow search in multiple fields

This commit is contained in:
2020-05-04 14:26:43 +02:00
parent 8602f32310
commit 2386aa34cb
3 changed files with 16 additions and 1 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ namespace zero.Core.Api
/// <inheritdoc />
public async Task<ListResult<Translation>> GetByQuery(string languageId, ListQuery<Translation> query)
{
query.SearchSelector = entity => entity.Key;
query.SearchFor(entity => entity.Key, entity => entity.Value);
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
{
+8
View File
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace zero.Core.Entities
@@ -15,6 +16,8 @@ namespace zero.Core.Entities
public Expression<Func<T, object>> SearchSelector { get; set; } = null;
public Expression<Func<T, object>>[] SearchSelectors { get; private set; } = new Expression<Func<T, object>>[0] { };
public string OrderBy { get; set; } = "createdDate";
public ListQueryOrderType OrderType { get; set; } = ListQueryOrderType.String;
@@ -26,6 +29,11 @@ namespace zero.Core.Entities
public int PageSize { get; set; } = 30;
public TFilter Filter { get; set; }
public void SearchFor(params Expression<Func<T, object>>[] selectors)
{
SearchSelectors = selectors;
}
}
@@ -44,6 +44,13 @@ namespace zero.Core.Extensions
{
rawQuery = rawQuery.SearchIf(query.SearchSelector, query.Search, "*", "*");
}
if (!query.Search.IsNullOrEmpty() && query.SearchSelectors.Length > 0)
{
foreach (var selector in query.SearchSelectors)
{
rawQuery = rawQuery.SearchIf(selector, query.Search, "*", "*", Raven.Client.Documents.Queries.SearchOperator.Or);
}
}
if (!query.OrderBy.IsNullOrEmpty())
{