allow search in multiple fields
This commit is contained in:
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user