diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingCallQueryGenerator.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingCallQueryGenerator.cs index acb043c..d60392a 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingCallQueryGenerator.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingCallQueryGenerator.cs @@ -131,4 +131,11 @@ private static IEnumerable, QueryCont return filters; } + + protected override Func, IPromise>> GenerateSortForSearch(FundingCallSearchParameters parameters) + { + // Sort funding calls + return sortDescriptor => sortDescriptor + .Field(f => f.CallProgrammeDueDate, SortOrder.Ascending); + } } \ No newline at end of file diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingDecisionQueryGenerator.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingDecisionQueryGenerator.cs index 78090cb..344870f 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingDecisionQueryGenerator.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/FundingDecisionQueryGenerator.cs @@ -174,4 +174,11 @@ private static IEnumerable, Query return filters; } + + protected override Func, IPromise>> GenerateSortForSearch(FundingDecisionSearchParameters parameters) + { + // Sort funding decisions + return sortDescriptor => sortDescriptor + .Field(f => f.FundingStartDate, SortOrder.Descending); + } } \ No newline at end of file diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/InfrastructureQueryGenerator.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/InfrastructureQueryGenerator.cs index 8e88034..595ce12 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/InfrastructureQueryGenerator.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/InfrastructureQueryGenerator.cs @@ -38,4 +38,10 @@ protected override Func, QueryContainer { throw new NotImplementedException(); } + + protected override Func, IPromise>> GenerateSortForSearch(InfrastructureSearchParameters parameters) + { + // Sort infrastructures + return sortDescriptor => sortDescriptor; + } } \ No newline at end of file diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/OrganizationQueryGenerator.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/OrganizationQueryGenerator.cs index 959f9b8..e81c741 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/OrganizationQueryGenerator.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/OrganizationQueryGenerator.cs @@ -38,4 +38,10 @@ protected override Func, QueryContainer> { throw new NotImplementedException(); } + + protected override Func, IPromise>> GenerateSortForSearch(OrganizationSearchParameters parameters) + { + // Sort organizations + return sortDescriptor => sortDescriptor; + } } \ No newline at end of file diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/PublicationQueryGenerator.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/PublicationQueryGenerator.cs index be9516b..62f3537 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/PublicationQueryGenerator.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/PublicationQueryGenerator.cs @@ -288,4 +288,11 @@ protected override Func, QueryContainer> G { return queryContainerDescriptor => queryContainerDescriptor.Term(query => query.Field(f => f.Id).Value(id)); } + + protected override Func, IPromise>> GenerateSortForSearch(PublicationSearchParameters parameters) + { + // Sort publications + return sortDescriptor => sortDescriptor + .Field(f => f.PublicationYear, SortOrder.Descending); + } } \ No newline at end of file diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/QueryGeneratorBase.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/QueryGeneratorBase.cs index 2d3fb57..8afc1a8 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/QueryGeneratorBase.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/QueryGeneratorBase.cs @@ -18,6 +18,7 @@ public Func, ISearchRequest> GenerateQuery(TIn searchPara .Index(indexName) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) + .Sort(GenerateSortForSearch(searchParameters)) .Query(GenerateQueryForSearch(searchParameters)); } @@ -30,6 +31,8 @@ public Func, ISearchRequest> GenerateSingleQuery(string i } protected abstract Func, QueryContainer> GenerateQueryForSearch(TIn parameters); - + protected abstract Func,QueryContainer> GenerateQueryForSingle(string id); + + protected abstract Func, IPromise>> GenerateSortForSearch(TIn parameters); } \ No newline at end of file diff --git a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/ResearchDatasetQueryGenerator.cs b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/ResearchDatasetQueryGenerator.cs index 6fb8767..1329002 100644 --- a/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/ResearchDatasetQueryGenerator.cs +++ b/aspnetcore/src/ElasticService/ElasticSearchQueryGenerators/ResearchDatasetQueryGenerator.cs @@ -202,4 +202,11 @@ private static IEnumerable, Query return filters; } + + protected override Func, IPromise>> GenerateSortForSearch(ResearchDatasetSearchParameters parameters) + { + // Sort research datasets + return sortDescriptor => sortDescriptor + .Field(f => f.Created, SortOrder.Descending); + } } \ No newline at end of file