Files
gos/src/Gos.Infrastructure/Search/QueryBuilders/BaseQueryBuilder.cs
T
2022-07-06 21:35:05 +02:00

118 lines
3.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Gos.Core.Extensions;
using Gos.Core.Search.Queries;
using Nest;
namespace Gos.Infrastructure.Search.QueryBuilders
{
public abstract class BaseQueryBuilder
{
protected static List<QueryContainer> GetFilterQueries(Query query)
{
var queries = new List<QueryContainer>();
if (!query.DiscourseTypeIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "discourseTypeId",
Terms = query.DiscourseTypeIds.Cast<object>(),
});
}
if (!query.DiscourseChannelIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "discourseChannelId",
Terms = query.DiscourseChannelIds.Cast<object>(),
});
}
if (!query.DiscourseEventIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "discourseEventId",
Terms = query.DiscourseEventIds.Cast<object>(),
});
}
if (!query.DiscourseRegionIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "discourseRegionId",
Terms = query.DiscourseRegionIds.Cast<object>(),
});
}
if (!query.DiscourseYears.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "discourseYear",
Terms = query.DiscourseYears.Cast<object>(),
});
}
if (!query.SpeakerAgeIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "speakerAgeId",
Terms = query.SpeakerAgeIds.Cast<object>(),
});
}
if (!query.SpeakerEducationIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "speakerEducationId",
Terms = query.SpeakerEducationIds.Cast<object>(),
});
}
if (!query.SpeakerLanguageIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "speakerLanguageId",
Terms = query.SpeakerLanguageIds.Cast<object>(),
});
}
if (!query.SpeakerRegionIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "speakerRegionId",
Terms = query.SpeakerRegionIds.Cast<object>(),
});
}
if (!query.SpeakerSexIds.IsNullOrEmpty())
{
queries.Add(
new TermsQuery()
{
Field = "speakerSexId",
Terms = query.SpeakerSexIds.Cast<object>(),
});
}
return queries;
}
}
}