Browse Source

Add ability to sort on Genre, MusicGenre, Artist

crobibero 4 years ago
parent
commit
d27ca993a5

+ 3 - 1
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -5469,7 +5469,9 @@ AND Type = @InternalPersonType)");
 
             commandText += whereText + " group by PresentationUniqueKey";
 
-            if (query.SimilarTo != null || !string.IsNullOrEmpty(query.SearchTerm))
+            if (query.OrderBy.Count != 0
+                || query.SimilarTo != null
+                || !string.IsNullOrEmpty(query.SearchTerm))
             {
                 commandText += GetOrderByText(query);
             }

+ 6 - 1
Jellyfin.Api/Controllers/ArtistsController.cs

@@ -77,6 +77,8 @@ namespace Jellyfin.Api.Controllers
         /// <param name="nameStartsWithOrGreater">Optional filter by items whose name is sorted equally or greater than a given input string.</param>
         /// <param name="nameStartsWith">Optional filter by items whose name is sorted equally than a given input string.</param>
         /// <param name="nameLessThan">Optional filter by items whose name is equally or lesser than a given input string.</param>
+        /// <param name="sortBy">Optional. Specify one or more sort orders, comma delimited.</param>
+        /// <param name="sortOrder">Sort Order - Ascending,Descending.</param>
         /// <param name="enableImages">Optional, include image information in output.</param>
         /// <param name="enableTotalRecordCount">Total record count.</param>
         /// <response code="200">Artists returned.</response>
@@ -112,6 +114,8 @@ namespace Jellyfin.Api.Controllers
             [FromQuery] string? nameStartsWithOrGreater,
             [FromQuery] string? nameStartsWith,
             [FromQuery] string? nameLessThan,
+            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] sortBy,
+            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] SortOrder[] sortOrder,
             [FromQuery] bool? enableImages = true,
             [FromQuery] bool enableTotalRecordCount = true)
         {
@@ -150,7 +154,8 @@ namespace Jellyfin.Api.Controllers
                 MinCommunityRating = minCommunityRating,
                 DtoOptions = dtoOptions,
                 SearchTerm = searchTerm,
-                EnableTotalRecordCount = enableTotalRecordCount
+                EnableTotalRecordCount = enableTotalRecordCount,
+                OrderBy = RequestHelpers.GetOrderBy(sortBy, sortOrder)
             };
 
             if (parentId.HasValue)

+ 7 - 1
Jellyfin.Api/Controllers/GenresController.cs

@@ -63,12 +63,15 @@ namespace Jellyfin.Api.Controllers
         /// <param name="nameStartsWithOrGreater">Optional filter by items whose name is sorted equally or greater than a given input string.</param>
         /// <param name="nameStartsWith">Optional filter by items whose name is sorted equally than a given input string.</param>
         /// <param name="nameLessThan">Optional filter by items whose name is equally or lesser than a given input string.</param>
+        /// <param name="sortBy">Optional. Specify one or more sort orders, comma delimited.</param>
+        /// <param name="sortOrder">Sort Order - Ascending,Descending.</param>
         /// <param name="enableImages">Optional, include image information in output.</param>
         /// <param name="enableTotalRecordCount">Optional. Include total record count.</param>
         /// <response code="200">Genres returned.</response>
         /// <returns>An <see cref="OkResult"/> containing the queryresult of genres.</returns>
         [HttpGet]
         [ProducesResponseType(StatusCodes.Status200OK)]
+        [AllowAnonymous]
         public ActionResult<QueryResult<BaseItemDto>> GetGenres(
             [FromQuery] int? startIndex,
             [FromQuery] int? limit,
@@ -84,6 +87,8 @@ namespace Jellyfin.Api.Controllers
             [FromQuery] string? nameStartsWithOrGreater,
             [FromQuery] string? nameStartsWith,
             [FromQuery] string? nameLessThan,
+            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] sortBy,
+            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] SortOrder[] sortOrder,
             [FromQuery] bool? enableImages = true,
             [FromQuery] bool enableTotalRecordCount = true)
         {
@@ -107,7 +112,8 @@ namespace Jellyfin.Api.Controllers
                 NameStartsWithOrGreater = nameStartsWithOrGreater,
                 DtoOptions = dtoOptions,
                 SearchTerm = searchTerm,
-                EnableTotalRecordCount = enableTotalRecordCount
+                EnableTotalRecordCount = enableTotalRecordCount,
+                OrderBy = RequestHelpers.GetOrderBy(sortBy, sortOrder)
             };
 
             if (parentId.HasValue)

+ 6 - 1
Jellyfin.Api/Controllers/MusicGenresController.cs

@@ -63,6 +63,8 @@ namespace Jellyfin.Api.Controllers
         /// <param name="nameStartsWithOrGreater">Optional filter by items whose name is sorted equally or greater than a given input string.</param>
         /// <param name="nameStartsWith">Optional filter by items whose name is sorted equally than a given input string.</param>
         /// <param name="nameLessThan">Optional filter by items whose name is equally or lesser than a given input string.</param>
+        /// <param name="sortBy">Optional. Specify one or more sort orders, comma delimited.</param>
+        /// <param name="sortOrder">Sort Order - Ascending,Descending.</param>
         /// <param name="enableImages">Optional, include image information in output.</param>
         /// <param name="enableTotalRecordCount">Optional. Include total record count.</param>
         /// <response code="200">Music genres returned.</response>
@@ -84,6 +86,8 @@ namespace Jellyfin.Api.Controllers
             [FromQuery] string? nameStartsWithOrGreater,
             [FromQuery] string? nameStartsWith,
             [FromQuery] string? nameLessThan,
+            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] string[] sortBy,
+            [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] SortOrder[] sortOrder,
             [FromQuery] bool? enableImages = true,
             [FromQuery] bool enableTotalRecordCount = true)
         {
@@ -107,7 +111,8 @@ namespace Jellyfin.Api.Controllers
                 NameStartsWithOrGreater = nameStartsWithOrGreater,
                 DtoOptions = dtoOptions,
                 SearchTerm = searchTerm,
-                EnableTotalRecordCount = enableTotalRecordCount
+                EnableTotalRecordCount = enableTotalRecordCount,
+                OrderBy = RequestHelpers.GetOrderBy(sortBy, sortOrder)
             };
 
             if (parentId.HasValue)